Reorganisation of the source tree
[ghc-hetmet.git] / ghc / rts / win32 / IOManager.h
diff --git a/ghc/rts/win32/IOManager.h b/ghc/rts/win32/IOManager.h
deleted file mode 100644 (file)
index 4893e23..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/* IOManager.h
- *
- * Non-blocking / asynchronous I/O for Win32.
- *
- * (c) sof, 2002-2003
- */
-#ifndef __IOMANAGER_H__
-#define __IOMANAGER_H__
-/* On the yucky side..suppress -Wmissing-declarations warnings when
- * including <windows.h>
- */
-extern void* GetCurrentFiber ( void );
-extern void* GetFiberData ( void );
-#include <windows.h>
-
-/*
- The IOManager subsystem provides a non-blocking view
- of I/O operations. It lets one (or more) OS thread(s)
- issue multiple I/O requests, which the IOManager then 
- handles independently of/concurrent to the thread(s)
- that issued the request. Upon completion, the issuing
- thread can inspect the result of the I/O operation &
- take appropriate action.
-
- The IOManager is intended used with the GHC RTS to
- implement non-blocking I/O in Concurrent Haskell.
- */
-
-/*
- * Our WorkQueue holds WorkItems, encoding IO and
- * delay requests.
- *
- */
-typedef void (*CompletionProc)(unsigned int requestID,
-                              int   fd,
-                              int   len,
-                              void* buf,
-                              int   errCode);
-
-/* 
- * Asynchronous procedure calls executed by a worker thread
- * take a generic state argument pointer and return an int by 
- * default. 
- */
-typedef int (*DoProcProc)(void *param);
-
-typedef union workData {
-    struct {
-       int   fd;
-       int   len;
-       char *buf; 
-    } ioData;
-    struct { 
-       int   msecs;
-    } delayData;
-    struct { 
-       DoProcProc proc;
-       void* param;
-    } procData;
-} WorkData;
-
-typedef struct WorkItem {
-  unsigned int     workKind;
-  WorkData         workData;
-  unsigned int     requestID;
-  CompletionProc   onCompletion;
-  unsigned int     abandonOp;
-  struct WorkItem  *link;
-} WorkItem;
-
-extern CompletionProc onComplete;
-
-/* the kind of operations supported; you could easily imagine
- * that instead of passing a tag describing the work to be performed,
- * a function pointer is passed instead. Maybe later.
- */
-#define WORKER_READ        1
-#define WORKER_WRITE       2
-#define WORKER_DELAY       4
-#define WORKER_FOR_SOCKET  8
-#define WORKER_DO_PROC    16
-
-/*
- * Starting up and shutting down. 
- */ 
-extern BOOL StartIOManager     ( void );
-extern void ShutdownIOManager  ( void );
-
-/*
- * Adding I/O and delay requests. With each request a
- * completion routine is supplied, which the worker thread
- * will invoke upon completion.
- */
-extern int AddDelayRequest ( unsigned int   msecs,
-                            CompletionProc onCompletion);
-
-extern int AddIORequest ( int            fd,
-                         BOOL           forWriting,
-                         BOOL           isSocket,
-                         int            len,
-                         char*          buffer,
-                         CompletionProc onCompletion);
-
-extern int AddProcRequest ( void*          proc,
-                           void*          data,
-                           CompletionProc onCompletion);
-
-extern void abandonWorkRequest ( int reqID );
-
-#endif /* __IOMANAGER_H__ */