Краткая справка

Предыдущая  Содержание  Следующая V*D*V

В этой главе было введено множество функций, вот краткая сумма их всех.

Kobject-ы

#include <linux/kobject.h>

Подключает файл, содержащий определения kobjects, связанные с ними структуры и функции.

void kobject_init(struct kobject *kobj);

int kobject_set_name(struct kobject *kobj, const char *format, ...);

Функции для инициализации kobject-а.

struct kobject *kobject_get(struct kobject *kobj);

void kobject_put(struct kobject *kobj);

Функции, которые управляют счётчиком ссылок для kobject-ов.

struct kobj_type;

struct kobj_type *get_ktype(struct kobject *kobj);

Представляет тип структуры, внутрь которой встроен kobject. Используйте get_ktype для получения kobj_type, связанного с данным kobject-ом.

int kobject_add(struct kobject *kobj);

extern int kobject_register(struct kobject *kobj);

void kobject_del(struct kobject *kobj);

void kobject_unregister(struct kobject *kobj);

kobject_add добавляет kobject в систему, обрабатывая членство в kset, представление в sysfs и генерацию события горячего подключения. kobject_register является удобной функцией, которая сочетает в себе kobject_init и kobject_add. Для удаления kobject-а используйте kobject_del  или kobject_unregister, которая объединяет kobject_del и kobject_put.

void kset_init(struct kset *kset);

int kset_add(struct kset *kset);

int kset_register(struct kset *kset);

void kset_unregister(struct kset *kset);

Функции инициализации и регистрации для kset-ов.

decl_subsys(name, type, hotplug_ops);

Макрос, который упрощает декларацию подсистем.

void subsystem_init(struct subsystem *subsys);

int subsystem_register(struct subsystem *subsys);

void subsystem_unregister(struct subsystem *subsys);

struct subsystem *subsys_get(struct subsystem *subsys)

void subsys_put(struct subsystem *subsys);

Операции над подсистемами.

Операции в sysfs

#include <linux/sysfs.h>

Подключает файл, содержащий декларации для sysfs.

int sysfs_create_file(struct kobject *kobj, struct attribute *attr);

int sysfs_remove_file(struct kobject *kobj, struct attribute *attr);

int sysfs_create_bin_file(struct kobject *kobj, struct bin_attribute *attr);

int sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);

int sysfs_create_link(struct kobject *kobj, struct kobject *target, char *name);

void sysfs_remove_link(struct kobject *kobj, char *name);

Функции для создания и удаления атрибутных файлов, связанных с kobject-ом.

Шины, устройства, и драйверы

int bus_register(struct bus_type *bus);

void bus_unregister(struct bus_type *bus);

Функции, которые выполняют регистрации и отмену регистрации шин в модели устройства.

int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *, void *));

int bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data,

                                         int (*fn)(struct device_driver *, void *));

Функции, которые выполняют итерацию по каждому из устройств и драйверов, соответственно, которые подключены к данной шине.

BUS_ATTR(name, mode, show, store);

int bus_create_file(struct bus_type *bus, struct bus_attribute *attr);

void bus_remove_file(struct bus_type *bus, struct bus_attribute *attr);

Макрос BUS_ATTR может быть использован для объявления структуры bus_attribute, которая затем может быть добавлена и удалена двумя указанными выше функциями.

int device_register(struct device *dev);

void device_unregister(struct device *dev);

Функции, которые обрабатывают регистрацию устройства.

DEVICE_ATTR(name, mode, show, store);

int device_create_file(struct device *device, struct device_attribute *entry);

void device_remove_file(struct device *dev, struct device_attribute *attr);

Макросы и функции, которые имею дело с атрибутами устройств.

int driver_register(struct device_driver *drv);

void driver_unregister(struct device_driver *drv);

Функции, которые регистрируют и отменяют регистрацию драйвера устройства.

DRIVER_ATTR(name, mode, show, store);

int driver_create_file(struct device_driver *drv, struct driver_attribute *attr);

void driver_remove_file(struct device_driver *drv, struct driver_attribute *attr);

Макросы и функции, которые управляют атрибутами драйвера.

Классы

struct class_simple *class_simple_create(struct module *owner, char *name);

void class_simple_destroy(struct class_simple *cs);

struct class_device *class_simple_device_add(struct class_simple *cs,

                      dev_t devnum, struct device *device, const char *fmt, ...);

void class_simple_device_remove(dev_t dev);

int class_simple_set_hotplug(struct class_simple *cs,

                      int (*hotplug)(struct class_device *dev, char **envp,

                      int num_envp, char *buffer, int buffer_size));

Функции, реализующие интерфейс class_simple; они управляют простыми записями классов, содержащими атрибут dev и небольшое число других. Начиная с версии 2.6.13 данный интерфейс в ядрах больше не присутствует.

int class_register(struct class *cls);

void class_unregister(struct class *cls);

Регистрация и отмена регистрации классов.

CLASS_ATTR(name, mode, show, store);

int class_create_file(struct class *cls, const struct class_attribute *attr);

void class_remove_file(struct class *cls, const struct class_attribute *attr);

Обычные макросы и функции для работы с атрибутами классов.

int class_device_register(struct class_device *cd);

void class_device_unregister(struct class_device *cd);

int class_device_rename(struct class_device *cd, char *new_name);

CLASS_DEVICE_ATTR(name, mode, show, store);

int class_device_create_file(struct class_device *cls, const struct class_device_attribute *attr);

void class_device_remove_file(struct class_device *cls, const struct class_device_attribute *attr);

Функции и макросы, которые реализуют интерфейс класса устройств.

int class_interface_register(struct class_interface *intf);

void class_interface_unregister(struct class_interface *intf);

Функции, которые добавляют к классу интерфейс (или удаляют его).

Встроенное программное обспечение

#include <linux/firmware.h>

int request_firmware(const struct firmware **fw, char *name, struct device *device);

int request_firmware_nowait(struct module *module, char *name,

                      struct device *device, void *context,

                      void (*cont)(const struct firmware *fw, void *context));

void release_firmware(struct firmware *fw);

Функции, которые реализуют интерфейс ядра для загрузки встроенного программного обеспечения (прошивки).

Предыдущая  Содержание  Следующая