/kernel/trunk/docs/sysfuncr.txt |
---|
2577,8 → 2577,6 |
* 3 = RAW |
* 4 и выше зарезервировано |
* +8: более детально смотрите файл clipboard_container_rus.txt |
* Функция должна использоваться совместно с 68.11. Приложение должно |
предварительно проинициализировать локальную кучу вызовом 68.11. |
---------------------- Константы для регистров: ---------------------- |
eax - SF_CLIPBOARD (54) |
2991,10 → 2989,8 |
* eax = 1 - недостаточно памяти |
Замечания: |
* Есть другой способ выделения/освобождения динамической памяти - |
подфункции 11, 12, 13 функции 68. |
* Функция не может использоваться совместно с 68.11, 68.12, 68.13. |
Вызов функции будет игнорироваться, если приложение создаст |
локальную кучу вызовом 68.11. |
подфункции 12, 13 и 20 функции 68, но после их использования будет |
создана куча процесса и вызов функции 64 будет игнорироваться. |
---------------------- Константы для регистров: ---------------------- |
eax - SF_MEMORY_RESIZE (64) |
3296,7 → 3292,7 |
eax - SF_SYS_MISC (68) |
ebx - SSF_WRITE_MSR (4) |
====================================================================== |
===== Функция 68, подфункция 11 - инициализировать кучу процесса. ==== |
= Функция 68, подфункция 11 - вручную инициализировать кучу процесса = |
====================================================================== |
Параметры: |
* eax = 68 - номер функции |
3306,10 → 3302,9 |
* иначе размер созданной кучи |
Замечания: |
* Вызов функции инициализирует кучу, из которой впоследствии можно |
выделять и освобождать блоки памяти подфункциями 12 и 13. |
выделять и освобождать блоки памяти подфункциями 12, 13 и 20. |
* Если куча уже создана, функция вернёт размер существующей кучи. |
Размер кучи равен размеру всей свободной памяти приложения. |
* При повторном вызове функции тем же процессом функция вернёт |
размер существующей кучи. |
* После создания кучи вызовы функции 64 игнорируются. |
---------------------- Константы для регистров: ---------------------- |
3325,8 → 3320,6 |
Возвращаемое значение: |
* eax = указатель на выделенный блок |
Замечания: |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
* Функция выделяет целое число страниц (4 Кб) так, что фактический |
размер выделенного блока больше или равен запрошенному. |
3454,8 → 3447,6 |
Возвращаемое значение: |
* eax = указатель на перераспределённый блок, 0 при ошибке |
Замечания: |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
* Функция выделяет целое число страниц (4 Кб) так, что фактический |
размер выделенного блока больше или равен запрошенному. |
* Если edx=0, то вызов функции эквивалентен выделению памяти |
3519,8 → 3510,6 |
* E_NOMEM = 30 |
* E_PARAM = 33 |
Замечания: |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
* Если создаётся новая область, то флаги доступа устанавливают |
максимальные права доступа для остальных процессов. Попытка |
открытия другим потоком с неразрешёнными правами провалится |
/kernel/trunk/docs/sysfuncs.txt |
---|
2548,9 → 2548,6 |
* eax = if successful - pointer to a memory with data |
* eax = 1 - error |
* eax = -1 - main list area not found |
Remarks: |
* The function must be used in conjunction with 68.11. The |
application must pre-initialize the local heap by calling 68.11. |
---------------------- Constants for registers: ---------------------- |
eax - SF_CLIPBOARD (54) |
2958,10 → 2955,8 |
* eax = 1 - not enough memory |
Remarks: |
* There is another way to dynamically allocate/free memory - |
subfunctions 11, 12, 13 of function 68. |
* The function cannot be used together with 68.11, 68.12, 68.13. |
The function call will be ignored after creation of process heap |
with function 68.11. |
subfunctions 12, 13 and 20 of function 68, but after creation |
of the process heap 64 function call will be ignored. |
---------------------- Constants for registers: ---------------------- |
eax - SF_MEMORY_RESIZE (64) |
3263,7 → 3258,7 |
eax - SF_SYS_MISC (68) |
ebx - SSF_WRITE_MSR (4) |
====================================================================== |
======= Function 68, subfunction 11 - initialize process heap. ======= |
=== Function 68, subfunction 11 - manually initialize process heap === |
====================================================================== |
Parameters: |
* eax = 68 - function number |
3272,11 → 3267,10 |
* eax = 0 - failed |
* otherwise size of created heap |
Remarks: |
* The function call initializes heap, from which one can in future |
allocate and free memory blocks with subfunctions 12 and 13. |
* The function call initializes heap for subfunctions 12, 13 and 20. |
* If the process heap is already created, this function will return |
the size of the existing heap. |
Heap size is equal to total amount of free application memory. |
* The second function call from the same process results in |
returning the size of the existing heap. |
* After creation of the heap calls to function 64 will be ignored. |
---------------------- Constants for registers: ---------------------- |
3292,8 → 3286,6 |
Returned value: |
* eax = pointer to the allocated block |
Remarks: |
* Before this call one must initialize process heap by call to |
subfunction 11. |
* The function allocates an integer number of pages (4 Kb) in such |
way that the real size of allocated block is more than or equal to |
requested size. |
3421,8 → 3413,6 |
Returned value: |
* eax = pointer to the reallocated block, 0 = error |
Remarks: |
* Before this call one must initialize process heap by call to |
subfunction 11. |
* The function allocates an integer number of pages (4 Kb) in such |
way that the real size of allocated block is more than or equal to |
requested size. |
3485,8 → 3475,6 |
* E_NOMEM = 30 |
* E_PARAM = 33 |
Remarks: |
* Before this call one must initialize process heap by call to |
subfunction 11. |
* If a new area is created, access flags set maximal rights |
for other processes. An attempt from other process to open |
with denied rights will fail with error code E_ACCESS. |