Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 3.9. Краткий обзор
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Краткая справка hardorsoft 19.11.10 в 11:36 |
|
|
Эта глава ввела следующие символы и файлы заголовков. Список полей в структуре file_operations и структуре file здесь не повторяются. hardorsoft 19.11.10 в 11:36 |
||
|
#include types.h> hardorsoft 29.10.10 в 23:08 |
||
|
dev_t является типом, используемым для представления в ядре номера устройства. hardorsoft 19.11.10 в 11:36 |
||
|
int MAJOR(dev_t dev); hardorsoft 29.10.10 в 23:08 |
||
|
Макросы для получения старших и младших чисел из номера устройства. hardorsoft 19.11.10 в 11:37 |
||
|
dev_t MKDEV(unsigned int major, unsigned int minor); hardorsoft 29.10.10 в 23:08 |
||
|
Макрос, который строит элемент данных dev_t из старших и младших чисел. hardorsoft 19.11.10 в 11:37 |
||
|
#include fs.h> hardorsoft 29.10.10 в 23:09 |
||
|
Заголовок “filesystem” является заголовком, необходимым для написания драйверов устройств. Здесь декларируются многие важные функции и структуры данных. hardorsoft 19.11.10 в 11:37 |
||
|
int register_chrdev_region(dev_t first, unsigned int count, char *name) hardorsoft 29.10.10 в 23:09 |
||
|
Функции, которые позволяют драйверу выделять и освобождать диапазоны номеров устройств. register_chrdev_region должна быть использована, если старший желаемый номер известен заранее, для динамического выделения взамен используйте alloc_chrdev_region. hardorsoft 19.11.10 в 11:37 |
||
|
int register_chrdev(unsigned int major, const char *name, struct file_operations hardorsoft 29.10.10 в 23:09 |
||
|
Старая процедура (до 2.6) регистрации символьного устройства. Она эмулируется в ядре 2.6, но не должна быть использована для нового кода. Если старший номер не 0, он используется без изменений; в противном случае устройству присваивается динамический номер. hardorsoft 19.11.10 в 11:37 |
||
|
int unregister_chrdev(unsigned int major, const char *name); hardorsoft 29.10.10 в 23:09 |
||
|
Функция, которая отменяет регистрацию, сделанную с помощью register_chrdev. Обе величины, major и строка name, должны содержать те же значения, которые были использованы для регистрации драйвера. hardorsoft 19.11.10 в 11:38 |
||
|
struct file_operations; hardorsoft 29.10.10 в 23:09 |
||
|
Три важные структуры данных, используемые большинством драйверов устройств. Структура file_operations содержит методы символьного драйвера; структура file представляет собой открытый файл и структура inode представляет собой файл на диске. hardorsoft 19.11.10 в 11:38 |
||
|
#include cdev.h> hardorsoft 29.10.10 в 23:09 |
||
|
Функции управления структурами cdev, которые представляют в ядре символьные устройства. hardorsoft 19.11.10 в 11:38 |
||
|
#include kernel.h> hardorsoft 29.10.10 в 23:09 |
||
|
Удобный макрос, который может быть использован для получения указателя на структуру из указателя на другие структуры, содержащиеся в нём. hardorsoft 19.11.10 в 11:38 |
||
|
#include uaccess.h> hardorsoft 29.10.10 в 23:10 |
||
|
Подключает декларации файлов функций, используемых кодом ядра для перемещения данных в и из пространства пользователя. hardorsoft 19.11.10 в 11:38 |
||
|
unsigned long copy_from_user (void *to, const void *from, unsigned long hardorsoft 29.10.10 в 23:10 |
||
|
unsigned long copy_to_user (void *to, const void *from, unsigned long count); hardorsoft 29.10.10 в 23:10 |
||
|
Копирование данных между пользовательским пространством и пространством ядра. hardorsoft 19.11.10 в 11:39 |
