forked from KolibriOS/kolibrios
kos-acpi: update process list on process creation and destroy.
git-svn-id: svn://kolibrios.org@6261 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
81ef01a2b6
commit
7a7af713f0
@ -75,7 +75,7 @@ proc fs_execute
|
|||||||
slot_base dd ?
|
slot_base dd ?
|
||||||
file_base dd ?
|
file_base dd ?
|
||||||
file_size dd ?
|
file_size dd ?
|
||||||
handle dd ? ;temp. for default cursor handle for curr. thread
|
; handle dd ? ;temp. for default cursor handle for curr. thread
|
||||||
;app header data
|
;app header data
|
||||||
hdr_cmdline dd ? ;0x00
|
hdr_cmdline dd ? ;0x00
|
||||||
hdr_path dd ? ;0x04
|
hdr_path dd ? ;0x04
|
||||||
@ -87,15 +87,15 @@ proc fs_execute
|
|||||||
|
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
cmp [SCR_MODE], word 0x13
|
; cmp [SCR_MODE], word 0x13
|
||||||
jbe @f
|
; jbe @f
|
||||||
pushad
|
; pushad
|
||||||
stdcall set_cursor, [def_cursor_clock]
|
; stdcall set_cursor, [def_cursor_clock]
|
||||||
mov [handle], eax
|
; mov [handle], eax
|
||||||
mov [redrawmouse_unconditional], 1
|
; mov [redrawmouse_unconditional], 1
|
||||||
call wakeup_osloop
|
; call wakeup_osloop
|
||||||
popad
|
; popad
|
||||||
@@:
|
;@@:
|
||||||
mov [flags], edx
|
mov [flags], edx
|
||||||
|
|
||||||
; [ebp] pointer to filename
|
; [ebp] pointer to filename
|
||||||
@ -256,6 +256,9 @@ proc fs_execute
|
|||||||
test eax, eax
|
test eax, eax
|
||||||
jz .failed
|
jz .failed
|
||||||
|
|
||||||
|
mov ebx, [sys_proc+LHEAD.prev]
|
||||||
|
__list_add eax, ebx, sys_proc
|
||||||
|
|
||||||
mov ebx, [hdr_mem]
|
mov ebx, [hdr_mem]
|
||||||
mov [eax+PROC.mem_used], ebx
|
mov [eax+PROC.mem_used], ebx
|
||||||
|
|
||||||
@ -274,8 +277,6 @@ proc fs_execute
|
|||||||
@@:
|
@@:
|
||||||
mov [ebx+APPDATA.tls_base], edx
|
mov [ebx+APPDATA.tls_base], edx
|
||||||
|
|
||||||
if GREEDY_KERNEL
|
|
||||||
else
|
|
||||||
mov ecx, [hdr_mem]
|
mov ecx, [hdr_mem]
|
||||||
mov edi, [file_size]
|
mov edi, [file_size]
|
||||||
add edi, 4095
|
add edi, 4095
|
||||||
@ -287,7 +288,6 @@ else
|
|||||||
cld
|
cld
|
||||||
rep stosb
|
rep stosb
|
||||||
@@:
|
@@:
|
||||||
end if
|
|
||||||
|
|
||||||
; release only virtual space, not phisical memory
|
; release only virtual space, not phisical memory
|
||||||
|
|
||||||
@ -315,14 +315,14 @@ end if
|
|||||||
call unlock_application_table
|
call unlock_application_table
|
||||||
mov eax, esi
|
mov eax, esi
|
||||||
.final:
|
.final:
|
||||||
cmp [SCR_MODE], word 0x13
|
; cmp [SCR_MODE], word 0x13
|
||||||
jbe @f
|
; jbe @f
|
||||||
pushad
|
; pushad
|
||||||
stdcall set_cursor, [handle]
|
; stdcall set_cursor, [handle]
|
||||||
mov [redrawmouse_unconditional], 1
|
; mov [redrawmouse_unconditional], 1
|
||||||
call wakeup_osloop
|
; call wakeup_osloop
|
||||||
popad
|
; popad
|
||||||
@@:
|
;@@:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
@ -632,11 +632,11 @@ align 4
|
|||||||
.internal:
|
.internal:
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
mov esi, [ecx+PROC.dlls_list_ptr]
|
mov esi, ecx
|
||||||
call destroy_all_hdlls
|
list_del esi
|
||||||
|
|
||||||
; mov ecx, pg_data.mutex
|
mov esi, [esi+PROC.dlls_list_ptr]
|
||||||
; call mutex_lock
|
call destroy_all_hdlls
|
||||||
|
|
||||||
mov esi, [esp]
|
mov esi, [esp]
|
||||||
add esi, PROC.pdt_0
|
add esi, PROC.pdt_0
|
||||||
@ -657,9 +657,6 @@ align 4
|
|||||||
|
|
||||||
call kernel_free ;ecx still in stack
|
call kernel_free ;ecx still in stack
|
||||||
stdcall map_page, [tmp_task_ptab], 0, PG_UNMAP
|
stdcall map_page, [tmp_task_ptab], 0, PG_UNMAP
|
||||||
; mov ecx, pg_data.mutex
|
|
||||||
; call mutex_unlock
|
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -1100,6 +1100,9 @@ endg
|
|||||||
|
|
||||||
first_app_found:
|
first_app_found:
|
||||||
|
|
||||||
|
mov ecx, bios_fb
|
||||||
|
call set_framebuffer
|
||||||
|
|
||||||
; START MULTITASKING
|
; START MULTITASKING
|
||||||
|
|
||||||
; A 'All set - press ESC to start' messages if need
|
; A 'All set - press ESC to start' messages if need
|
||||||
|
@ -125,6 +125,7 @@ init_video:
|
|||||||
mov esi, [LFBAddress]
|
mov esi, [LFBAddress]
|
||||||
bt [cpu_caps], CAPS_PSE
|
bt [cpu_caps], CAPS_PSE
|
||||||
jnc .create_page_tables
|
jnc .create_page_tables
|
||||||
|
|
||||||
mov edx, 0x00400000
|
mov edx, 0x00400000
|
||||||
or esi, PG_GLOBAL+PDE_LARGE+PAT_WC+PG_UWR
|
or esi, PG_GLOBAL+PDE_LARGE+PAT_WC+PG_UWR
|
||||||
and esi, [pte_valid_mask]
|
and esi, [pte_valid_mask]
|
||||||
@ -208,18 +209,17 @@ set_framebuffer:
|
|||||||
lea esi, [ecx+FRB.pde]
|
lea esi, [ecx+FRB.pde]
|
||||||
mov eax, sys_proc
|
mov eax, sys_proc
|
||||||
|
|
||||||
|
cld
|
||||||
pushfd
|
pushfd
|
||||||
cli
|
cli
|
||||||
mov [_display.current_lfb], ecx
|
mov [_display.current_lfb], ecx
|
||||||
|
|
||||||
.patch_pde:
|
.patch_pde:
|
||||||
lea edi, [eax+PROC.pdt_0+4096-32] ;last 8 pd entries up to 32Mb framebuffer
|
lea edi, [eax+PROC.pdt_0+4096-32] ;last 8 pd entries up to 32Mb framebuffer
|
||||||
mov ecx, 8
|
mov ecx, 4
|
||||||
rep movsd ;patch pde
|
rep movsd ;patch pde
|
||||||
sub esi, 32
|
sub esi, 16
|
||||||
mov edi, [eax+PROC.list.next] ;next process/address space
|
mov eax, [eax+PROC.list.next] ;next process/address space
|
||||||
xchg eax, edi
|
cmp eax, sys_proc
|
||||||
cmp eax, edi
|
|
||||||
jne .patch_pde
|
jne .patch_pde
|
||||||
|
|
||||||
bt [cpu_caps], CAPS_PGE
|
bt [cpu_caps], CAPS_PGE
|
||||||
|
Loading…
Reference in New Issue
Block a user