diff options
Diffstat (limited to 'includes/rts/Task.h')
-rw-r--r-- | includes/rts/Task.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/includes/rts/Task.h b/includes/rts/Task.h new file mode 100644 index 0000000000..d8fe440823 --- /dev/null +++ b/includes/rts/Task.h @@ -0,0 +1,40 @@ +/* ----------------------------------------------------------------------------- + * + * (c) The GHC Team, 1998-2009 + * + * Task API + * + * Do not #include this file directly: #include "Rts.h" instead. + * + * To understand the structure of the RTS headers, see the wiki: + * https://gitlab.haskell.org/ghc/ghc/wikis/commentary/source-tree/includes + * + * -------------------------------------------------------------------------- */ + +#pragma once + +typedef struct Task_ Task; + +// Create a new Task for a bound thread. This Task must be released +// by calling boundTaskExiting. The Task is cached in +// thread-local storage and will remain even after boundTaskExiting() +// has been called; to free the memory, see freeMyTask(). +// +Task* newBoundTask (void); + +// Return the current OS thread's Task, which is created if it doesn't already +// exist. After you have finished using RTS APIs, you should call freeMyTask() +// to release this thread's Task. +Task* getTask (void); + +// The current task is a bound task that is exiting. +// +void boundTaskExiting (Task *task); + +// Free a Task if one was previously allocated by newBoundTask(). +// This is not necessary unless the thread that called newBoundTask() +// will be exiting, or if this thread has finished calling Haskell +// functions. +// +void freeMyTask(void); + |