Дисциплина линии ( LDISC ) — это уровень в терминальной подсистеме в некоторых Unix-подобных системах. [1] Терминальная подсистема состоит из трех уровней: верхний уровень обеспечивает интерфейс символьного устройства , нижний уровень — аппаратный драйвер для взаимодействия с оборудованием или псевдотерминалом и средняя дисциплина линии для реализации поведения, общего для терминальных устройств.
Дисциплина линии склеивает код драйвера устройства низкого уровня с процедурами общего интерфейса высокого уровня (такими как read(2), write(2) и ioctl (2)) и отвечает за реализацию семантики, связанной с устройством. [2] Политика отделена от драйвера устройства, так что один и тот же драйвер последовательного оборудования может использоваться устройствами, которым требуется различная обработка данных.
Например, стандартная дисциплина линии обрабатывает данные, которые она получает от драйвера оборудования и от приложений, пишущих на устройство, в соответствии с требованиями терминала в Unix-подобной системе. На входе она обрабатывает специальные символы, такие как символ прерывания (обычно Control-C ) и символы стирания и уничтожения (обычно backspace или delete и Control-U соответственно), а на выходе она заменяет все символы LF последовательностью CR / LF .
Последовательный порт также может использоваться для коммутируемого интернет-соединения с использованием последовательного модема и PPP . В этом случае будет использоваться дисциплина линии PPP; она будет накапливать входные данные из последовательной линии во входные пакеты PPP, доставляя их в сетевой стек, а не на символьное устройство, и будет передавать пакеты, доставленные ему сетевым стеком по последовательной линии.
Некоторые Unix-подобные системы используют STREAMS для реализации линейных дисциплин.