Rev 278 | Rev 287 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 278 | Rev 281 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | DRV_ENTRY equ 1 |
1 | DRV_ENTRY equ 1 |
2 | DRV_EXIT equ -1 |
2 | DRV_EXIT equ -1 |
3 | DRV_COMPAT equ 1 ;minimal required drivers version |
3 | DRV_COMPAT equ 2 ;minimal required drivers version |
4 | DRV_CURRENT equ 1 ;current drivers model version |
4 | DRV_CURRENT equ 2 ;current drivers model version |
Line 5... | Line 5... | ||
5 | 5 | ||
Line 6... | Line 6... | ||
6 | DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT |
6 | DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT |
7 | 7 | ||
Line 369... | Line 369... | ||
369 | mov [edx+SRV.bk], eax |
369 | mov [edx+SRV.bk], eax |
370 | 370 | ||
Line 371... | Line 371... | ||
371 | mov ecx, [.handler] |
371 | mov ecx, [.handler] |
372 | mov [eax+SRV.srv_proc], ecx |
372 | mov [eax+SRV.srv_proc], ecx |
373 | ret |
373 | ret 8 |
374 | .fail: |
374 | .fail: |
375 | xor eax, eax |
375 | xor eax, eax |
376 | ret |
376 | ret 8 |
Line 377... | Line 377... | ||
377 | 377 | ||
378 | align 4 |
378 | align 4 |
Line 379... | Line 379... | ||
379 | proc get_proc stdcall, exp:dword, sz_name:dword |
379 | proc get_proc stdcall, exp:dword, sz_name:dword |
Line 963... | Line 963... | ||
963 | xor eax, eax |
963 | xor eax, eax |
964 | ret |
964 | ret |
965 | endp |
965 | endp |
966 | 966 | ||
Line 967... | Line -... | ||
967 | - | ||
968 | align 4 |
967 | align 4 |
969 | proc stop_all_services |
968 | proc stop_all_services |
Line 970... | Line 969... | ||
970 | 969 | ||
971 | mov edx, [srv.fd] |
970 | mov edx, [srv.fd] |
Line 985... | Line 984... | ||
985 | .done: |
984 | .done: |
986 | ret |
985 | ret |
987 | endp |
986 | endp |
988 | 987 | ||
Line -... | Line 988... | ||
- | 988 | ; param |
|
- | 989 | ; eax= pid |
|
- | 990 | ; ebx= size |
|
- | 991 | ||
- | 992 | align 4 |
|
- | 993 | create_kernel_object: |
|
- | 994 | ||
- | 995 | push ebx |
|
- | 996 | call malloc |
|
- | 997 | pop ebx |
|
- | 998 | test eax, eax |
|
- | 999 | jz .fail |
|
- | 1000 | ||
- | 1001 | mov ecx,[CURRENT_TASK] |
|
- | 1002 | shl ecx,8 |
|
- | 1003 | add ecx, PROC_BASE+APP_OBJ_OFFSET |
|
- | 1004 | ||
- | 1005 | mov edx, [ecx+APPOBJ.fd] |
|
- | 1006 | mov [eax+APPOBJ.fd], edx |
|
- | 1007 | mov [eax+APPOBJ.bk], ecx |
|
- | 1008 | mov [eax+APPOBJ.pid], ebx |
|
- | 1009 | ||
- | 1010 | mov [ecx+APPOBJ.fd], eax |
|
- | 1011 | mov [edx+APPOBJ.bk], eax |
|
- | 1012 | .fail: |
|
- | 1013 | ret |
|
- | 1014 | ||
- | 1015 | ; param |
|
- | 1016 | ; eax= object |
|
- | 1017 | ||
- | 1018 | align 4 |
|
- | 1019 | destroy_kernel_object: |
|
- | 1020 | ||
- | 1021 | mov ebx, [eax+APPOBJ.fd] |
|
- | 1022 | mov ecx, [eax+APPOBJ.bk] |
|
- | 1023 | mov [ebx+APPOBJ.bk], ecx |
|
- | 1024 | mov [ecx+APPOBJ.fd], ebx |
|
- | 1025 | ||
- | 1026 | xor edx, edx ;clear common header |
|
- | 1027 | mov [eax], edx |
|
- | 1028 | mov [eax+4], edx |
|
- | 1029 | mov [eax+8], edx |
|
- | 1030 | mov [eax+12], edx |
|
- | 1031 | mov [eax+16], edx |
|
- | 1032 | ||
- | 1033 | call free ;release object memory |
|
- | 1034 | ret |
|
- | 1035 | ||
Line 989... | Line 1036... | ||
989 | 1036 | ||
990 | drv_sound db '/rd/1/drivers/unisound.obj', 0 |
1037 | drv_sound db '/rd/1/drivers/unisound.obj', 0 |
991 | drv_infinity db '/rd/1/drivers/infinity.obj', 0 |
1038 | drv_infinity db '/rd/1/drivers/infinity.obj', 0 |