Ядро ОС Linux

Функция select().


Функция select() полезна в основном в работе с символьными устройствами. Обычно она используется для многократного чтения без использования последовательного вызова функций. Приложение делает системный вызов select(), задавая ему список дескрипторов файлов, затем ядро сообщает программе, при просмотре какого дескриптора она была активизирована. Также select() иногда используется как таймер. Однако функция select() в драйвере устройства не вызывается непосредственно системным вызовом, так что file_operations select() выполняет небольшое количество примитивных операций. Ее аргументы:

  • struct inode * inode
    - Указатель на структуру inode устройства.
  • struct file * file
    - Указатель на файловую структуру устройства.
  • int sel_type
    - Тип совершаемого действия
    SEL_IN - чтение
    SEL_OUT - запись
    SEL_EX - удаление
  • select_table * wait
    - Если wait = NULL, функция select() проверяет, готово ли устройство, и возвращается в случае отсутствия готовности. Если wait не равен NULL, select() замораживает процесс и ждет, пока устройство не будет готово. Функция select_wait() делает то же, что и select() при wait = NULL.



Содержание раздела