/kernel/branches/Kolibri-acpi/const.inc |
---|
593,20 → 593,6 |
display_t display_t |
end virtual |
struc HEAP_DATA |
{ |
.mutex rd 1 |
.refcount rd 1 |
.heap_base rd 1 |
.heap_top rd 1 |
.app_mem rd 1 |
} |
HEAP_DATA_SIZE equ 20 |
virtual at 0 |
HEAP_DATA HEAP_DATA |
end virtual |
struc BOOT_DATA |
{ .bpp dd ? |
.scanline dd ? |
/kernel/branches/Kolibri-acpi/core/heap.inc |
---|
7,34 → 7,7 |
$Revision$ |
macro __list_add new, prev, next |
{ |
mov [next+LHEAD.prev], new |
mov [new+LHEAD.next], next |
mov [new+LHEAD.prev], prev |
mov [prev+LHEAD.next], new |
} |
macro list_add new, head |
{ |
mov eax, [head+LHEAD.next] |
__list_add new, head, eax |
} |
macro list_add_tail new, head |
{ |
mov eax, [head+LHEAD.prev] |
__list_add new, eax, head |
} |
macro list_del entry |
{ |
mov edx, [entry+list_fd] |
mov ecx, [entry+list_bk] |
mov [edx+list_bk], ecx |
mov [ecx+list_fd], edx |
} |
struc MEM_BLOCK |
{ |
.list LHEAD |
/kernel/branches/Kolibri-acpi/core/sched.inc |
---|
221,8 → 221,7 |
struc MUTEX_WAITER |
{ |
.next rd 1 |
.prev rd 1 |
.list LHEAD |
.task rd 1 |
.sizeof: |
}; |
235,10 → 234,9 |
align 4 |
mutex_init: |
lea eax, [ecx+MUTEX.next] |
mov [ecx+MUTEX.wait.next], ecx |
mov [ecx+MUTEX.wait.prev], ecx |
mov [ecx+MUTEX.count],1 |
mov [ecx+MUTEX.next], eax |
mov [ecx+MUTEX.prev], eax |
ret |
253,17 → 251,10 |
pushfd |
cli |
push esi |
sub esp, MUTEX_WAITER.sizeof |
mov eax, [ecx+MUTEX.prev] |
lea esi, [ecx+MUTEX.next] |
list_add_tail esp, ecx ;esp= new waiter, ecx= list head |
mov [ecx+MUTEX.prev], esp |
mov [esp+MUTEX_WAITER.next], esi |
mov [esp+MUTEX_WAITER.prev], eax |
mov [eax], esp |
mov edx, [TASK_BASE] |
mov [esp+MUTEX_WAITER.task], edx |
278,12 → 269,12 |
call change_task |
jmp .forever |
@@: |
mov edx, [esp+MUTEX_WAITER.next] |
mov eax, [esp+MUTEX_WAITER.prev] |
mov edx, [esp+MUTEX_WAITER.list.next] |
mov eax, [esp+MUTEX_WAITER.list.prev] |
mov [eax+MUTEX_WAITER.next], edx |
cmp [ecx+MUTEX.next], esi |
mov [edx+MUTEX_WAITER.prev], eax |
mov [eax+MUTEX_WAITER.list.next], edx |
mov [edx+MUTEX_WAITER.list.prev], eax |
cmp [ecx+MUTEX.wait.next], ecx |
jne @F |
mov [ecx+MUTEX.count], 0 |
290,7 → 281,6 |
@@: |
add esp, MUTEX_WAITER.sizeof |
pop esi |
popfd |
.done: |
ret |
303,8 → 293,8 |
pushfd |
cli |
lea eax, [ecx+MUTEX.next] |
cmp eax, [ecx+MUTEX.next] |
mov eax, [ecx+MUTEX.wait.next] |
cmp eax, [ecx] |
mov [ecx+MUTEX.count], 1 |
je @F |
/kernel/branches/Kolibri-acpi/data32.inc |
---|
298,10 → 298,7 |
mem_block_map rb 512 |
mem_block_list rd 64*2 |
mem_block_mask rd 2 |
large_block_mask rd 1 |
mem_hash_cnt rd 64 |
mem_used.fd rd 1 |
mem_used.bk rd 1 |
309,6 → 306,8 |
mem_block_start rd 1 |
mem_block_end rd 1 |
mem_hash_cnt rd 64 |
heap_mutex MUTEX |
heap_size rd 1 |
heap_free rd 1 |
/kernel/branches/Kolibri-acpi/kernel32.inc |
---|
196,9 → 196,8 |
struc MUTEX |
{ |
.wait LHEAD |
.count rd 1 |
.next rd 1 |
.prev rd 1 |
} |
virtual at 0 |
/kernel/branches/Kolibri-acpi/macros.inc |
---|
107,3 → 107,32 |
mov op2,op3 |
mov op1,op2 |
} |
macro __list_add new, prev, next |
{ |
mov [next+LHEAD.prev], new |
mov [new+LHEAD.next], next |
mov [new+LHEAD.prev], prev |
mov [prev+LHEAD.next], new |
} |
macro list_add new, head |
{ |
mov eax, [head+LHEAD.next] |
__list_add new, head, eax |
} |
macro list_add_tail new, head |
{ |
mov eax, [head+LHEAD.prev] |
__list_add new, eax, head |
} |
macro list_del entry |
{ |
mov edx, [entry+list_fd] |
mov ecx, [entry+list_bk] |
mov [edx+list_bk], ecx |
mov [ecx+list_fd], edx |
} |