Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3780 → Rev 3908

/kernel/branches/Kolibri-acpi/docs/sysfuncr.txt
2420,391 → 2420,6
* иначе eax = TID - идентификатор потока
 
======================================================================
= Функция 52, подфункция 0 - получить конфигурацию сетевого драйвера.
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 0 - номер подфункции
Возвращаемое значение:
* eax = двойное слово конфигурации
Замечания:
* Слово конфигурации можно установить подфункцией 2.
* Ядро не использует соответствующую переменную.
Ценность этой переменной и работающих с ней подфункций 0 и 2
представляется сомнительной.
 
======================================================================
======= Функция 52, подфункция 1 - получить локальный IP-адрес. ======
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 1 - номер подфункции
Возвращаемое значение:
* eax = IP-адрес (4 байта)
Замечания:
* Локальный IP-адрес устанавливается подфункцией 3.
 
======================================================================
Функция 52, подфункция 2 - установить конфигурацию сетевого драйвера.
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 2 - номер подфункции
* ecx = двойное слово конфигурации; если младшие 7 бит образуют
число 3, это воспринимается как запрос на [пере-]инициализацию
Ethernet-карты, в противном случае Ethernet выключается
Возвращаемое значение:
* если не запрошен Ethernet-интерфейс, то возвращается eax=2,
но это может измениться в будущих версиях ядра
* если запрошен Ethernet-интерфейс, то eax=0 означает ошибку
(отсутствие Ethernet-карты), а ненулевое значение - успех
Замечания:
* Слово конфигурации можно прочитать подфункцией 0.
* Ядро не использует соответствующую переменную.
Ценность этой переменной, подфункции 0 и части подфункции 2,
устанавливающей эту переменную, представляется сомнительной.
 
======================================================================
====== Функция 52, подфункция 3 - установить локальный IP-адрес. =====
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 3 - номер подфункции
* ecx = IP-адрес (4 байта)
Возвращаемое значение:
* текущая реализация возвращает eax=3, но это может быть изменено
в будущих версиях
Замечания:
* Локальный IP-адрес можно получить подфункцией 1.
 
======================================================================
= Функция 52, подфункция 6 - добавить данные в стек входной очереди. =
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 6 - номер подфункции
* edx = размер данных
* esi = указатель на данные
Возвращаемое значение:
* eax = -1 - ошибка
* eax = 0 - успешно
Замечания:
* Эта функция предназначена только для медленных сетевых драйверов
(PPP, SLIP).
* Размер данных не должен превосходить 1500 байт,
хотя проверок корректности не делается.
 
======================================================================
====================== Функция 52, подфункция 8 ======================
============= Прочитать данные из сетевой очереди вывода. ============
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 8 - номер подфункции
* esi = указатель на буфер размером 1500 байт
Возвращаемое значение:
* eax = число прочитанных байт (в текущей реализации
либо 0 = нет данных, либо 1500)
* данные скопированы в буфер
Замечания:
* Эта функция предназначена только для медленных сетевых драйверов
(PPP, SLIP).
 
======================================================================
=========== Функция 52, подфункция 9 - получить gateway IP. ==========
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 9 - номер подфункции
Возвращаемое значение:
* eax = gateway IP (4 байта)
 
======================================================================
========= Функция 52, подфункция 10 - получить маску подсети. ========
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 10 - номер подфункции
Возвращаемое значение:
* eax = маска подсети
 
======================================================================
========= Функция 52, подфункция 11 - установить gateway IP. =========
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 11 - номер подфункции
* ecx = gateway IP (4 байта)
Возвращаемое значение:
* текущая реализация возвращает eax=11, но это может быть изменено
в будущих реализациях
 
======================================================================
======== Функция 52, подфункция 12 - установить маску подсети. =======
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 12 - номер подфункции
* ecx = маска подсети
Возвращаемое значение:
* текущая реализация возвращает eax=12, но это может быть изменено
в будущих версиях
 
======================================================================
============ Функция 52, подфункция 13 - получить DNS IP. ============
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 13 - номер подфункции
Возвращаемое значение:
* eax = DNS IP (4 байта)
 
