Human Resource Management Consulting, Recruitment,Selection, Personality Testing
Management Consulting, Kiev, Ukraine
Management
Consulting
HRM Consulting
Recruitment, Selection, Personality Testing
Поиск и подбор управленческого персонала
и ключевых специалистов,
психологическое тестирование кандидатов,
внедрение методов управления персоналом

Select The Best!

 Вернуться |   English |   Главная |   Клиентам |   Кандидатам |   Украина - Новости |   Статьи |   Книги |   Форум |  Kiev+Job |  Разное |  Бизнес-сообщество |
e-mail Пароль запомнить меня
Опции сайта Главная Журналы Новости Сеть пользователей Объявления Рейтинг
Mac Service
Новый пользователь
Последние записи из журналов
Журналы пользователя
Связаться
Максим Сохацкий
Software Engineer в International Land Systems, Inc.

Бесплатный член сообщества с 29 мая. 2006 г.  (последний раз был в системе 14 янв. 2008 г.)
 
Информация о пользователе    Интервью   
Журналы
Максим Сохацкий имеет бизнес-контактов: 182

Рейтинг пользователя: 3 (3128 баллов)
Добавить в круг общения

Подписаться
TTY Subsytem for HaikuOS proposal из журнала пользователя Операционные системы
(Разместил Максим Сохацкий 19 июн. 2006 г)

 

TTY Subsystem
maxim@sokhatsky.com
Master of Computer Science

Termios

According to Single UNIX Specification Version 2 Ц General Terminal Interface 
(termios.h their structures, functions and constants) defines the way to deal 
with termios Terminal Structure. The main purpose of public part of 
specification is to provide set of constants to manage the terminal, i.e.
on which codes and how terminal must answers. The private part (how driver must 
collect data, input and output queues, synchronization) is free to 
interpretation. Most common set of flags constants covers POSIX, BSD and XOPEN 
vision of the matter.

In other words the main purpose of Terminal Interface is to convert characters 
on input and output streams from symbols to device interpretable commands. The 
main conversion logic is concentrated in *read* and *write* subroutines of 
terminal driver.

The termios service (I mean *ioctl*) handler codes are also free to 
implementation but in general there are some *standard* codes used in BSD and 
System V like systems, and thereby software relays on that implementations.

Line disciplines

As was mentioned above - one of the main purpose (besides unification of dealing 
with character input/output human devices) of terminal interface is to convert 
data streams (e.g. when we recognize "
" in *write* stream we must send to 
message to display part of terminal "carriage return" and "new line" commands. 
Besides *read* and *write* routines alongside of them are *open*, *close* and 
*ioctl* operation that also may have some not-traditional logic for certain 
conversion mode. That conversion layers calls Line Disciplines. Thus line 
discipline is a set of terminal driver handler on of them can be chosen for 
fixed termios instance.

Custom Line discipline (besides) is used to handle conversion modes e.g. for 
standard TTY, MOUSE, PPP, SLIP protocols. Many variants of those protocols can 
be obtained and used in one application. On most Unix-like OS Termios structure 
has c_line field used to select line discipline.

Teletype Discipline

Teletype driver consists of standard conversion logic (*read* and *write* 
subroutines) the service logic (*ioct*, handler codes). This means exact the 
discipline - standard tty discipline used in most cased when used terminal 
subsystem. E.g. it is used in conjunction with device drivers, like pty, com,
ppp, slip, and may others. Teletype driver is not working with devices directly 
it just converts char from raw to canonical form.

Terminal Drivers

The most wide known variants of tty drivers are pty master/slave drivers and 
serial line drivers. Other using of tty is covering by ppp, slip and others 
communication stacks. The terminal driver is responsible to handle the control 
characters in stream and convert it to device commands, control of it sending to 
device along with input/output character stream to device.

In theory each terminal driver can use their own discipline or set of 
disciplines along with providing no discipline. If the terminal driver provides 
no discipline - the common Teletype Discipline is using. From other side one 
discipline can be used with two or more teletype driver. I.e. discipline is not 
connected directly "one to one" with device type. Also terminal can always use 
teletype discipline as wide known discipline.

Line disciplines are distensible

I.e. you could implement your own line discipline and use it in you application 
or terminal drivers. For example there is no need to implement all possible and 
used in industry line disciplines - but must be an elegant way to extend them.
Thus discipline is loadable module that can be obtained by its name.

The main teletype discipline is one of the always known disciplines when working 
with terminal is needed and is responsible for storing information about other 
disciplines and their using.

Module 1
+----------------------+ Module 2 Module 3
| +---------+ +------+ | +------+ +------+
| | DISCIPL | | TTY  | | | PPP  | | SLIP |
| | MANAGER | | DISC | | | DISC | | DISC |
| +---------+ +------+ | +------+ +------+
+----------------------+

That means that TTY discipline module is not like other discipline module - it 
is main - and hosts discipline array structure. TTY discipline is some kind of 
master discipline. Let us see examples on how disciplines are used in TTY stack.

RS232 Driver - the same is PTY driver

+----------+
| USER APP |
+----------+
   |
   V
+--------+  +------------+
| COM    |->| TTY        |
| DRIVER |<-| DISCIPLINE |
+--------+  +------------+
   |
   V
+-----------+
| HARDWARE  |
+-----------+

Example 2. PPP Driver

+------------+
| PPP client | User App
+------------+
   |
   V        +----------------+
+--------+->| PPP DISCIPLINE |
| PPP    |<-+----------------+
| DRIVER |->+----------------+
+--------+<-| TTY DISCIPLINE |
      |     +----------------+
   +--+-------+------------+
   V          V            V
+--------+ +--------+ +--------+
| COM    | | USB    | | NET    |
| DRIVER | | DRIVER | | DRIVER |
+--------+ +--------+ +--------+

For example I can (from user app) say to PPP driver not to use PPP discipline 
but instead using my own implemented TEST Discipline.

The mechanism of selection underlying hardware is of scope of work of Network  
Team. TTY subsystem just must provide proper mechanism to using with tty 
disciplines for authors of PPP driver.

            +-----------------+
+--------+->| TEST DISCIPLINE |
| PPP    |<-+-----------------+
| DRIVER |->+----------------+
+--------+<-| TTY DISCIPLINE |
            +----------------+

This can be done by changing c_line flag in termios structure associated with 
opened file device.

But that can't guaranteed that all drivers must handle that. E.g. in PPP driver 
is used two disciplines one can be substained but second is always tty. You could 
change just one discipline by the termios interface. But driver can use more 
than one discipline in its conversion logic.



Добавить комментарий

re:TTY Subsytem
Ответить
(Комментировал Александр Юхименко 19 июн. 2006 г)

Толково написано

re:TTY Subsytem
Ответить
(Комментировал Максим Сохацкий 19 июн. 2006 г)

Не серйозно ? меня интересует именно стиль английского, бо за смысл я не волнуюсь )

re:TTY Subsytem for HaikuOS proposal
Ответить
(Комментировал Алексей Белов 19 июн. 2006 г)

предоследней схемки не понял

re:TTY Subsytem for HaikuOS proposal
Ответить
(Комментировал Максим Сохацкий 19 июн. 2006 г)

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

Вернуться   Search Engine Optimization Вперед

© 1995- Management Consulting, Kiev, Ukraine - www.mchr.com.ua
Последнее обновление:

   
KMindex Rambler's Top100
= =
= eXTReMe Tracker