/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 |
/kernel/branches/kolibri_pe/drivers/imports.inc |
---|
45,8 → 45,8 |
ReleasePages,\ |
\ |
FreeKernelSpace,\ |
HeapAlloc,\ |
KernelFree,\ |
MemAlloc, \ |
MemFree, \ |
UserAlloc,\ |
UserFree,\ |
Kmalloc,\ |
/kernel/branches/kolibri_pe/drivers/infinity.asm |
---|
83,7 → 83,7 |
mov ecx, 16*512 |
mov edx, PG_SW |
call HeapAlloc |
call MemAlloc |
test eax, eax |
jz .out_of_mem |
mov [mix_buff], eax |
426,7 → 426,7 |
add ecx, 128 ;resampler required |
mov [eax+STREAM.in_size], ecx |
mov edx, PG_SW |
call HeapAlloc |
call MemAlloc |
mov edi, [str] |
mov [edi+STREAM.in_base], eax |
513,9 → 513,11 |
mov [ecx+STREAM.str_fd], ebx |
popf |
stdcall KernelFree, [eax+STREAM.in_base] |
mov ecx, [eax+STREAM.in_base] |
call MemFree |
mov eax, [.handle] |
stdcall KernelFree, [eax+STREAM.out_base] |
mov ecx, [eax+STREAM.out_base] |
call MemFree |
pop eax ;restore stack |
call DestroyObject ;eax= stream |
/kernel/branches/kolibri_pe/drivers/sis.asm |
---|
511,7 → 511,7 |
mov ecx, 0x10000 |
mov edx, PG_SW |
call HeapAlloc |
call MemAlloc |
mov [ctrl.buffer], eax |
mov edi, eax |
/kernel/branches/kolibri_pe/drivers/sound.asm |
---|
533,7 → 533,7 |
mov ecx, 0x10000 |
mov edx, PG_SW |
call HeapAlloc |
call MemAlloc |
mov [ctrl.buffer], eax |
mov edi, eax |
/kernel/branches/kolibri_pe/fs/ntfs.inc |
---|
168,12 → 168,12 |
@@: |
; $MFT and $MFTMirr invalid! |
.fail_free_frs: |
push [ntfs_data.frs_buffer] |
call kernel_free |
mov ecx, [ntfs_data.frs_buffer] |
call @mem_free@4 |
jmp problem_fat_dec_count |
.fail_free_mft: |
push [ntfs_data.mft_retrieval] |
call kernel_free |
mov ecx, [ntfs_data.mft_retrieval] |
call @mem_free@4 |
jmp .fail_free_frs |
.mftok: |
; read $MFT table retrieval information |
259,9 → 259,9 |
mov ecx, [ntfs_data.mft_retrieval_size] |
add ecx, ecx |
rep movsd |
push [ntfs_data.mft_retrieval] |
mov ecx, [ntfs_data.mft_retrieval] |
mov [ntfs_data.mft_retrieval], eax |
call kernel_free |
call @mem_free@4 |
mov eax, [ntfs_data.mft_retrieval_size] |
.ok: |
shl eax, 3 |
980,8 → 980,8 |
@@: |
; reallocate |
push eax |
push [ntfs_data.cur_index_buf] |
call kernel_free |
mov ecx, [ntfs_data.cur_index_buf] |
call @mem_free@4 |
pop ecx |
mov [ntfs_data.cur_index_size], ecx |
mov edx, PG_SW |
1013,10 → 1013,10 |
rep movsd |
mov esi, eax |
mov [ntfs_data.cur_index_size], ebp |
push esi ebp |
push [ntfs_data.cur_index_buf] |
call kernel_free |
pop ebp esi |
mov ecx, [ntfs_data.cur_index_buf] |
call @mem_free@4 |
mov [ntfs_data.cur_index_buf], esi |
.ok2: |
add esi, 10h |
1327,8 → 1327,8 |
@@: |
; reallocate |
push eax |
push [ntfs_data.cur_index_buf] |
call kernel_free |
mov ecx, [ntfs_data.cur_index_buf] |
call @mem_free@4 |
pop ecx |
mov [ntfs_data.cur_index_size], ecx |
mov edx, PG_SW |
1365,10 → 1365,10 |
rep movsd |
mov esi, eax |
mov [ntfs_data.cur_index_size], ebp |
push esi ebp |
push [ntfs_data.cur_index_buf] |
call kernel_free |
pop ebp esi |
mov ecx, [ntfs_data.cur_index_buf] |
call @mem_free@4 |
mov [ntfs_data.cur_index_buf], esi |
.ok2: |
add esi, 10h |
/kernel/branches/kolibri_pe/gui/skincode.inc |
---|
27,8 → 27,10 |
mov esi, eax |
mov edi, skin_data |
rep movsd |
stdcall kernel_free, eax |
mov ecx, eax |
call @mem_free@4 |
call parse_skin_data |
xor eax, eax |
ret |
37,9 → 39,10 |
inc eax |
ret |
.noskin: |
stdcall kernel_free, eax |
push 2 |
pop eax |
mov ecx, eax |
call @mem_free@4 |
mov eax, 2 |
ret |
struct SKIN_HEADER |
/kernel/branches/kolibri_pe/kernel.asm |
---|
142,6 → 142,7 |
extrn _init_mm |
extrn @core_alloc@4 |
extrn @core_free@4 |
extrn @init_heap@8 |
extrn @find_large_md@4 |
2280,7 → 2281,10 |
pushad |
; return memory for old background |
stdcall kernel_free, [img_background] |
mov ecx, [img_background] |
call @mem_free@4 |
; calculate RAW size |
xor eax,eax |
inc eax |
/kernel/branches/kolibri_pe/video/cursors.inc |
---|
366,8 → 366,8 |
stdcall load_file, [src] |
test eax, eax |
mov [src], eax |
jz .fail |
mov [src], eax |
@@: |
push ebx |
push esi |
383,7 → 383,9 |
cmp word [flags], LOAD_FROM_FILE |
jne .exit |
stdcall kernel_free, [src] |
mov ecx, [src] |
call @mem_free@4 |
.exit: |
pop edi |
pop esi |
436,7 → 438,8 |
destroy_cursor: |
push eax |
stdcall kernel_free, [eax+CURSOR.base] |
mov ecx, [eax+CURSOR.base] |
call @mem_free@4 |
pop eax |
call destroy_kernel_object |