Lines Matching defs:Data
76 //! type Data = Configuration;
88 //! type Data = Configuration;
128 pub struct Subsystem<Data> {
132 data: Data,
136 unsafe impl<Data> Sync for Subsystem<Data> {}
139 unsafe impl<Data> Send for Subsystem<Data> {}
141 impl<Data> Subsystem<Data> {
149 item_type: &'static ItemType<Subsystem<Data>, Data>,
150 data: impl PinInit<Data, Error>,
187 impl<Data> PinnedDrop for Subsystem<Data> {
205 pub unsafe trait HasGroup<Data> {
222 // SAFETY: `Subsystem<Data>` embeds a field of type `bindings::config_group`
224 unsafe impl<Data> HasGroup<Data> for Subsystem<Data> {
236 unsafe { container_of!(opaque_ptr, Subsystem<Data>, subsystem) }
245 pub struct Group<Data> {
249 data: Data,
252 impl<Data> Group<Data> {
259 item_type: &'static ItemType<Group<Data>, Data>,
260 data: impl PinInit<Data, Error>,
277 // SAFETY: `Group<Data>` embeds a field of type `bindings::config_group`
279 unsafe impl<Data> HasGroup<Data> for Group<Data> {
432 struct ItemOperationsVTable<Container, Data>(PhantomData<(Container, Data)>);
434 impl<Data> ItemOperationsVTable<Group<Data>, Data>
436 Data: 'static,
450 // embedded within a `Group<Data>`.
451 let r_group_ptr = unsafe { Group::<Data>::container_of(c_group_ptr) };
455 let pin_self: Arc<Group<Data>> = unsafe { Arc::from_raw(r_group_ptr.cast_mut()) };
470 impl<Data> ItemOperationsVTable<Subsystem<Data>, Data> {
523 pub struct Attribute<const ID: u64, O, Data> {
525 _p: PhantomData<(O, Data)>,
529 unsafe impl<const ID: u64, O, Data> Sync for Attribute<ID, O, Data> {}
532 unsafe impl<const ID: u64, O, Data> Send for Attribute<ID, O, Data> {}
534 impl<const ID: u64, O, Data> Attribute<ID, O, Data>
536 O: AttributeOperations<ID, Data = Data>,
543 /// the group must be embedded in a `Group<Data>`.
546 /// `bindings::configfs_subsystem` that is embedded in a `Subsystem<Data>`.
560 let data: &Data = unsafe { get_group_data(c_group) };
576 /// the group must be embedded in a `Group<Data>`.
579 /// `bindings::configfs_subsystem` that is embedded in a `Subsystem<Data>`.
594 let data: &Data = unsafe { get_group_data(c_group) };
636 /// This trait must be implemented on the `Data` type of for types that
637 /// implement `HasGroup<Data>`. The trait must be implemented once for each
646 type Data;
654 fn show(data: &Self::Data, page: &mut [u8; PAGE_SIZE]) -> Result<usize>;
662 fn store(_data: &Self::Data, _page: &[u8]) -> Result {
680 pub struct AttributeList<const N: usize, Data>(
684 PhantomData<Data>,
688 unsafe impl<const N: usize, Data> Send for AttributeList<N, Data> {}
691 unsafe impl<const N: usize, Data> Sync for AttributeList<N, Data> {}
693 impl<const N: usize, Data> AttributeList<N, Data> {
710 attribute: &'static Attribute<ID, O, Data>,
712 O: AttributeOperations<ID, Data = Data>,
730 pub struct ItemType<Container, Data> {
733 _p: PhantomData<(Container, Data)>,
737 unsafe impl<Container, Data> Sync for ItemType<Container, Data> {}
740 unsafe impl<Container, Data> Send for ItemType<Container, Data> {}
744 impl<Data> ItemType<$tpe, Data> {
748 attributes: &'static AttributeList<N, Data>,
751 Data: GroupOperations<Child = Child>,
757 ct_group_ops: GroupOperationsVTable::<Data, Child>::vtable_ptr().cast_mut(),
758 ct_item_ops: ItemOperationsVTable::<$tpe, Data>::vtable_ptr().cast_mut(),
769 attributes: &'static AttributeList<N, Data>,
775 ct_item_ops: ItemOperationsVTable::<$tpe, Data>::vtable_ptr().cast_mut(),
786 impl_item_type!(Subsystem<Data>);
787 impl_item_type!(Group<Data>);
789 impl<Container, Data> ItemType<Container, Data> {