System/Win32/Thread.hs
{-# LANGUAGE CPP #-}
{- |
Module : System.Win32.Thread
Copyright : 2013 shelarcy
License : BSD-style
Maintainer : shelarcy@gmail.com
Stability : Provisional
Portability : Non-portable (Win32 API)
This modules provides just thread control APIs.
This modules doesn't provide thread register control APIs. Because these APIs are used for Debugging.
-}
module System.Win32.Thread
( THANDLE, TID
, getCurrentThread
, suspendThread
, resumeThread
, withSuspendedThread
, getThreadId
, getCurrentThreadId
) where
import System.Win32.DebugApi
import System.Win32.Types ( failIfZero )
#include "windows_cconv.h"
getThreadId :: THANDLE -> IO TID
getThreadId = failIfZero "GetThreadId" . c_GetThreadId
getCurrentThreadId :: IO TID
getCurrentThreadId = failIfZero "GetThreadId" c_GetCurrentThreadId
foreign import WINDOWS_CCONV "windows.h GetCurrentThread"
getCurrentThread :: IO THANDLE
foreign import WINDOWS_CCONV "windows.h GetThreadId"
c_GetThreadId :: THANDLE -> IO TID
foreign import WINDOWS_CCONV "windows.h GetCurrentThreadId"
c_GetCurrentThreadId :: IO TID