Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 226 → Rev 227

/kernel/trunk/core/dll.inc
1,7 → 1,11
 
DRV_ENTRY equ 1
DRV_EXIT equ -1
DRV_COMPAT equ 1 ;minimal required drivers version
DRV_CURRENT equ 1 ;current drivers model version
 
DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT
 
align 4
proc attach_int_handler stdcall, irq:dword, handler:dword
 
704,7 → 708,7
stdcall load_file, [file_name]
 
test eax, eax
jz .fail
jz .exit
 
mov [coff], eax
 
775,24 → 779,26
stdcall fix_coff_symbols, eax, [sym], [edx+CFH.nSymbols],\
[strings], ebx
test eax, eax
jnz @F
jz .link_fail
 
mov esi, msg_module
call sys_msg_board_str
mov esi, [file_name]
call sys_msg_board_str
mov esi, msg_CR
call sys_msg_board_str
 
stdcall kernel_free,[coff]
xor eax, eax
ret
@@:
mov ebx, [coff]
add ebx, 20
stdcall fix_coff_relocs, [coff], ebx, [sym]
 
mov ebx, [coff]
stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szVersion
test eax, eax
jz .link_fail
 
mov eax, [eax]
shr eax, 16
cmp eax, DRV_COMPAT
jb .ver_fail
 
cmp eax, DRV_CURRENT
ja .ver_fail
 
mov ebx, [coff]
stdcall get_coff_sym,[sym],[ebx+CFH.nSymbols],szSTART
mov [start], eax
 
812,7 → 818,32
mov ecx, [start]
mov [eax+SRV.entry], ecx
ret
 
.ver_fail:
mov esi, msg_CR
call sys_msg_board_str
mov esi, [file_name]
call sys_msg_board_str
mov esi, msg_CR
call sys_msg_board_str
mov esi, msg_version
call sys_msg_board_str
mov esi, msg_www
call sys_msg_board_str
jmp .cleanup
 
.link_fail:
mov esi, msg_module
call sys_msg_board_str
mov esi, [file_name]
call sys_msg_board_str
mov esi, msg_CR
call sys_msg_board_str
.cleanup:
stdcall kernel_free,[img_base]
.fail:
stdcall kernel_free, [coff]
.exit:
xor eax, eax
ret
endp
924,20 → 955,19
 
align 4
proc stop_all_services
pushf
cli
mov eax, [srv_map]
not eax
mov [srv_map], eax
not [srv_map]
.next:
bsf eax, [srv_map]
jnz .find
popf
ret
.find:
btr [srv_map], eax
shl eax,0x02
lea eax,[srv_tab+eax+eax*8] ;srv_tab+eax*36
cmp [eax+SRV.magic], ' SRV'
jne .next
cmp [eax+SRV.size], SRV_SIZE
jne .next
mov ebx, [eax+SRV.entry]
stdcall ebx, dword -1
jmp .next
946,13 → 976,11
 
drv_sound db '/rd/1/drivers/unisound.obj', 0
drv_infinity db '/rd/1/drivers/infinity.obj', 0
;drv_ati2d db '/rd/1/drivers/vesa.obj', 0
;drv_cursor db '/rd/1/drivers/vesa.obj',0
drv_hw_mouse db '/rd/1/drivers/ati2d.obj',0
 
szSound db 'SOUND',0
szInfinity db 'INFINITY',0
;szHMouse db 'ATI2D',0
;szCURSOR db 'VESACURSOR',0
szHwMouse db 'HWCURSOR',0
 
szSTART db 'START',0
szEXPORTS db 'EXPORTS',0
960,9 → 988,12
 
msg_unresolved db 'unresolved ',0
msg_module db 'in module ',0
msg_version db 'incompatible driver version',13,10,0
msg_www db 'please visit www.kolibrios.org',13,10,0
msg_CR db 13,10,0
 
align 4
create_cursor dd 0
set_hw_cursor dd 0
hw_restore dd 0
 
970,6 → 1001,5
services:
dd szSound, drv_sound
dd szInfinity, drv_infinity
; dd szHMouse, drv_ati2d
; dd szCURSOR, drv_cursor
dd szHwMouse, drv_hw_mouse
dd 0
/kernel/trunk/core/exports.inc
1,6 → 1,7
 
iglobal
szKernel db 'KERNEL', 0
szVersion db 'version',0
szAttachIntHandler db 'AttachIntHandler',0
szSysMsgBoardStr db 'SysMsgBoardStr', 0
szPciApi db 'PciApi', 0
20,9 → 21,11
szFpuRestore db 'FpuRestore',0
szLoadCursor db 'LoadCursor',0
szSetHwCursor db 'SetHwCursor',0
szHWRestore db 'HWRestore', 0
szHwCursorRestore db 'HwCursorRestore', 0
szHwCursorCreate db 'HwCursorCreate', 0
szLFBAddress db 'LFBAddress',0
szLoadFile db 'LoadFile',0
szSendEvent db 'SendEvent',0
 
align 16
kernel_export:
45,12 → 48,13
dd szFpuRestore , fpu_restore
dd szLoadCursor , load_cursor
dd szSetHwCursor , set_hw_cursor
dd szHWRestore , hw_restore
dd szHwCursorRestore , hw_restore
dd szHwCursorCreate , create_cursor
dd szLoadFile , load_file
dd szSendEvent , send_event
exp_lfb:
dd szLFBAddress , 0
dd 0
 
 
endg
 
/kernel/trunk/core/memory.inc
806,6 → 806,7
add edi, [ipc_tmp]
cmp dword [edi], 0
jnz .ipc_blocked ;if dword [buffer]<>0 - ipc blocked now
 
mov ebx, dword [edi+4]
mov edx, ebx
add ebx, 8
812,6 → 813,7
add ebx, [msg_size]
cmp ebx, [buf_size]
ja .buffer_overflow ;esi<0 - not enough memory in buffer
 
mov dword [edi+4], ebx
mov eax,[TASK_BASE]
mov eax, [eax+0x04] ;eax - our PID
940,7 → 942,8
add ebx,new_app_base
cmp ebx, new_app_base
jb .fail
stdcall get_notify, ebx
stdcall get_event_ex, ebx, ecx
mov [esp+36], eax
ret
@@:
cmp eax, 15
980,7 → 983,7
ret
@@:
cmp eax, 19
ja @f
ja .fail
add ebx, new_app_base
cmp ebx, new_app_base
jb .fail
987,7 → 990,7
stdcall load_library, ebx
mov [esp+36], eax
ret
@@:
 
.fail:
xor eax, eax
mov [esp+36], eax
1293,18 → 1296,21
 
uglobal
align 16
 
dll_tab rb 32*32
srv_tab rb 36*32
mem_block_map rb 512
event_map rb 128
mem_block_list rd 64
mem_block_mask rd 2
 
dll_map rd 1
srv_map rd 1
 
mem_used_list rd 1
mem_block_list rd 64
mem_block_map rb 512
mem_block_arr rd 1
mem_block_start rd 1
mem_block_end rd 1
mem_block_mask rd 2
heap_size rd 1
heap_free rd 1
heap_blocks rd 1
1312,8 → 1318,11
 
page_start rd 1
page_end rd 1
events rd 1
event_start rd 1
event_end rd 1
 
sys_page_map rd 1
; app_load rd 1
endg