/kernel/branches/kolibri_pe/core/dll.inc |
---|
558,7 → 558,7 |
; ebx= size of file |
; |
; warging |
; You mast call kernel_free() to delete each file |
; You mast call mem_free() to delete each file |
; loaded by the load_file() function |
align 4 |
636,7 → 636,8 |
pop esi |
ret |
.cleanup: |
stdcall kernel_free, [file] |
mov ecx, [file] |
call @mem_free@4 |
.fail: |
xor eax, eax |
xor ebx, ebx |
826,12 → 827,10 |
mov dword [edi], '.obj' |
mov byte [edi+4], 0 |
stdcall load_file, edx |
mov [coff], eax |
test eax, eax |
jz .exit |
mov [coff], eax |
movzx ebx, [eax+CFH.nSections] |
lea edx, [eax+20] |
xor ecx, ecx |
847,6 → 846,7 |
mov edx, PG_SW |
call @mem_alloc@8 |
test eax, eax |
mov [img_base], eax |
jz .fail |
mov [img_base], eax |
923,7 → 923,8 |
stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szSTART |
mov [start], eax |
stdcall kernel_free, [coff] |
mov ecx, [coff] |
call @mem_free@4 |
mov ebx, [start] |
stdcall ebx, DRV_ENTRY |
930,7 → 931,8 |
test eax, eax |
jnz .ok |
stdcall kernel_free, [img_base] |
mov ecx, [img_base] |
call @mem_free@4 |
xor eax, eax |
ret |
.ok: |
961,9 → 963,11 |
mov esi, msg_CR |
call sys_msg_board_str |
.cleanup: |
stdcall kernel_free,[img_base] |
mov ecx, [img_base] |
call @mem_free@4 |
.fail: |
stdcall kernel_free, [coff] |
mov ecx, [coff] |
call @mem_free@4 |
.exit: |
xor eax, eax |
ret |
1065,7 → 1069,9 |
stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szEXPORTS |
mov [exports], eax |
stdcall kernel_free, [coff] |
mov ecx, [coff] |
call @mem_free@4 |
mov eax, [exports] |
ret |
.fail: |
/kernel/branches/kolibri_pe/core/exports.inc |
---|
41,8 → 41,8 |
szAllocKernelSpace db 'AllocKernelSpace',0 |
szFreeKernelSpace db 'FreeKernelSpace',0 |
szHeapAlloc db 'HeapAlloc',0 |
szKernelFree db 'KernelFree',0 |
szMemAlloc db 'MemAlloc',0 |
szMemFree db 'MemFree',0 |
szUserAlloc db 'UserAlloc',0 |
szUserFree db 'UserFree',0 |
szKmalloc db 'Kmalloc',0 |
112,8 → 112,8 |
dd szReleasePages , release_pages |
dd szFreeKernelSpace , free_kernel_space ;stdcall |
dd szHeapAlloc , @mem_alloc@8 ;fastcall |
dd szKernelFree , kernel_free ;stdcall |
dd szMemAlloc , @mem_alloc@8 ;fastcall |
dd szMemFree , @mem_free@4 ;fastcall |
dd szUserAlloc , user_alloc ;stdcall |
dd szUserFree , user_free ;stdcall |
dd szKmalloc , malloc |
/kernel/branches/kolibri_pe/core/heap.inc |
---|
8,16 → 8,6 |
$Revision$ |
struc MEM_BLOCK |
{ .next_block dd ? |
.prev_block dd ? ;+4 |
.list_fd dd ? ;+8 |
.list_bk dd ? ;+12 |
.base dd ? ;+16 |
.size dd ? ;+20 |
.flags dd ? ;+24 |
.handle dd ? ;+28 |
} |
MEM_LIST_OFFSET equ 8 |
FREE_BLOCK equ 4 |
24,21 → 14,7 |
USED_BLOCK equ 8 |
DONT_FREE_BLOCK equ 10h |
virtual at 0 |
MEM_BLOCK MEM_BLOCK |
end virtual |
MEM_BLOCK_SIZE equ 8*4 |
block_next equ MEM_BLOCK.next_block |
block_prev equ MEM_BLOCK.prev_block |
list_fd equ MEM_BLOCK.list_fd |
list_bk equ MEM_BLOCK.list_bk |
block_base equ MEM_BLOCK.base |
block_size equ MEM_BLOCK.size |
block_flags equ MEM_BLOCK.flags |
align 4 |
proc free_kernel_space stdcall uses ebx ecx edx esi edi, base:dword |
46,21 → 22,6 |
endp |
align 4 |
proc kernel_free stdcall, base:dword |
ret |
endp |
restore block_next |
restore block_prev |
restore block_list |
restore block_base |
restore block_size |
restore block_flags |
;;;;;;;;;;;;;; USER ;;;;;;;;;;;;;;;;; |
HEAP_TOP equ 0x5FC00000 |
/kernel/branches/kolibri_pe/core/peload.inc |
---|
38,9 → 38,13 |
test eax, eax |
jnz .cleanup |
stdcall kernel_free, [base] |
mov ecx, [base] |
call @mem_free@4 |
.cleanup: |
stdcall kernel_free, [image] |
mov ecx, [image] |
call @mem_free@4 |
mov eax, [entry] |
ret |
.fail: |
284,7 → 288,6 |
create_ring_buffer, 'CreateRingBuffer', \ ; stdcall |
destroy_kernel_object, 'DestroyObject', \ |
free_kernel_space, 'FreeKernelSpace', \ ; stdcall |
kernel_free, 'KernelFree', \ ; stdcall |
malloc, 'Kmalloc', \ |
free, 'Kfree', \ |
map_io_mem, 'MapIoMem', \ ; stdcall |
/kernel/branches/kolibri_pe/core/taskman.inc |
---|
235,7 → 235,8 |
call set_cr3 |
.err: |
.err_hdr: |
stdcall kernel_free,[file_base] |
mov ecx, [file_base] |
call @mem_free@4 |
.err_file: |
xor eax, eax |
mov [application_table_status],eax |
/kernel/branches/kolibri_pe/core/v86.inc |
---|
72,7 → 72,7 |
mov edi, eax |
add eax, 1000h |
push eax |
call get_pg_addr |
sub eax, OS_BASE |
or al, PG_UW |
stosd |
; ...and also copy system page tables |
143,7 → 143,11 |
; destroys: eax, ebx, ecx, edx (due to free) |
v86_destroy: |
push eax |
stdcall kernel_free, [eax+V86_machine.pagedir] |
mov ecx, [eax+V86_machine.pagedir] |
sub ecx, OS_BASE |
call @core_free@4 |
pop eax |
jmp free |