Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2142 → Rev 2143

/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
}