Драйвер “memory”: открытие устройства как файл

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

Функцией пространства ядра, которая соответствует открытию файла в пользовательском пространстве (fopen), в вызове register_chrdev является член open структуры file_operations. В данном случае это функция memory_open. Она принимает в качестве аргумента: структуру inode, которая посылает в ядро информацию о старшем и младшем номере, и структуру file с информацией о различных операциях, которые можно выполнять с файлом. В рамках настоящей статьи ни одна из этих функций подробно рассматриваться не будет.

 

При открытии файла обычно необходимо проинициализировать переменные драйвера или сбросить устройство. Хотя в этом простом примере эти операции не выполняются.

 

Функцию memory_open можно увидеть ниже:

 

<memory open> =

 

int memory_open(struct inode *inode, struct file *filp) {

 

    /* Success */

    return 0;

}

 

Эта новая функция теперь показана в Таблице 5.

 

События

Пользовательские функции

Функции ядра

Загрузка модуля

insmod

module_init()

Открытие устройства

fopen

file_operations: open

Чтение устройства

 

 

Запись в устройство

 

 

Закрытие устройства

 

 

Удаление модуля

rmmod

module_exit()

 

Таблица 5. События драйвера устройства и связанные с ними интерфейсные функции в пространстве ядра и пользовательском пространстве.

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