forked from KolibriOS/kolibrios
kms: pre rc7
git-svn-id: svn://kolibrios.org@1275 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -315,7 +315,7 @@ proc srv_handler stdcall, ioctl:dword
|
||||
cmp [edi+SRV.magic], ' SRV'
|
||||
jne .fail
|
||||
|
||||
cmp [edi+SRV.size], SRV_SIZE
|
||||
cmp [edi+SRV.size], SRV.sizeof
|
||||
jne .fail
|
||||
|
||||
stdcall [edi+SRV.srv_proc], esi
|
||||
@@ -347,7 +347,7 @@ srv_handlerEx:
|
||||
cmp [eax+SRV.magic], ' SRV'
|
||||
jne .fail
|
||||
|
||||
cmp [eax+SRV.size], SRV_SIZE
|
||||
cmp [eax+SRV.size], SRV.sizeof
|
||||
jne .fail
|
||||
|
||||
stdcall [eax+SRV.srv_proc], ebx
|
||||
@@ -402,8 +402,8 @@ proc reg_service stdcall, name:dword, handler:dword
|
||||
cmp [handler], eax
|
||||
je .fail
|
||||
|
||||
mov eax, SRV_SIZE
|
||||
call malloc ;call alloc_service
|
||||
mov eax, SRV.sizeof
|
||||
call malloc
|
||||
test eax, eax
|
||||
jz .fail
|
||||
|
||||
@@ -411,13 +411,15 @@ proc reg_service stdcall, name:dword, handler:dword
|
||||
push edi
|
||||
mov edi, eax
|
||||
mov esi, [name]
|
||||
mov ecx, 16/4
|
||||
rep movsd
|
||||
movsd
|
||||
movsd
|
||||
movsd
|
||||
movsd
|
||||
pop edi
|
||||
pop esi
|
||||
|
||||
mov [eax+SRV.magic], ' SRV'
|
||||
mov [eax+SRV.size], SRV_SIZE
|
||||
mov [eax+SRV.size], SRV.sizeof
|
||||
|
||||
mov ebx, srv.fd-SRV_FD_OFFSET
|
||||
mov edx, [ebx+SRV.fd]
|
||||
@@ -611,7 +613,10 @@ proc load_file stdcall, file_name:dword
|
||||
jz .cleanup
|
||||
|
||||
mov [file2], eax
|
||||
pushfd
|
||||
cli
|
||||
stdcall unpack, [file], eax
|
||||
popfd
|
||||
stdcall kernel_free, [file]
|
||||
mov eax, [file2]
|
||||
mov ebx, [file_size]
|
||||
@@ -1084,15 +1089,15 @@ proc load_library stdcall, file_name:dword
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc stop_all_services
|
||||
|
||||
stop_all_services:
|
||||
push ebp
|
||||
mov edx, [srv.fd]
|
||||
.next:
|
||||
cmp edx, srv.fd-SRV_FD_OFFSET
|
||||
je .done
|
||||
cmp [edx+SRV.magic], ' SRV'
|
||||
jne .next
|
||||
cmp [edx+SRV.size], SRV_SIZE
|
||||
cmp [edx+SRV.size], SRV.sizeof
|
||||
jne .next
|
||||
|
||||
mov ebx, [edx+SRV.entry]
|
||||
@@ -1105,8 +1110,8 @@ proc stop_all_services
|
||||
pop edx
|
||||
jmp .next
|
||||
.done:
|
||||
pop ebp
|
||||
ret
|
||||
endp
|
||||
|
||||
; param
|
||||
; eax= size
|
||||
|
@@ -167,7 +167,7 @@ proc map_io_mem stdcall, base:dword, size:dword, flags:dword
|
||||
@@:
|
||||
mov [page_tabs+eax*4], edx
|
||||
; push eax
|
||||
; invlpg [ebx]
|
||||
invlpg [ebx]
|
||||
; pop eax
|
||||
inc eax
|
||||
add ebx, edi
|
||||
@@ -205,7 +205,7 @@ commit_pages:
|
||||
@@:
|
||||
mov [page_tabs+ebx*4], eax
|
||||
; push eax
|
||||
; invlpg [edi]
|
||||
invlpg [edi]
|
||||
; pop eax
|
||||
add edi, edx
|
||||
add eax, edx
|
||||
@@ -991,19 +991,19 @@ sysfn_meminfo:
|
||||
|
||||
align 4
|
||||
f68call:
|
||||
dd f68.11
|
||||
dd f68.12
|
||||
dd f68.13
|
||||
dd f68.14
|
||||
dd f68.11 ; init_heap
|
||||
dd f68.12 ; user_alloc
|
||||
dd f68.13 ; user_free
|
||||
dd f68.14 ; get_event_ex
|
||||
dd f68.fail ;moved to f68.24
|
||||
dd f68.16
|
||||
dd f68.17
|
||||
dd f68.16 ; get_service
|
||||
dd f68.17 ; call_service
|
||||
dd f68.fail ;moved to f68.25
|
||||
dd f68.19
|
||||
dd f68.20
|
||||
dd f68.21
|
||||
dd f68.22
|
||||
dd f68.23
|
||||
dd f68.19 ; load_dll
|
||||
dd f68.20 ; user_realloc
|
||||
dd f68.21 ; load_driver
|
||||
dd f68.22 ; shmem_open
|
||||
dd f68.23 ; shmem_close
|
||||
dd f68.24
|
||||
dd f68.25
|
||||
|
||||
@@ -1038,13 +1038,6 @@ f68:
|
||||
call get_event_ex
|
||||
mov [esp+36], eax
|
||||
ret
|
||||
.24:
|
||||
mov eax, [current_slot]
|
||||
xchg ebx, [eax+APPDATA.exc_handler]
|
||||
xchg ecx, [eax+APPDATA.except_mask]
|
||||
mov [esp+36], ebx ; reg_eax+8
|
||||
mov [esp+24], ecx ; reg_ebx+8
|
||||
ret
|
||||
.16:
|
||||
test ebx, ebx
|
||||
jz .fail
|
||||
@@ -1057,15 +1050,6 @@ f68:
|
||||
call srv_handlerEx ;ebx
|
||||
mov [esp+36], eax
|
||||
ret
|
||||
.25:
|
||||
cmp ebx,32
|
||||
jae .fail
|
||||
mov eax, [current_slot]
|
||||
btr [eax+APPDATA.except_mask],ebx
|
||||
setc byte[esp+36]
|
||||
jecxz @f
|
||||
bts [eax+APPDATA.except_mask],ebx
|
||||
@@: ret
|
||||
.19:
|
||||
cmp ebx, OS_BASE
|
||||
jae .fail
|
||||
@@ -1113,6 +1097,23 @@ f68:
|
||||
stdcall shmem_close, ebx
|
||||
mov [esp+36], eax
|
||||
ret
|
||||
.24:
|
||||
mov eax, [current_slot]
|
||||
xchg ebx, [eax+APPDATA.exc_handler]
|
||||
xchg ecx, [eax+APPDATA.except_mask]
|
||||
mov [esp+36], ebx ; reg_eax+8
|
||||
mov [esp+24], ecx ; reg_ebx+8
|
||||
ret
|
||||
.25:
|
||||
cmp ebx,32
|
||||
jae .fail
|
||||
mov eax, [current_slot]
|
||||
btr [eax+APPDATA.except_mask],ebx
|
||||
setc byte[esp+36]
|
||||
jecxz @f
|
||||
bts [eax+APPDATA.except_mask],ebx
|
||||
@@:
|
||||
ret
|
||||
|
||||
.fail:
|
||||
xor eax, eax
|
||||
|
@@ -280,6 +280,8 @@ L40:
|
||||
__exports:
|
||||
export 'KERNEL', \
|
||||
alloc_kernel_space, 'AllocKernelSpace', \ ; stdcall
|
||||
alloc_page, 'AllocPage', \ ; gcc ABI
|
||||
alloc_pages, 'AllocPages', \ ; stdcall
|
||||
commit_pages, 'CommitPages', \ ; eax, ebx, ecx
|
||||
create_kernel_object, 'CreateObject', \
|
||||
create_ring_buffer, 'CreateRingBuffer', \ ; stdcall
|
||||
@@ -287,7 +289,6 @@ __exports:
|
||||
free_kernel_space, 'FreeKernelSpace', \ ; stdcall
|
||||
kernel_alloc, 'KernelAlloc', \ ; stdcall
|
||||
kernel_free, 'KernelFree', \ ; stdcall
|
||||
alloc_pages, 'AllocPages', \ ; stdcall
|
||||
malloc, 'Kmalloc', \
|
||||
free, 'Kfree', \
|
||||
map_io_mem, 'MapIoMem', \ ; stdcall
|
||||
@@ -307,6 +308,7 @@ __exports:
|
||||
pci_write16, 'PciWrite16', \ ; stdcall
|
||||
pci_write32, 'PciWrite32', \ ; stdcall
|
||||
\
|
||||
get_service, 'GetService', \ ;
|
||||
reg_service, 'RegService', \ ; stdcall
|
||||
attach_int_handler, 'AttachIntHandler', \ ; stdcall
|
||||
user_alloc, 'UserAlloc', \ ; stdcall
|
||||
|
Reference in New Issue
Block a user