mirror of
https://github.com/reactos/wine.git
synced 2025-02-13 08:44:54 +00:00
![Alexandre Julliard](/assets/img/avatar_default.png)
Added user APCs support. Many changes to the xterm console to make use of the server (not finished yet). Moved some other small stuff to the server.
82 lines
2.6 KiB
C
82 lines
2.6 KiB
C
/*
|
|
* Win32 kernel functions
|
|
*
|
|
* Copyright 1995 Martin von Loewis
|
|
*/
|
|
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/times.h>
|
|
#include "windows.h"
|
|
#include "winerror.h"
|
|
#include "heap.h"
|
|
#include "thread.h"
|
|
#include "process.h"
|
|
#include "pe_image.h"
|
|
#include "file.h"
|
|
#include "task.h"
|
|
#include "toolhelp.h"
|
|
#include "debug.h"
|
|
|
|
|
|
/**********************************************************************
|
|
* ContinueDebugEvent [KERNEL32.146]
|
|
*/
|
|
BOOL32 WINAPI ContinueDebugEvent(DWORD pid,DWORD tid,DWORD contstatus) {
|
|
FIXME(win32,"(0x%lx,%ld,%ld): stub\n",pid,tid,contstatus);
|
|
return TRUE;
|
|
}
|
|
|
|
/*********************************************************************
|
|
* Process_ClockTimeToFileTime
|
|
* (olorin@fandra.org, 20-Sep-1998)
|
|
* Converts clock_t into FILETIME.
|
|
* Used by GetProcessTime.
|
|
* Differences to UnixTimeToFileTime:
|
|
* 1) Divided by CLK_TCK
|
|
* 2) Time is relative. There is no 'starting date', so there is
|
|
* no need in offset correction, like in UnixTimeToFileTime
|
|
* FIXME: This function should be moved to a more appropriate .c file
|
|
* FIXME: On floating point operations, it is assumed that
|
|
* floating values are truncated on convertion to integer.
|
|
*/
|
|
void Process_ClockTimeToFileTime( clock_t unix_time, LPFILETIME filetime )
|
|
{
|
|
double td = (unix_time*10000000.0)/CLK_TCK;
|
|
/* Yes, double, because long int might overflow here. */
|
|
#if (SIZEOF_LONG_LONG >= 8)
|
|
unsigned long long t = td;
|
|
filetime->dwLowDateTime = (UINT32) t;
|
|
filetime->dwHighDateTime = (UINT32) (t >> 32);
|
|
#else
|
|
double divider = 1. * (1 << 16) * (1 << 16);
|
|
filetime->dwHighDateTime = (UINT32) (td / divider);
|
|
filetime->dwLowDateTime = (UINT32) (td - filetime->dwHighDateTime*divider);
|
|
/* using floor() produces wierd results, better leave this as it is
|
|
* ( with (UINT32) convertion )
|
|
*/
|
|
#endif
|
|
}
|
|
|
|
/*********************************************************************
|
|
* GetProcessTimes [KERNEL32.262]
|
|
*
|
|
* FIXME: lpCreationTime, lpExitTime are NOT INITIALIZED.
|
|
* olorin@fandra.org: Would be nice to substract the cpu time,
|
|
* used by Wine at startup.
|
|
* Also, there is a need to separate times
|
|
* used by different applications.
|
|
*/
|
|
BOOL32 WINAPI GetProcessTimes(
|
|
HANDLE32 hprocess,LPFILETIME lpCreationTime,LPFILETIME lpExitTime,
|
|
LPFILETIME lpKernelTime, LPFILETIME lpUserTime
|
|
) {
|
|
struct tms tms;
|
|
|
|
times(&tms);
|
|
Process_ClockTimeToFileTime(tms.tms_utime,lpUserTime);
|
|
Process_ClockTimeToFileTime(tms.tms_stime,lpKernelTime);
|
|
return TRUE;
|
|
}
|
|
|