Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 10001 → Rev 10002

/kernel/trunk/docs/sysfuncr.txt
2550,11 → 2550,12
---------------------- Константы для регистров: ----------------------
eax - SF_SET_WINDOW_SHAPE (50)
======================================================================
===================== Функция 51 - создать поток. ====================
===================== Функция 51, подфункция 1 =======================
========================== Создать поток =============================
======================================================================
Параметры:
* eax = 51 - номер функции
* ebx = 1 - единственная подфункция
* ebx = 1 - номер подфункции
* ecx = адрес точки входа потока (начальный eip)
* edx = указатель стэка потока (начальный esp)
Возвращаемое значение:
2564,6 → 2565,47
---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_THREAD (51)
======================================================================
===================== Функция 51, подфункция 2 =======================
=================== Получить номер слота потока ======================
======================================================================
Параметры:
* eax = 51 - номер функции
* ebx = 2 - номер подфункции
Возвращаемое значение:
* eax = номер слота потока
 
======================================================================
===================== Функция 51, подфункция 3 =======================
==================== Получить приоритет потока =======================
======================================================================
Параметры:
* eax = 51 - номер функции
* ebx = 3 - номер подфункции
* ecx = номер слота потока или -1 (текущий поток)
Возвращаемое значение:
* eax = -1 - ошибка (неверный номер слота потока или поток завершен)
* иначе eax = номер приоритета потока
Замечания:
* Приоритет потока имеет диапазон значений от 0 до 255.
Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию при создании потока.
======================================================================
===================== Функция 51, подфункция 4 =======================
=================== Установить приоритет потока ======================
======================================================================
Параметры:
* eax = 51 - номер функции
* ebx = 4 - номер подфункции
* ecx = номер слота потока или -1 (текущий поток)
* edx = приоритет потока
Возвращаемое значение:
* eax = -1 - ошибка (неверный номер слота потока или поток завершен)
* иначе eax = старое значение приоритета потока
Замечания:
* Приоритет потока имеет диапазон значений от 0 до 255.
Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию при создании потока.
======================================================================
====================== Функция 54, подфункция 0 ======================
============== Узнать количество слотов в буфере обмена. =============
======================================================================
3599,11 → 3641,16
подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также возлагается на обработчик пользователя.
Внимание:
Если пользовательский обработчик обрабатывает исключение переполнения стека (#SS), то должен быть установлен адрес резервного стека в заголовке программы (см. структуру APP_HEADER_01_ taskman.inc).
В этот резервный стек будут записаны дополнительные данные (см. структуру EXCEPT_STACK sys32.inc).
Пользовательский бработчик,при завершении обработки этого исключения, должен дополнительно обнулить бит занятости (бит номер 0) резервного стека в поле LockAccess структуры EXCEPT_STACK.
1) Если пользовательский обработчик обрабатывает исключение переполнения стека (#SS), то должен быть установлен стартовый адрес резервного стека в регистре ESI.
При возникновении исключения (#SS), в этот резервный стек будут записаны дополнительные данные (см. структуру EXCEPT_STACK sys32.inc).
При завершении обработки этого исключения, пользовательский обработчик должен дополнительно обнулить бит занятости (бит номер 0) резервного стека в поле LockAccess структуры EXCEPT_STACK.
2) Вы можете использовать режим "контролируемое исключение" для проверок на корректность адресов памяти при считывании\записи данных.
Для этого:
- В регистр ESI заносится адрес, куда должно перейти выполнение кода при возникновении исключения.
- В регистр EDI заносится сигнатура - текст 'EXPT'.
 
 
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_SET_EXCEPTION_HANDLER (24)