======================================================================
=========== Функция 52, подфункция 14 - установить DNS IP. ===========
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 14 - номер подфункции
* ecx = DNS IP (4 байта)
Возвращаемое значение:
* текущая реализация возвращает eax=14, но это может быть изменено
в следующих версиях
 
======================================================================
====== Функция 52, подфункция 15 - получить локальный MAC-адрес. =====
======================================================================
Параметры:
* eax = 52 - номер функции
* ebx = 15 - номер подфункции
* ecx = 0 - читать первые 4 байта,
ecx = 4 - читать последние 2 байта
Возвращаемое значение:
* для ecx=0: eax = первые 4 байта MAC-адреса
* для ecx=4: ax = последние 2 байта MAC-адреса,
старшая половина eax разрушается
* для других ecx: eax = -1 как признак ошибки
 
======================================================================
============ Функция 53, подфункция 0 - открыть UDP-сокет. ===========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 0 - номер подфункции
* ecx = локальный порт (учитывается только младшее слово),
ecx = 0 - предоставить системе выбор локального порта
* edx = удалённый порт (учитывается только младшее слово)
* esi = удалённый IP
Возвращаемое значение:
* eax = -1 = 0xFFFFFFFF - ошибка; ebx разрушается
* eax = хэндл сокета (некоторое число, однозначно идентифицирующее
сокет и имеющее смысл только для системы) - успешно;
ebx разрушается
 
======================================================================
============ Функция 53, подфункция 1 - закрыть UDP-сокет. ===========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 1 - номер подфункции
* ecx = хэндл сокета
Возвращаемое значение:
* eax = -1 - неверный хэндл
* eax = 0 - успешно
* ebx разрушается
Замечания:
* Текущая реализация не закрывает автоматически все сокеты потока
при его завершении. В частности, не следует прибивать поток
с кучей открытых сокетов - будет утечка ресурсов.
 
======================================================================
============== Функция 53, подфункция 2 - опрос сокета. ==============
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 2 - номер подфункции
* ecx = хэндл сокета
Возвращаемое значение:
* eax = число полученных байт, 0 для неверного хэндла
* ebx разрушается
 
======================================================================
======== Функция 53, подфункция 3 - прочитать байт из сокета. ========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 3 - номер подфункции
* ecx = хэндл сокета
Возвращаемое значение:
* если нет принятых данных или указан неверный хэндл:
eax=0, bl=0, прочие байты ebx разрушаются
* если были принятые данные: eax=число оставшихся байт
(возможно, 0), bl=прочитанный байт, прочие байты ebx разрушаются
 
======================================================================
========== Функция 53, подфункция 4 - записать в UDP-сокет. ==========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 4 - номер подфункции
* ecx = хэндл сокета
* edx = число байт для записи
* esi = указатель на данные для записи
Возвращаемое значение:
* eax = 0xffffffff - ошибка (неверный хэндл или недостаточно памяти)
* eax = 0 - успешно
* ebx разрушается
Замечания:
* Число байт для записи не может превышать 1500-28, хотя
соответствующей проверки не делается.
 
======================================================================
============ Функция 53, подфункция 5 - открыть TCP-сокет. ===========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 5 - номер подфункции
* ecx = локальный порт (учитывается только младшее слово),
ecx = 0 - предоставить системе выбор локального порта
* edx = удалённый порт (учитывается только младшее слово)
* esi = удалённый IP
* edi = режим открытия: SOCKET_PASSIVE=0 или SOCKET_ACTIVE=1
Возвращаемое значение:
* eax = -1 = 0xFFFFFFFF - ошибка; ebx разрушается
* eax = хэндл сокета (некоторое число, однозначно идентифицирующее
сокет и имеющее смысл только для системы) - успешно;
ebx разрушается
 
======================================================================
====== Функция 53, подфункция 6 - получить состояние TCP-сокета. =====
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 6 - номер подфункции
* ecx = хэндл сокета
Возвращаемое значение:
* eax = 0 для неверного сокета или статус: одно из
* TCB_LISTEN = 1
* TCB_SYN_SENT = 2
* TCB_SYN_RECEIVED = 3
* TCB_ESTABLISHED = 4
* TCB_FIN_WAIT_1 = 5
* TCB_FIN_WAIT_2 = 6
* TCB_CLOSE_WAIT = 7
* TCB_CLOSING = 8
* TCB_LAST_ASK = 9
* TCB_TIME_WAIT = 10
* TCB_CLOSED = 11
* ebx разрушается
 
