mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 15:32:04 +02:00
configfs: Allow the registration of const struct configfs_attribute
The attribute structure defined in driver code never need to be modified. Allow them to be marked as const. As there are many drivers which use these attributes, prepare for a phased transition by using a union of const and non-const attributes. After all drivers have been migrated to the const variant, the non-const one can be replaced by the const one and the transition machinery will be removed again. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Andreas Hindborg <a.hindborg@kernel.org> Link: https://patch.msgid.link/20260716-configfs-const-base-v1-5-c545a4053cb5@weissschuh.net Signed-off-by: Breno Leitao <leitao@debian.org>
This commit is contained in:
parent
ee4f267ada
commit
f7528cd38b
|
|
@ -641,8 +641,8 @@ static int populate_attrs(struct config_item *item)
|
|||
|
||||
ops = t->ct_group_ops;
|
||||
|
||||
if (t->ct_attrs) {
|
||||
for (i = 0; (attr = t->ct_attrs[i]) != NULL; i++) {
|
||||
if (t->ct_attrs_const) {
|
||||
for (i = 0; (attr = t->ct_attrs_const[i]) != NULL; i++) {
|
||||
if (ops && ops->is_visible && !ops->is_visible(item, attr, i))
|
||||
continue;
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,10 @@ struct config_item_type {
|
|||
struct module *ct_owner;
|
||||
const struct configfs_item_operations *ct_item_ops;
|
||||
const struct configfs_group_operations *ct_group_ops;
|
||||
struct configfs_attribute **ct_attrs;
|
||||
union {
|
||||
struct configfs_attribute **ct_attrs;
|
||||
const struct configfs_attribute *const *ct_attrs_const;
|
||||
};
|
||||
const struct configfs_bin_attribute *const *ct_bin_attrs;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -756,7 +756,9 @@ pub const fn new_with_child_ctor<const N: usize, Child>(
|
|||
ct_owner: owner.as_ptr(),
|
||||
ct_group_ops: GroupOperationsVTable::<Data, Child>::vtable_ptr(),
|
||||
ct_item_ops: ItemOperationsVTable::<$tpe, Data>::vtable_ptr(),
|
||||
ct_attrs: core::ptr::from_ref(attributes).cast_mut().cast(),
|
||||
__bindgen_anon_1: bindings::config_item_type__bindgen_ty_1 {
|
||||
ct_attrs_const: core::ptr::from_ref(attributes).cast(),
|
||||
},
|
||||
ct_bin_attrs: core::ptr::null(),
|
||||
}),
|
||||
_p: PhantomData,
|
||||
|
|
@ -773,7 +775,9 @@ pub const fn new<const N: usize>(
|
|||
ct_owner: owner.as_ptr(),
|
||||
ct_group_ops: core::ptr::null(),
|
||||
ct_item_ops: ItemOperationsVTable::<$tpe, Data>::vtable_ptr(),
|
||||
ct_attrs: core::ptr::from_ref(attributes).cast_mut().cast(),
|
||||
__bindgen_anon_1: bindings::config_item_type__bindgen_ty_1 {
|
||||
ct_attrs_const: core::ptr::from_ref(attributes).cast(),
|
||||
},
|
||||
ct_bin_attrs: core::ptr::null(),
|
||||
}),
|
||||
_p: PhantomData,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user