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

Обработка TTY устройствами proc и sysfs

Обработка TTY устройствами proc и sysfs

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

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

 

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

 

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;

}

 

Ядро tty обрабатывает каталог sysfs и создание устройства, когда регистрируется tty драйвер, или когда созданы отдельные tty устройства, в зависимости от флага TTY_DRIVER_NO_DEVFS в struct tty_driver. Отдельный каталог всегда содержит файл dev, который позволяет инструментам пользовательского пространства определять старший и младший номер, присвоенный устройству. Он также содержит символическую ссылку устройства и драйвера, если в вызове ty_register_device передан указатель на действительную struct device. Помимо этих трёх файлов, отдельные tty драйверы не могут создать в этом месте новые файлы в sysfs. Это, возможно, измениться в будущих версиях ядра.

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