======================================================================
========== Функция 53, подфункция 7 - записать в TCP-сокет. ==========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 7 - номер подфункции
* ecx = хэндл сокета
* edx = число байт для записи
* esi = указатель на данные для записи
Возвращаемое значение:
* eax = 0xffffffff - ошибка (неверный хэндл или недостаточно памяти)
* eax = 0 - успешно
* ebx разрушается
Замечания:
* Число байт для записи не может превышать 1500-40,
хотя соответствующей проверки не делается.
 
======================================================================
============ Функция 53, подфункция 8 - закрыть TCP-сокет. ===========
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 8 - номер подфункции
* ecx = хэндл сокета
Возвращаемое значение:
* eax = -1 - ошибка (неверный хэндл или
недостаточно памяти для пакета закрытия сокета)
* eax = 0 - успешно
* ebx разрушается
Замечания:
* Текущая реализация не закрывает автоматически все сокеты потока
при его завершении. В частности, не следует прибивать поток
с кучей открытых сокетов - будет утечка ресурсов.
 
======================================================================
== Функция 53, подфункция 9 - проверить, свободен ли локальный порт. =
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 9 - номер подфункции
* ecx = номер локального порта (используются только младшие 16 бит)
Возвращаемое значение:
* eax = 0 - порт используется
* eax = 1 - порт свободен
* ebx разрушается
 
======================================================================
==== Функция 53, подфункция 10 - получить статус кабеля Ethernet. ====
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 10 - номер подфункции
Возвращаемое значение:
* al = -1 - драйвер сетевой карты не загружен или
не поддерживает эту функцию
* al = 0 - кабель не подключён
* al = 1 - кабель подключён
* ebx разрушается
Замечания:
* Текущая реализация ядра поддерживает эту функцию
только для сетевых карт RTL8139.
 
======================================================================
==== Функция 53, подфункция 11 - прочитать данные сетевого стека. ====
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 11 - номер подфункции
* ecx = хэндл сокета
* edx = указатель на буфер
* esi = число байт для чтения;
* esi = 0 - читать все данные (максимум 4096 байт)
Возвращаемое значение:
* eax = число прочитанных байт (0 при неверном хэндле)
* ebx разрушается
 
======================================================================
Функция 53, подфункция 255 - отладочная информация сетевого драйвера.
======================================================================
Параметры:
* eax = 53 - номер функции
* ebx = 255 - номер подфункции
* ecx = тип запрашиваемой информации (смотри ниже)
Возвращаемое значение:
* eax = запрошенная информация
* ebx разрушается
Возможные значения ecx:
* 100: длина очереди 0 (empty queue)
* 101: длина очереди 1 (ip-out queue)
* 102: длина очереди 2 (ip-in queue)
* 103: длина очереди 3 (net1out queue)
* 200: число элементов в таблице ARP
* 201: размер таблицы ARP (в элементах) (20 в текущей версии)
* 202: прочитать элемент edx таблицы ARP во временный буфер, откуда
берут информацию 5 последующих типов;
в этом случае eax неопределён
* 203: IP-адрес, запомненный типом 202
* 204: старшее dword MAC-адреса, запомненного типом 202
* 205: младшее word MAC-адреса, запомненного типом 202
* 206: слово статуса, запомненное типом 202
* 207: слово ttl, запомненное типом 202
* 2: общее число полученных IP-пакетов
* 3: общее число переданных IP-пакетов
* 4: общее число сдампленных полученных пакетов
* 5: общее число полученных ARP-пакетов
* 6: статус драйвера пакетов, 0=неактивен,
ненулевое значение=активен
 
======================================================================
====================== Функция 55, подфункция 55 =====================
========== Начать проигрывать данные на встроенном спикере. ==========
======================================================================
4631,6 → 4246,213
* функция не возвращает значения
 
