106 lines
1.9 KiB
C
106 lines
1.9 KiB
C
/*
|
|
* Win32 kernel functions
|
|
*
|
|
* Copyright 1995 Martin von Loewis
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include "windows.h"
|
|
#include "winerror.h"
|
|
#include "kernel32.h"
|
|
#include "stddebug.h"
|
|
#include "debug.h"
|
|
#include "xmalloc.h"
|
|
|
|
/***********************************************************************
|
|
* GetCurrentThreadId (KERNEL32.200)
|
|
*/
|
|
|
|
int GetCurrentThreadId(void)
|
|
{
|
|
return getpid();
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetThreadContext (KERNEL32.294)
|
|
*/
|
|
BOOL GetThreadContext(HANDLE hThread, void *lpContext)
|
|
{
|
|
return FALSE;
|
|
}
|
|
/***********************************************************************
|
|
* GetCurrentThread (KERNEL32.200)
|
|
*/
|
|
HANDLE WINAPI GetCurrentThread(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
/**********************************************************************
|
|
* Critical Sections are currently ignored
|
|
*/
|
|
void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit)
|
|
{
|
|
memset(lpCrit,0,sizeof(CRITICAL_SECTION));
|
|
}
|
|
|
|
void WINAPI EnterCriticalSection(CRITICAL_SECTION* lpCrit)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void WINAPI LeaveCriticalSection(CRITICAL_SECTION* lpCrit)
|
|
{
|
|
return;
|
|
}
|
|
|
|
void WINAPI DeleteCriticalSection(CRITICAL_SECTION* lpCrit)
|
|
{
|
|
return;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* Tls is available only for the single thread
|
|
*/
|
|
static LPVOID* Tls=0;
|
|
static int TlsCount=0;
|
|
|
|
DWORD WINAPI TlsAlloc()
|
|
{
|
|
if(!Tls){
|
|
TlsCount++;
|
|
Tls=xmalloc(sizeof(LPVOID));
|
|
return 0;
|
|
}
|
|
Tls=xrealloc(Tls,sizeof(LPVOID)*(++TlsCount));
|
|
return TlsCount-1;
|
|
}
|
|
|
|
void TlsFree(DWORD index)
|
|
{
|
|
/*FIXME: should remember that it has been freed */
|
|
return;
|
|
}
|
|
|
|
LPVOID TlsGetValue(DWORD index)
|
|
{
|
|
if(index>=TlsCount)
|
|
{
|
|
/* FIXME: Set last error*/
|
|
return 0;
|
|
}
|
|
return Tls[index];
|
|
}
|
|
|
|
void TlsSetValue(DWORD index,LPVOID value)
|
|
{
|
|
if(index>=TlsCount)
|
|
{
|
|
/* FIXME: Set last error*/
|
|
return;
|
|
}
|
|
Tls[index]=value;
|
|
}
|