Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 18.5. proc and sysfs Handling of TTY Devices

Оглавление
Английский оригинал Перевод на русский

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

18.5. Обработка proc и sysfs tty-устройств

hardorsoft 26.10.10 в 06:48

0

Ядро tty-устройств предоставляет простой способ работы с файлами
каталога /proc/tty/driver. Если драйвер определил функцию read_proc
или write_proc, то в этом каталоге создается соответствующий файл. И
тогда любая операция чтения или записи над этим файлом передается
драйверу. Формат этих функций такой же как у функций обработки
файлов /proc.

hardorsoft 26.10.10 в 06:49

0

В качестве примера, здесь приведена простая реализация read_proc,
которая только выводит номер зарегистрированного порта:

hardorsoft 26.10.10 в 06:49

0

static int tiny_read_proc(char *page, char **start, off_t off, int count,
int *eof, void *data)
{
struct tiny_serial *tiny;
off_t begin = 0;
int length = 0;
int i;
length += sprintf(page, "tinyserinfo:1.0 driver:%s\n", DRIVER_VERSION);
for (i = 0; i < TINY_TTY_MINORS && length < PAGE_SIZE; ++i) {
tiny = tiny_table[i];
if (tiny = = NULL)
continue;
length += sprintf(page+length, "%d\n", i);
if ((length + begin) > (off + count))
goto done;
if ((length + begin) < off) {
begin += length;
length = 0;
}
}
*eof = 1;
done:
if (off >= (length + begin))
return 0;
*start = page + (off-begin);
return (count < begin+length-off) ? count : begin + length-off;
}

hardorsoft 26.10.10 в 06:49

0

Ядро tty-устройств работает со всеми каталогами sysfs, создает
устройство при регистрации tty-драйвера или создания tty-устройства с
флагом TTY_DRIVER_NO_DEVFS в структуре struct tty_driver. Каталог
устройства всегда содержит файл dev, который позволяет из пространства
пользователя определить старший и младший номера устройства. Так же
он содержит символьные ссылки device и driver, если при вызове
функции tty_register_device ей был передан указатель на структуру
struct device. Других файлов, кроме этих трех, нет. В будущих версиях
ядра это может измениться.

hardorsoft 26.10.10 в 06:49

0
Минутку...