======================================================================
=================== Функция 74, подфункция -1 ========================
=========== Получить количество активных сетевых устройств. ==========
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = -1 - номер подфункции
Возвращаемое значение:
* eax = количество активных сетевых устройств
 
======================================================================
==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 0 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = тип устройства
 
======================================================================
==== Функция 74, подфункция 1, Получить имя сетевого устройства. =====
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 1 - номер подфункции
* bh = номер устройства
* ecx = указатель на буфера - 64 байт
Возвращаемое значение:
* eax = -1 для ошибки
* В случае успеха в буфер записывается имя сетевого устройства
 
======================================================================
======= Функция 74, подфункция 2, Сброс сетевого устройства. =========
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 2 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = -1 для ошибки
 
======================================================================
====== Функция 74, подфункция 3, Остановить сетевое устройство. ======
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = 3 - номер подфункции
* bh = номер устройства
Возвращаемое значение:
* eax = -1 для ошибки
 
======================================================================
======= Функция 75, подфункция 0, Open socket (Открыть сокет). =======
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 0 - номер подфункции
* ecx = домен
* edx = тип
* esi = протокол
Возвращаемое значение:
* eax = номер сокета, -1 для ошибки
* ebx = код ошибки
 
======================================================================
======= Функция 75, подфункция 1, Close socket (Закрыть сокет). ======
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 1 - номер подфункции
* ecx = номер сокета
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
 
======================================================================
============= Функция 75, подфункция 2, Bind (Привязка). =============
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 2 - номер подфункции
* ecx = номер сокета
* edx = указатель на структуру sockaddr
* esi = длина структуры sockaddr
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
 
======================================================================
============ Функция 75, подфункция 3, Listen (Слушать). =============
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 3 - номер подфункции
* ecx = номер сокета
* edx = backlog (возвращаемый лог)
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
 
======================================================================
========== Функция 75, подфункция 4, Connect (Соединение). ===========
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 4 - номер подфункции
* ecx = номер сокета
* edx = указатель на структуру sockaddr
* esi = длина структуры sockaddr
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
 
======================================================================
=========== Функция 75, подфункция 5, Accept (Соглашение). ===========
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 5 - номер подфункции
* ecx = номер сокета
* edx = указатель на структуру sockaddr
* esi = длина структуры sockaddr
Возвращаемое значение:
* eax = номер сокета из принятого сокета, -1 для ошибки
* ebx = код ошибки
 
======================================================================
============= Функция 75, подфункция 6, Send (Послать). ==============
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 6 - номер подфункции
* ecx = номер сокета
* edx = указатель на буфер
* esi = длина буфера
* edi = флаги
Возвращаемое значение:
* eax = количество скопированных байтов, -1 для ошибки
* ebx = код ошибки
 
======================================================================
============ Функция 75, подфункция 7, Receive (Получить). ===========
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 7 - номер подфункции
* ecx = номер сокета
* edx = указатель на буфер
* esi = длина буфера
* edi = флаги
Возвращаемое значение:
* eax = количество скопированных байтов, -1 для ошибки
* ebx = код ошибки
 
======================================================================
= Функция 75, подфункция 8, Set socket options (Задать опции сокета) =
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 8 - номер подфункции
* ecx = номер сокета
* edx = указатель на optstruct
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
Замечания:
 
Optstruct: dd level
dd optionname
dd optlength
db options...
 
======================================================================
= Функция 75, подфункция 9, Get socket options(Получить опции сокета)
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 9 - номер подфункции
* ecx = номер сокета
* edx = указатель на optstruct
Возвращаемое значение:
* eax = -1 для ошибки
* ebx = код ошибки
Замечания:
 
Optstruct: dd level
dd optionname
dd optlength
db options...
 
======================================================================
= Функция 75, подфункция 10, Get socketpair (Получить парный сокет). =
======================================================================
Параметры:
* eax = 75 - номер функции
* bl = 10 - номер подфункции
Возвращаемое значение:
* eax = socketnum1, -1 для ошибки
* ebx = socketnum2, код ошибки в случае ошибки
Замечания:
 
Optstruct: dd level
dd optionname
dd optlength
db options...
 
======================================================================
========== Функция -1 - завершить выполнение потока/процесса =========
======================================================================
Параметры: