Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 38 → Rev 39

/kernel/trunk/core/memmanag.inc
28,7 → 28,7
MEM_cli_count rd 1
MEM_cli_prev rd 1
MEM_FreeSpace rd 1
MEM_AllSpace rd 1
; MEM_AllSpace rd 1
endg
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;MEM_Init
105,7 → 105,7
shr edi,12
sub edi,ebx ;edi=-free space
sub [MEM_FreeSpace],edi
sub [MEM_AllSpace],edi
; sub [MEM_AllSpace],edi
 
mov [eax],eax
add [eax],edx ;first 4 bytes - pointer to first free page
291,7 → 291,7
;; eax - 1 success
;; eax - 0 failed
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
if used MEM_Free_Page
if (used MEM_Free_Page) | (used MEM_Free_Page_Linear)
MEM_Free_Page:
test eax,eax
jz MEM_Free_Page_Zero
365,9 → 365,9
if used MEM_Free_Page_Linear
MEM_Free_Page_Linear:
test eax,eax
jz MEM_Free_Page_Linear_Zero
jz MEM_Free_Page_Zero
test eax,0xFFF
jnz MEM_Free_Page_Linear_Not_Aligned
jnz MEM_Free_Page_Not_Aligned
push ebx
push ecx
push edx
380,7 → 380,7
sub eax,[MEM_heap_block+ecx+.heap_linear_address]
js MEM_Free_Page_Linear_Heap_loopnext
cmp eax,[MEM_heap_block+ecx+.heap_block_size]
jl MEM_Free_Page_Linear_Heap_loopend
jl MEM_Free_Page_Heap_loopend
MEM_Free_Page_Linear_Heap_loopnext:
add eax,[MEM_heap_block+ecx+.heap_linear_address]
sub ecx,16
387,52 → 387,7
jns MEM_Free_Page_Linear_Heap_loop
xor eax,eax
inc eax
jmp MEM_Free_Page_Linear_ret
MEM_Free_Page_Linear_Heap_loopend:
mov ecx,[MEM_heap_block+ecx+.heap_linear_address]
mov ebx,eax
add eax,ecx
shr ebx,10
mov edx,[ecx+.range_info+ebx]
test edx,0x80000000
jnz MEM_Free_Page_Linear_Bucket
test dx,dx
jz MEM_Free_Page_Linear_Error
dec word [ecx+.range_info+ebx]
jnz MEM_Free_Page_Linear_OK
MEM_Free_Page_Linear_Bucket:
mov edx,[ecx]
mov [eax],edx
mov dword [eax+4],0
mov [ecx],eax
test edx,edx
jz MEM_Free_Page_No_Next
mov [edx+4],eax
MEM_Free_Page_No_Next:
mov dword [ecx+.range_info+ebx],0
inc [MEM_FreeSpace]
MEM_Free_Page_Linear_OK:
xor eax, eax
inc eax
MEM_Free_Page_Linear_ret:
call MEM_Heap_UnLock
pop edx
pop ecx
pop ebx
ret
MEM_Free_Page_Linear_Error:
xor eax,eax
jmp MEM_Free_Page_Linear_ret
MEM_Free_Page_Linear_Zero:
inc eax
ret
MEM_Free_Page_Linear_Not_Aligned:
xor eax,eax
ret
jmp MEM_Free_Page_ret
end if
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;MEM_Alloc_Pages
/kernel/trunk/kernel.asm
2258,8 → 2258,10
no_get_free_space:
cmp eax,17
jnz no_get_all_space
mov eax,[MEM_AllSpace]
shl eax,2
mov eax,[0xFE8C]
shr eax,10
; mov eax,[MEM_AllSpace]
; shl eax,2
ret
no_get_all_space: