/linux/tools/memory-model/ |
H A D | linux-kernel.cat | 28 let acq-po = [Acquire] ; po ; [M] 29 let po-rel = [M] ; po ; [Release] 30 let po-unlock-lock-po = po ; [UL] ; (po|rf) ; [LKR] ; po 33 let R4rmb = R \ Noreturn (* Reads for which rmb works *) 34 let rmb = [R4rmb] ; fencerel(Rmb) ; [R4rmb] 35 let wmb = [W] ; fencerel(Wmb) ; [W] 36 let mb = ([M] ; fencerel(Mb) ; [M]) | 64 let gp = po ; [Sync-rcu | Sync-srcu] ; po? 65 let strong-fence = mb | gp 67 let nonr [all...] |
H A D | lock.cat | 33 let RL = try RL with emptyset 34 let RU = try RU with emptyset 37 let LF = LF | RL 40 let ALL-LOCKS = LKR | LKW | UL | LF | RU | Srcu-lock | Srcu-unlock | Sync-srcu 44 let lk-rmw = ([LKR] ; po-loc ; [LKW]) \ (po ; po) 45 let rmw = rmw | lk-rmw 70 let R = R | LKR | LF | RU 71 let W = W | LKW 73 let Release = Release | UL 74 let Acquire = Acquire | LKR [all …]
|
H A D | linux-kernel.bell | 44 let FailedRMW = RMW \ (domain(rmw) | range(rmw)) 45 let Acquire = ACQUIRE \ W \ FailedRMW 46 let Release = RELEASE \ R \ FailedRMW 47 let Mb = MB \ FailedRMW 48 let Noreturn = NORETURN \ W 54 let Srcu = Srcu-lock | Srcu-unlock | Sync-srcu 57 let rcu-rscs = let rec 73 let carry-srcu-data = (data ; [~ Srcu-unlock] ; rf)* 74 let src [all...] |
/linux/samples/rust/ |
H A D | rust_driver_platform.rs | 107 let dev = pdev.as_ref(); in probe() 111 if let Some(info) = info { in probe() 119 let drvdata = KBox::new(Self { pdev: pdev.into() }, GFP_KERNEL)?; in probe() 127 let fwnode = dev.fwnode().ok_or(ENOENT)?; in properties_parse() 129 if let Ok(idx) = in properties_parse() 135 let name = c_str!("compatible"); in properties_parse() 136 let prop = fwnode.property_read::<CString>(name).required_by(dev)?; in properties_parse() 139 let name = c_str!("test,bool-prop"); in properties_parse() 140 let prop = fwnode.property_read_bool(c_str!("test,bool-prop")); in properties_parse() 147 let nam in properties_parse() [all...] |
/linux/rust/kernel/ |
H A D | maple_tree.rs | 57 let first = match range.start_bound() { in to_maple_range() 63 let last = match range.end_bound() { in to_maple_range() 103 /// let tree = KBox::pin_init(MapleTree::<KBox<i32>>::new(), GFP_KERNEL)?; 105 /// let ten = KBox::new(10, GFP_KERNEL)?; 106 /// let twenty = KBox::new(20, GFP_KERNEL)?; 107 /// let the_answer = KBox::new(42, GFP_KERNEL)?; 142 /// let tree = KBox::pin_init(MapleTree::<KBox<i32>>::new(), GFP_KERNEL)?; 144 /// let ten = KBox::new(10, GFP_KERNEL)?; 145 /// let twenty = KBox::new(20, GFP_KERNEL)?; 146 /// let the_answer = KBox::new(42, GFP_KERNEL)?; [all …]
|
H A D | str.rs | 63 /// let ascii = b_str!("Hello, BStr!"); 64 /// let s = CString::try_from_fmt(fmt!("{ascii}"))?; 67 /// let non_ascii = b_str!("?"); in fmt() 68 /// let s = CString::try_from_fmt(fmt!("{non_ascii}"))?; in fmt() 95 /// let ascii = b_str!("Hello, \"BStr\"!"); 96 /// let s = CString::try_from_fmt(fmt!("{ascii:?}"))?; 99 /// let non_ascii = b_str!("?"); in fmt() 100 /// let s = CString::try_from_fmt(fmt!("{non_ascii:?}"))?; in fmt() 252 let len = unsafe { bindings::strlen(ptr) } + 1; in from_char_ptr() 254 let byte in from_char_ptr() [all...] |
H A D | rbtree.rs | 30 /// let mut tree = RBTree::new(); 46 /// let mut iter = tree.iter(); 63 /// let mut iter = tree.iter(); 75 /// let mut iter = tree.iter(); 87 /// let mut iter = tree.iter(); 105 /// let node = RBTreeNode::new(10, 100, flags::GFP_KERNEL)?; 109 /// let mut guard = tree.lock(); 121 /// let mut tree = RBTree::new(); 130 /// let mut iter = tree.iter(); 138 /// let existing = tree.remove(&30); [all …]
|
H A D | auxiliary.rs | 63 let adev = unsafe { &*adev.cast::<Device<device::CoreInternal>>() }; in probe_callback() 67 let id = unsafe { &*id.cast::<DeviceId>() }; in probe_callback() 68 let info = T::ID_TABLE.info(id.index()); in probe_callback() 71 let data = T::probe(adev, info)?; in probe_callback() 83 let adev = unsafe { &*adev.cast::<Device<device::CoreInternal>>() }; in remove_callback() 108 let name = name.to_bytes_with_nul(); in new() 109 let modname = modname.to_bytes_with_nul(); in new() 115 let mut id: bindings::auxiliary_device_id = unsafe { core::mem::zeroed() }; in new() 117 let mut i = 0; in new() 126 let mu in new() [all...] |
H A D | miscdevice.rs | 36 let mut result: bindings::miscdevice = unsafe { MaybeUninit::zeroed().assume_init() }; in into_raw() 206 let ret = unsafe { bindings::generic_file_open(inode, raw_file) }; in open() 212 let misc_ptr = unsafe { (*raw_file).private_data }; in open() 218 let misc = unsafe { &*misc_ptr.cast::<MiscDeviceRegistration<T>>() }; in open() 223 let file = unsafe { File::from_raw_file(raw_file) }; in open() 225 let ptr = match T::open(file, misc) { in open() 247 let private = unsafe { (*file).private_data }; 249 let ptr = unsafe { <T::Ptr as ForeignOwnable>::from_foreign(private) }; 269 let kiocb = unsafe { Kiocb::from_raw(kiocb) }; in mmap() 271 let io in mmap() [all...] |
H A D | bitmap.rs | 38 let data: *const [()] = core::ptr::slice_from_raw_parts(ptr.cast(), nbits); in from_raw() 63 let data: *mut [()] = core::ptr::slice_from_raw_parts_mut(ptr.cast(), nbits); in from_raw_mut() 134 /// let mut b = BitmapVec::new(16, GFP_KERNEL)?; 167 let ptr = if self.nbits <= BITS_PER_LONG { in deref() 186 let ptr = if self.nbits <= BITS_PER_LONG { in deref_mut() 244 let nbits_u32 = u32::try_from(nbits).unwrap(); in new() 246 let ptr = unsafe { bindings::bitmap_zalloc(nbits_u32, flags.as_raw()) }; in new() 247 let ptr = NonNull::new(ptr).ok_or(AllocError)?; in new() 389 /// let mut long_bitmap = BitmapVec::new(256, GFP_KERNEL)?; 393 /// let mut short_bitmap = BitmapVec::new(16, GFP_KERNEL)?; [all …]
|
H A D | xarray.rs | 32 /// let xa = KBox::pin_init(XArray::new(AllocKind::Alloc1), GFP_KERNEL)?; 34 /// let dead = KBox::new(0xdead, GFP_KERNEL)?; 35 /// let beef = KBox::new(0xbeef, GFP_KERNEL)?; 37 /// let mut guard = xa.lock(); 66 let ptr = ptr.as_ptr(); in drop() 90 let flags = match kind { in new() 106 let mut index = 0; in iter() 186 let ptr = unsafe { bindings::xa_load(self.xa.xa.get(), index) }; in load() 187 let ptr = NonNull::new(ptr.cast())?; in load() 212 let ptr = unsafe { bindings::__xa_erase(self.xa.xa.get(), index) }.cast(); in remove() [all …]
|
/linux/rust/kernel/io/ |
H A D | mem.rs | 57 /// let offset = 0; // Some offset. 62 /// let request = pdev.io_request_by_index(0).ok_or(ENODEV)?; 63 /// let iomem = request.iomap_sized::<42>(); 64 /// let iomem = KBox::pin_init(iomem, GFP_KERNEL)?; 66 /// let io = iomem.access(pdev.as_ref())?; 69 /// let data = io.read32_relaxed(offset); 115 /// let offset = 0; // Some offset. 121 /// let request = pdev.io_request_by_index(0).ok_or(ENODEV)?; 122 /// let iomem = request.iomap(); 123 /// let iomem = KBox::pin_init(iomem, GFP_KERNEL)?; [all …]
|
/linux/rust/kernel/alloc/ |
H A D | kvec.rs | 38 /// let mut v = kernel::kvec![]; 42 /// let mut v = kernel::kvec![1; 3]?; 46 /// let mut v = kernel::kvec![1, 2, 3]?; 120 /// let mut v = KVec::new(); 133 /// let mut v = VVec::new(); 146 /// let mut v = KVVec::new(); 234 /// let mut v = KVec::new(); 270 /// let mut v = KVec::new(); 305 let ptr = unsafe { self.as_mut_ptr().add(self.len) }.cast::<MaybeUninit<T>>(); in spare_capacity_mut() 317 /// let mut v = KVec::new(); [all …]
|
H A D | kbox.rs | 41 /// let b = KBox::<u64>::new(24_u64, GFP_KERNEL)?; 71 /// let _ = KBox::new(FooStruct, GFP_KERNEL)? as KBox<dyn FooTrait>; 113 /// let b = KBox::new(24_u64, GFP_KERNEL)?; 125 /// let b = VBox::new(24_u64, GFP_KERNEL)?; 137 /// let b = KVBox::new(24_u64, GFP_KERNEL)?; 194 /// let x = KBox::new(24, GFP_KERNEL)?; 195 /// let ptr = KBox::into_raw(x); 197 /// let x = unsafe { KBox::from_raw(ptr) }; 231 let raw = Self::into_raw(self); in assume_init() 257 let b = Self::new_uninit(flags)?; in new() [all …]
|
H A D | allocator.rs | 92 let size = layout.size(); in call() 93 let ptr = match ptr { in call() 112 let raw_ptr = unsafe { in call() 117 let ptr = if size == 0 { in call() 153 let layout = Kmalloc::aligned_layout(layout); in realloc() 170 /// let mut vbox = VBox::<[u8; page::PAGE_SIZE]>::new_uninit(GFP_KERNEL)?; 174 /// let ptr = unsafe { NonNull::new_unchecked(from_mut(&mut *vbox)) }; 179 /// let page = unsafe { Vmalloc::to_page(ptr.cast()) }; 193 let page = unsafe { bindings::vmalloc_to_page(ptr.as_ptr().cast()) }; in to_page() 197 let page = unsafe { NonNull::new_unchecked(page) }; in to_page() [all …]
|
/linux/scripts/ |
H A D | rustdoc_test_gen.rs | 51 let potential_components: Vec<&str> = file.strip_suffix("_rs").unwrap().split('_').collect(); in find_real_path() 62 let joined_potential_components = potential_components.join("_") + ".rs"; in find_real_path() 80 let (components_prefix, components_rest) = potential_components.split_at(i); in find_real_path() 81 let prefix = prefix.join(components_prefix.join("_")); in find_real_path() 97 let mut candidates = String::new(); in find_real_path() 110 let srctree = std::env::var("srctree").unwrap(); in main() 111 let srctree = Path::new(&srctree); in main() 113 let mut paths = fs::read_dir("rust/test/doctests/kernel") in main() 121 let mut rust_tests = String::new(); in main() 122 let mu in main() [all...] |
/linux/rust/macros/ |
H A D | vtable.rs | 8 let mut tokens: Vec<_> = ts.into_iter().collect(); in vtable() 11 let is_trait = tokens in vtable() 24 let body = match tokens.pop() { in vtable() 29 let mut body_it = body.stream().into_iter(); in vtable() 30 let mut functions = Vec::new(); in vtable() 31 let mut consts = HashSet::new(); in vtable() 32 while let Some(token) = body_it.next() { in vtable() 35 let fn_name = match body_it.next() { in vtable() 43 let const_name = match body_it.next() { in vtable() 54 let mut const_items; in vtable() [all …]
|
H A D | kunit.rs | 12 let attr = attr.to_string(); in kunit_tests() 22 let mut tokens: Vec<_> = ts.into_iter().collect(); in kunit_tests() 37 let body = match tokens.pop() { in kunit_tests() 43 let mut body_it = body.stream().into_iter(); in kunit_tests() 44 let mut tests = Vec::new(); in kunit_tests() 45 let mut attributes: HashMap<String, TokenStream> = HashMap::new(); in kunit_tests() 46 while let Some(token) = body_it.next() { in kunit_tests() 50 if let Some(TokenTree::Ident(name)) = g.stream().into_iter().next() { in kunit_tests() 63 if let Some(TokenTree::Ident(test_name)) = body_it.next() { in kunit_tests() 74 let config_kuni in kunit_tests() [all...] |
H A D | paste.rs | 6 let mut tokens = tokens.iter(); in concat_helper() 7 let mut segments = Vec::new(); in concat_helper() 8 let mut span = None; in concat_helper() 14 let mut value = lit.to_string(); in concat_helper() 22 let mut value = ident.to_string(); in concat_helper() 29 let Some(TokenTree::Ident(ident)) = tokens.next() else { in concat_helper() 33 let (mut value, sp) = segments.pop().expect("expected identifier before modifier"); in concat_helper() 50 let tokens = group.stream().into_iter().collect::<Vec<TokenTree>>(); in concat_helper() 61 let segments = concat_helper(tokens); in concat() 62 let pasted: String = segments.into_iter().map(|x| x.0).collect(); in concat() [all …]
|
H A D | module.rs | 8 let group = expect_group(it); in expect_string_array() 10 let mut values = Vec::new(); in expect_string_array() 11 let mut it = group.stream().into_iter(); in expect_string_array() 13 while let Some(val) = try_string(&mut it) { in expect_string_array() 41 let string = if builtin { in emit_base() 105 let mut info = ModuleInfo::default(); in parse() 117 let mut seen_keys = Vec::new(); in parse() 120 let key = match it.next() { in parse() 156 let mut ordered_keys: Vec<&str> = Vec::new(); in parse() 172 let mut it = ts.into_iter(); in module() [all …]
|
H A D | helpers.rs | 6 if let Some(TokenTree::Ident(ident)) = it.next() { in try_ident() 14 if let Some(TokenTree::Literal(literal)) = it.next() { in try_literal() 24 let content = &string[1..string.len() - 1]; in try_string() 42 if let TokenTree::Punct(punct) = it.next().expect("Reached end of token stream for Punct") { in expect_punct() 54 let string = try_string(it).expect("Expected string"); in expect_string_ascii() 60 if let TokenTree::Group(group) = it.next().expect("Reached end of token stream for Group") { in expect_group() 75 let mut input = input.into_iter(); in function_name() 76 while let Some(token) = input.next() { in function_name() 79 if let Some(TokenTree::Ident(i)) = input.next() { in function_name()
|
/linux/rust/kernel/sync/ |
H A D | arc.rs | 62 /// let obj = Arc::new(Example { a: 10, b: 20 }, GFP_KERNEL)?; 65 /// let cloned = obj.clone(); 101 /// let obj = Arc::new(Example { a: 10, b: 20 }, GFP_KERNEL)?; 124 /// let obj: Arc<Example> = Arc::new(Example, GFP_KERNEL)?; 127 /// let coerced: Arc<dyn MyTrait> = obj; 160 let refcount_layout = Layout::new::<Refcount>(); in container_of() 162 let val_layout = Layout::for_value(unsafe { &*ptr }); in container_of() 165 let val_offset = unsafe { refcount_layout.extend(val_layout).unwrap_unchecked().1 }; in container_of() 172 let ptr = ptr as *const ArcInner<T>; in container_of() 177 let pt in container_of() [all...] |
/linux/rust/kernel/device/ |
H A D | property.rs | 83 let name = unsafe { bindings::fwnode_get_name(self.0.as_raw()) }; in display_name() 90 let name = unsafe { CStr::from_char_ptr(name) }; in display_name() 118 let ret = unsafe { in property_match_string() 135 let mut val: KVec<T> = KVec::with_capacity(len, GFP_KERNEL)?; in property_read_array_vec() 137 let res = T::read_array_from_fwnode_property(self, name, val.spare_capacity_mut()); in property_read_array_vec() 138 let res = match res { in property_read_array_vec() 183 /// let fwnode = dev.fwnode().ok_or(ENOENT)?; 184 /// let b: u32 = fwnode.property_read(c_str!("some-number")).required_by(dev)?; 185 /// if let Some(s) = fwnode.property_read::<CString>(c_str!("some-str")).optional() { 205 let chil in get_child_by_name() [all...] |
/linux/rust/pin-init/examples/ |
H A D | pthread_mutex.rs | 68 let init = |slot: *mut UnsafeCell<libc::pthread_mutex_t>| { in new() 70 let slot: *mut libc::pthread_mutex_t = slot.cast(); in new() 71 let mut attr = MaybeUninit::uninit(); in new() 72 let attr = attr.as_mut_ptr(); in new() 74 let ret = unsafe { libc::pthread_mutexattr_init(attr) }; in new() 79 let ret = unsafe { in new() 90 let ret = unsafe { libc::pthread_mutex_init(slot, attr) }; in new() 155 let mtx: Pin<Arc<PThreadMutex<usize>>> = Arc::try_pin_init(PThreadMutex::new(0)).unwrap(); in main() 156 let mut handles = vec![]; in main() 157 let thread_count = 20; in main() [all …]
|
/linux/rust/pin-init/internal/src/ |
H A D | zeroable.rs | 17 let ( in parse_zeroable_derive_input() 26 let last = rest.pop(); in parse_zeroable_derive_input() 28 let mut new_impl_generics = Vec::with_capacity(impl_generics.len()); in parse_zeroable_derive_input() 30 let mut in_generic = !impl_generics.is_empty(); in parse_zeroable_derive_input() 32 let mut inserted = false; in parse_zeroable_derive_input() 34 let mut nested = 0; in parse_zeroable_derive_input() 78 let (rest, new_impl_generics, ty_generics, last) = parse_zeroable_derive_input(input); in derive() 91 let (rest, new_impl_generics, ty_generics, last) = parse_zeroable_derive_input(input); in maybe_derive()
|