The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

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

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

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

Эта глава ввела следующие символы и файлы заголовков. Списки полей в структуре file_operations и структуре file здесь не повторяются.

 

#include <linux/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 <linux/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 <linux/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 <linux/kernel.h>

container_of(pointer, type, field);

Удобный макрос, который может быть использован для получения указателя на структуру из указателя на другие структуры, содержащиеся в нём.

 

#include <asm/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);

Копирование данных между пользовательским пространством и пространством ядра.

 

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