2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis
10 #include <sys/times.h>
21 /***********************************************************************
22 * MsgWaitForMultipleObjects (USER32.400)
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 * GetProcessAffinityMask
39 BOOL32 WINAPI
GetProcessAffinityMask(HANDLE32 hProcess
,
40 LPDWORD lpProcessAffinityMask
,
41 LPDWORD lpSystemAffinityMask
)
43 TRACE(task
,"(%x,%lx,%lx)\n",
44 hProcess
,(lpProcessAffinityMask
?*lpProcessAffinityMask
:0),
45 (lpSystemAffinityMask
?*lpSystemAffinityMask
:0));
46 /* It is definitely important for a process to know on what processor
48 if(lpProcessAffinityMask
)
49 *lpProcessAffinityMask
=1;
50 if(lpSystemAffinityMask
)
51 *lpSystemAffinityMask
=1;
55 /**********************************************************************
56 * SetThreadAffinityMask
57 * Works now like the Windows95 (no MP support) version
59 BOOL32 WINAPI
SetThreadAffinityMask(HANDLE32 hThread
, DWORD dwThreadAffinityMask
)
61 THDB
*thdb
= THREAD_GetPtr( hThread
, THREAD_SET_INFORMATION
);
65 if (dwThreadAffinityMask
!=1) {
66 fprintf(stderr
,"SetThreadAffinityMask(%d,%ld), only 1 processor supported.\n",(int)hThread
,dwThreadAffinityMask
);
67 K32OBJ_DecCount((K32OBJ
*)thdb
);
70 K32OBJ_DecCount((K32OBJ
*)thdb
);
74 BOOL32 WINAPI
CreateProcess32A(
75 LPCSTR appname
,LPSTR cmdline
,LPSECURITY_ATTRIBUTES processattributes
,
76 LPSECURITY_ATTRIBUTES threadattributes
,BOOL32 inherithandles
,
77 DWORD creationflags
,LPVOID env
,LPCSTR curdir
,
78 LPSTARTUPINFO32A startupinfo
,LPPROCESS_INFORMATION processinfo
80 WARN(win32
,"CreateProcessA(%s,%s,%p,%p,%d,%08lx,%p,%s,%p,%p),\n
81 calling WinExec32 instead\n",
82 appname
,cmdline
,processattributes
,threadattributes
,
83 inherithandles
,creationflags
,env
,curdir
,startupinfo
,processinfo
85 WinExec32(cmdline
,TRUE
);
88 /* make from lcc uses system as fallback if CreateProcess returns
89 FALSE, so return false */
94 BOOL32 WINAPI
CreateProcess32W(
95 LPCWSTR appname
,LPWSTR cmdline
,LPSECURITY_ATTRIBUTES processattributes
,
96 LPSECURITY_ATTRIBUTES threadattributes
,BOOL32 inherithandles
,
97 DWORD creationflags
,LPVOID env
,LPCWSTR curdir
,
98 LPSTARTUPINFO32W startupinfo
,LPPROCESS_INFORMATION processinfo
)
100 fprintf(stderr
,"CreateProcessW(%p,%p,%p,%p,%d,%08lx,%p,%p,%p,%p) stub\n",
101 appname
,cmdline
,processattributes
,threadattributes
,
102 inherithandles
,creationflags
,env
,curdir
,startupinfo
,processinfo
);
103 /* make from lcc uses system as fallback if CreateProcess returns
104 FALSE, so return false */
108 BOOL32 WINAPI
ContinueDebugEvent(DWORD pid
,DWORD tid
,DWORD contstatus
) {
109 fprintf(stderr
,"ContinueDebugEvent(%ld,%ld,%ld) stub\n",pid
,tid
,contstatus
);
113 /*********************************************************************
114 * GetProcessTimes [KERNEL32.262]
116 * FIXME: implement this better ...
118 BOOL32 WINAPI
GetProcessTimes(
119 HANDLE32 hprocess
,LPFILETIME lpCreationTime
,LPFILETIME lpExitTime
,
120 LPFILETIME lpKernelTime
, LPFILETIME lpUserTime
125 DOSFS_UnixTimeToFileTime(tms
.tms_utime
,lpUserTime
,0);
126 DOSFS_UnixTimeToFileTime(tms
.tms_stime
,lpKernelTime
,0);