Перевод с английского на русский
Краткая справка
Эта глава ввела следующие символы и файлы заголовков. Список полей в структуре file_operations и структуре file здесь не повторяются.
#include types.h>
dev_t
dev_t является типом, используемым для представления в ядре номера устройства.
int MAJOR(dev_t dev);
int MINOR(dev_t dev);
Макросы для получения старших и младших чисел из номера устройства.
dev_t MKDEV(unsigned int major, unsigned int minor);
Макрос, который строит элемент данных dev_t из старших и младших чисел.
#include fs.h>
Заголовок “filesystem” является заголовком, необходимым для написания драйверов устройств. Здесь декларируются многие важные функции и структуры данных.
int register_chrdev_region(dev_t first, unsigned int count, char *name)
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int
count, char *name)
void unregister_chrdev_region(dev_t first, unsigned int count);
Функции, которые позволяют драйверу выделять и освобождать диапазоны номеров устройств. register_chrdev_region должна быть использована, если старший желаемый номер известен заранее, для динамического выделения взамен используйте alloc_chrdev_region.
int register_chrdev(unsigned int major, const char *name, struct file_operations
*fops);
Старая процедура (до 2.6) регистрации символьного устройства. Она эмулируется в ядре 2.6, но не должна быть использована для нового кода. Если старший номер не 0, он используется без изменений; в противном случае устройству присваивается динамический номер.
int unregister_chrdev(unsigned int major, const char *name);
Функция, которая отменяет регистрацию, сделанную с помощью register_chrdev. Обе величины, major и строка name, должны содержать те же значения, которые были использованы для регистрации драйвера.
struct file_operations;
struct file;
struct inode;
Три важные структуры данных, используемые большинством драйверов устройств. Структура file_operations содержит методы символьного драйвера; структура file представляет собой открытый файл и структура inode представляет собой файл на диске.
#include cdev.h>
struct cdev *cdev_alloc(void);
void cdev_init(struct cdev *dev, struct file_operations *fops);
int cdev_add(struct cdev *dev, dev_t num, unsigned int count);
void cdev_del(struct cdev *dev);
Функции управления структурами cdev, которые представляют в ядре символьные устройства.
#include kernel.h>
container_of(pointer, type, field);
Удобный макрос, который может быть использован для получения указателя на структуру из указателя на другие структуры, содержащиеся в нём.
#include uaccess.h>
Подключает декларации файлов функций, используемых кодом ядра для перемещения данных в и из пространства пользователя.
unsigned long copy_from_user (void *to, const void *from, unsigned long
count);
unsigned long copy_to_user (void *to, const void *from, unsigned long count);
Копирование данных между пользовательским пространством и пространством ядра.
Переведено на сайте www.notabenoid.com
http://notabenoid.com/book/11832/38277
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.