2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis
10 #include <sys/times.h>
21 /***********************************************************************
22 * MsgWaitForMultipleObjects (USER32.399)
24 DWORD WINAPI
MsgWaitForMultipleObjects(
25 DWORD nCount
,HANDLE32
*pHandles
,BOOL32 fWaitAll
,DWORD dwMilliseconds
,
29 fprintf(stderr
,"MsgWaitForMultipleObjects(%ld,[",nCount
);
30 for (i
=0;i
<nCount
;i
++)
31 fprintf(stderr
,"%ld,",(DWORD
)pHandles
[i
]);
32 fprintf(stderr
,"],%d,%ld,0x%08lx)\n",fWaitAll
,dwMilliseconds
,dwWakeMask
);
36 /***********************************************************************
37 * DuplicateHandle (KERNEL32.78)
39 BOOL32 WINAPI
DuplicateHandle(HANDLE32 a
, HANDLE32 b
, HANDLE32 c
, HANDLE32
* d
, DWORD e
, BOOL32 f
, DWORD g
)
41 fprintf(stderr
,"DuplicateHandle(%d,%d,%d,%p,%ld,%d,%ld) stub\n",a
,b
,c
,d
,e
,f
,g
);
46 /**********************************************************************
47 * GetProcessAffinityMask
49 BOOL32 WINAPI
GetProcessAffinityMask(HANDLE32 hProcess
,
50 LPDWORD lpProcessAffinityMask
,
51 LPDWORD lpSystemAffinityMask
)
53 TRACE(task
,"(%x,%lx,%lx)\n",
54 hProcess
,(lpProcessAffinityMask
?*lpProcessAffinityMask
:0),
55 (lpSystemAffinityMask
?*lpSystemAffinityMask
:0));
56 /* It is definitely important for a process to know on what processor
58 if(lpProcessAffinityMask
)
59 *lpProcessAffinityMask
=1;
60 if(lpSystemAffinityMask
)
61 *lpSystemAffinityMask
=1;
65 /**********************************************************************
66 * SetThreadAffinityMask
67 * Works now like the Windows95 (no MP support) version
69 BOOL32 WINAPI
SetThreadAffinityMask(HANDLE32 hThread
, DWORD dwThreadAffinityMask
)
71 THDB
*thdb
= THREAD_GetPtr( hThread
, THREAD_SET_INFORMATION
);
75 if (dwThreadAffinityMask
!=1) {
76 fprintf(stderr
,"SetThreadAffinityMask(%d,%ld), only 1 processor supported.\n",(int)hThread
,dwThreadAffinityMask
);
77 K32OBJ_DecCount((K32OBJ
*)thdb
);
80 K32OBJ_DecCount((K32OBJ
*)thdb
);
84 BOOL32 WINAPI
CreateProcess32A(
85 LPCSTR appname
,LPSTR cmdline
,LPSECURITY_ATTRIBUTES processattributes
,
86 LPSECURITY_ATTRIBUTES threadattributes
,BOOL32 inherithandles
,
87 DWORD creationflags
,LPVOID env
,LPCSTR curdir
,
88 LPSTARTUPINFO32A startupinfo
,LPPROCESS_INFORMATION processinfo
90 fprintf(stderr
,"CreateProcessA(%s,%s,%p,%p,%d,%08lx,%p,%s,%p,%p), stub\n",
91 appname
,cmdline
,processattributes
,threadattributes
,
92 inherithandles
,creationflags
,env
,curdir
,startupinfo
,processinfo
94 /* make from lcc uses system as fallback if CreateProcess returns
95 FALSE, so return false */
99 BOOL32 WINAPI
CreateProcess32W(
100 LPCWSTR appname
,LPWSTR cmdline
,LPSECURITY_ATTRIBUTES processattributes
,
101 LPSECURITY_ATTRIBUTES threadattributes
,BOOL32 inherithandles
,
102 DWORD creationflags
,LPVOID env
,LPCWSTR curdir
,
103 LPSTARTUPINFO32W startupinfo
,LPPROCESS_INFORMATION processinfo
)
105 fprintf(stderr
,"CreateProcessW(%p,%p,%p,%p,%d,%08lx,%p,%p,%p,%p) stub\n",
106 appname
,cmdline
,processattributes
,threadattributes
,
107 inherithandles
,creationflags
,env
,curdir
,startupinfo
,processinfo
);
108 /* make from lcc uses system as fallback if CreateProcess returns
109 FALSE, so return false */
113 BOOL32 WINAPI
ContinueDebugEvent(DWORD pid
,DWORD tid
,DWORD contstatus
) {
114 fprintf(stderr
,"ContinueDebugEvent(%ld,%ld,%ld) stub\n",pid
,tid
,contstatus
);
118 /*********************************************************************
119 * GetProcessTimes [KERNEL32.262]
121 * FIXME: implement this better ...
123 BOOL32 WINAPI
GetProcessTimes(
124 HANDLE32 hprocess
,LPFILETIME lpCreationTime
,LPFILETIME lpExitTime
,
125 LPFILETIME lpKernelTime
, LPFILETIME lpUserTime
130 DOSFS_UnixTimeToFileTime(tms
.tms_utime
,lpUserTime
,0);
131 DOSFS_UnixTimeToFileTime(tms
.tms_stime
,lpKernelTime
,0);