Я пытаюсь научиться писать модуль sysfs и путаюсь при базовой инициализации. В документе this, смотрящем файл kobject.h, существует несколько различных функций, связанных с созданием записи sysfs.Написание модуля Sysfs
Из взглядов этого, функция «kobject_init_and_add», кажется, как правильно использовать, который принимает следующее:
90 int kobject_init_and_add(struct kobject *kobj,
91 struct kobj_type *ktype, struct kobject *parent,
92 const char *fmt, ...);
структура kobject и структура kobj_type являются достаточно простым, но я не понимаю что должны быть * parent kobject и * fmt cstring.
Кроме того, после инициализации этих объектов мне нужно будет удалить их с помощью функции exit_module, но возможны два варианта: kobject_del и kobject_puts. Каковы различия между ними?
Часть моей путаницы возникает из-за того, что во время поиска ответа я вижу учебники, в которых говорится, что вместо этого использовать функции типа kobject_register, но эта функция фактически не существует.
Итак, для атрибутов, таких как & module_attr в примере sysfs_create_group, где указано это & module_attr? Потому что, похоже, у меня проблемы. Я читал, что вы можете использовать макрос __ATTR, но это вызывает ошибки для меня. – Zephyr
Вы можете определить, как показано ниже: static struct attribute_group module_attr = { .attrs = module_attribute, }; –
Понял, мой вопрос в том, должен ли «module_attribute» использовать его, нужно заранее определить или просто объявить? – Zephyr