Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5594 → Rev 5595

/kernel/trunk/const.inc
495,6 → 495,17
count dd ?
ends
 
struct FUTEX
list LHEAD
magic dd ?
handle dd ?
destroy dd ?
 
wait_list LHEAD
pointer dd ?
flags dd ?
ends
 
struct display_t
x dd ?
y dd ?
/kernel/trunk/core/dll.inc
1426,3 → 1426,52
 
call free ;release object memory
ret
 
; param
; ecx= size
 
align 4
create_object:
 
push esi
push edi
pushfd
cli
 
mov esi, [current_process]
mov eax, [esi+PROC.ht_free]
mov edi, [esi+PROC.ht_next]
dec eax
js .err0
 
mov [esi+PROC.ht_free], eax
mov eax, [esi+PROC.htab+edi*4]
mov [esi+PROC.ht_next], eax
popfd
 
mov eax, ecx
call malloc
test eax, eax
jz .err1
 
mov [eax+FUTEX.handle], edi
mov [esi+PROC.htab+edi*4], eax
pop edi
pop esi
ret
 
.err1:
pushfd
cli
 
mov eax, [esi+PROC.ht_next]
mov [esi+PROC.htab+edi*4], eax
mov [esi+PROC.ht_next], edi
inc [esi+PROC.ht_free]
.err0:
popfd
pop edi
pop esi
xor eax, eax
ret
 
/kernel/trunk/core/taskman.inc
472,7 → 472,7
mov [process], eax
 
lea edi, [eax+PROC.heap_lock]
mov ecx, (PROC.ht_next-PROC.heap_lock)/4
mov ecx, (PROC.ht_free-PROC.heap_lock)/4
 
list_init eax
add eax, PROC.thr_list
482,7 → 482,11
cld
rep stosd
 
mov [edi], dword (PROC.pdt_0 - PROC.htab)/4 - 3
mov [edi+4], dword 3 ;reserve handles for stdin stdout and stderr
mov ecx, (PROC.pdt_0 - PROC.htab)/4
add edi, 8
inc eax
@@:
stosd
inc eax
489,7 → 493,6
cmp eax, ecx
jbe @B
 
mov [edi-4096+PROC.ht_next], 3 ;reserve handles for stdin stdout and stderr
mov eax, edi
call get_pg_addr
mov [edi-4096+PROC.pdt_0_phys], eax
/kernel/trunk/kernel.asm
702,12 → 702,31
mov esi, boot_setostask
call boot_log
 
mov edi, sys_proc
list_init edi
lea ecx, [edi+PROC.thr_list]
list_init ecx
mov [edi+PROC.pdt_0_phys], sys_proc-OS_BASE+PROC.pdt_0
mov eax, sys_proc
lea edi, [eax+PROC.heap_lock]
mov ecx, (PROC.ht_free-PROC.heap_lock)/4
 
list_init eax
add eax, PROC.thr_list
list_init eax
 
xor eax, eax
cld
rep stosd
 
mov [edi], dword (PROC.pdt_0 - PROC.htab)/4 - 3
mov [edi+4], dword 3 ;reserve handles for stdin stdout and stderr
mov ecx, (PROC.pdt_0 - PROC.htab)/4
add edi, 8
inc eax
@@:
stosd
inc eax
cmp eax, ecx
jbe @B
 
mov [sys_proc+PROC.pdt_0_phys], sys_proc-OS_BASE+PROC.pdt_0
 
mov eax, -1
mov edi, thr_slot_map+4
mov [edi-4], dword 0xFFFFFFF8
807,7 → 826,6
call free_page
.no_wake_cpus:
 
 
; REDIRECT ALL IRQ'S TO INT'S 0x20-0x2f
mov esi, boot_initirq
call boot_log
/kernel/trunk/kernel32.inc
111,7 → 111,8
io_map_0 rd 1
io_map_1 rd 1
 
ht_lock rd 1 ;htab[0] stdin
ht_lock rd 1
ht_free rd 1 ;htab[0] stdin
ht_next rd 1 ;htab[1] stdout
htab rd (4096-$)/4 ;htab[2] stderr
pdt_0 rd 1024