Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 886 → Rev 887

/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