diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 26af2ca2d..cc875891d 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -2521,7 +2521,8 @@ dword-значение цвета 0x00RRGGBB * иначе eax = номер приоритета потока Замечания: * Приоритет потока имеет диапазон значений от 0 до 255. - Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию при создании потока. + Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию + при создании потока. ====================================================================== ===================== Функция 51, подфункция 4 ======================= @@ -2537,7 +2538,8 @@ dword-значение цвета 0x00RRGGBB * иначе eax = старое значение приоритета потока Замечания: * Приоритет потока имеет диапазон значений от 0 до 255. - Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию при создании потока. + Значение 0 - наивысший приоритет потока, устанавливаемый по умолчанию + при создании потока. ====================================================================== ====================== Функция 54, подфункция 0 ====================== @@ -3572,18 +3574,25 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); приостановка с уведомлением отлаживающего приложения иначе. * После завершения критических действий в обработчике пользователя восстановление бита маски данного исключения можно сделать - подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также возлагается на обработчик пользователя. - + подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также + возлагается на обработчик пользователя. + Внимание: - 1) Если пользовательский обработчик обрабатывает исключение переполнения стека (#SS), то должен быть установлен стартовый адрес резервного стека в регистре ESI. - При возникновении исключения (#SS), в этот резервный стек будут записаны дополнительные данные (см. структуру EXCEPT_STACK sys32.inc). - При завершении обработки этого исключения, пользовательский обработчик должен дополнительно обнулить бит занятости (бит номер 0) резервного стека в поле LockAccess структуры EXCEPT_STACK. - - 2) Вы можете использовать режим "контролируемое исключение" для проверок на корректность адресов памяти при считывании\записи данных. - Для этого: - - В регистр ESI заносится адрес, куда должно перейти выполнение кода при возникновении исключения. - - В регистр EDI заносится сигнатура - текст 'EXPT'. - + 1) Если пользовательский обработчик обрабатывает исключение + переполнения стека (#SS), то должен быть установлен стартовый + адрес резервного стека в регистре ESI. + При возникновении исключения (#SS), в этот резервный стек будут + записаны дополнительные данные (см. структуру EXCEPT_STACK в sys32.inc). + При завершении обработки этого исключения, пользовательский обработчик + должен дополнительно обнулить бит занятости (бит номер 0) резервного + стека в поле LockAccess структуры EXCEPT_STACK. + + 2) Вы можете использовать режим "контролируемое исключение" для + проверки на корректность адресов памяти при считывании\записи данных. + Для этого: + - В регистр ESI заносится адрес, куда должно перейти выполнение кода + при возникновении исключения. + - В регистр EDI заносится сигнатура - текст 'EXPT'. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 140c20662..f25d9b6e8 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -3506,6 +3506,22 @@ Remarks: Also user handler is responsible for clearing exceptions flags in FPU and/or SSE. +Attention: + 1) If the user handler gets a stack overflow exception (#SS), then the + starting address of the backup stack must be set in the ESI register. + If an exception (#SS) occurs, additional data will be written to this + reserve stack (see the EXCEPT_STACK structure in sys32.inc). + Upon completion of processing of this exception, the user handler must + additionally reset the busy bit (bit number 0) of the reserve stack in + the LockAccess field of the EXCEPT_STACK structure. + + 2) You can use the "controlled exception" mode to check the correctness + of memory addresses when reading/writing data. + For the cases like this: + - In the ESI register, the address where code execution should go + when an exception occurs is entered. + - The signature - the text 'EXPT' - is entered in the EDI register. + ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_SET_EXCEPTION_HANDLER (24)