*
* Tasks
*
+ * For details on the high-level design, see
+ * http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Scheduler
+ *
* -------------------------------------------------------------------------*/
#ifndef TASK_H
#include "GetTime.h"
-BEGIN_RTS_PRIVATE
+#include "BeginPrivate.h"
/*
Definition of a Task
//
void startWorkerTask (Capability *cap);
+// Interrupts a worker task that is performing an FFI call. The thread
+// should not be destroyed.
+//
+void interruptWorkerTask (Task *task);
+
#endif /* THREADED_RTS */
// -----------------------------------------------------------------------------
// A thread-local-storage key that we can use to get access to the
// current thread's Task structure.
#if defined(THREADED_RTS)
-#if defined(linux_HOST_OS) && \
- (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH))
+#if (defined(linux_HOST_OS) && \
+ (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH))) || \
+ (defined(mingw32_HOST_OS) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
#define MYTASK_USE_TLV
extern __thread Task *my_task;
#else
#endif
}
-END_RTS_PRIVATE
+#include "EndPrivate.h"
#endif /* TASK_H */