/kernel/trunk/core/heap.inc |
---|
596,7 → 596,7 |
align 4 |
proc user_alloc stdcall, alloc_size:dword |
push ebx esi edi |
mov ebx, [current_process] |
call init_heap |
lea ecx, [ebx+PROC.heap_lock] |
call mutex_lock |
mov ecx, [alloc_size] |
/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 - номер функции |
3451,8 → 3447,6 |
Возвращаемое значение: |
* eax = указатель на перераспределённый блок, 0 при ошибке |
Замечания: |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
* Функция выделяет целое число страниц (4 Кб) так, что фактический |
размер выделенного блока больше или равен запрошенному. |
* Если edx=0, то вызов функции эквивалентен выделению памяти |
3516,8 → 3510,6 |
* E_NOMEM = 30 |
* E_PARAM = 33 |
Замечания: |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
* Если создаётся новая область, то флаги доступа устанавливают |
максимальные права доступа для остальных процессов. Попытка |
открытия другим потоком с неразрешёнными правами провалится |
3627,8 → 3619,6 |
* edx = размер загруженного файла или 0 |
Примечания: |
* функция загружает и, при необходимости, распаковывает файл (kunpack) |
* Предварительно следует инициализировать кучу процесса вызовом |
подфункции 11. |
---------------------- Константы для регистров: ---------------------- |
eax - SF_SYS_MISC (68) |
/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) |
2960,9 → 2957,6 |
* There is another way to dynamically allocate/free memory - |
subfunctions 12, 13 and 20 of function 68, but after creation |
of the process heap 64 function call will be ignored. |
* 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. |
---------------------- Constants for registers: ---------------------- |
eax - SF_MEMORY_RESIZE (64) |
3264,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 |
3419,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. |
3483,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. |
3594,8 → 3584,6 |
* edx = size of the loaded file, or zero |
Remarks: |
* function loads file and unpacks, if necessary |
* Before this call one must initialize process heap by call to |
subfunction 11. |
---------------------- Constants for registers: ---------------------- |
eax - SF_SYS_MISC (68) |