summaryrefslogtreecommitdiff
path: root/includes/RtsAPI.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/RtsAPI.h')
-rw-r--r--includes/RtsAPI.h48
1 files changed, 30 insertions, 18 deletions
diff --git a/includes/RtsAPI.h b/includes/RtsAPI.h
index 8d948f9b49..e3b3f7d5f5 100644
--- a/includes/RtsAPI.h
+++ b/includes/RtsAPI.h
@@ -181,32 +181,44 @@ HsBool rts_getBool ( HaskellObj );
The versions ending in '_' allow you to specify an initial stack size.
Note that these calls may cause Garbage Collection, so all HaskellObj
references are rendered invalid by these calls.
+
+ All of these functions take a (Capability **) - there is a
+ Capability pointer both input and output. We use an inout
+ parameter because this is less error-prone for the client than a
+ return value - the client could easily forget to use the return
+ value, whereas incorrectly using an inout parameter will usually
+ result in a type error.
------------------------------------------------------------------------- */
-Capability *
-rts_eval (Capability *, HaskellObj p, /*out*/HaskellObj *ret);
-Capability *
-rts_eval_ (Capability *, HaskellObj p, unsigned int stack_size,
- /*out*/HaskellObj *ret);
+void rts_eval (/* inout */ Capability **,
+ /* in */ HaskellObj p,
+ /* out */ HaskellObj *ret);
+
+void rts_eval_ (/* inout */ Capability **,
+ /* in */ HaskellObj p,
+ /* in */ unsigned int stack_size,
+ /* out */ HaskellObj *ret);
-Capability *
-rts_evalIO (Capability *, HaskellObj p, /*out*/HaskellObj *ret);
+void rts_evalIO (/* inout */ Capability **,
+ /* in */ HaskellObj p,
+ /* out */ HaskellObj *ret);
-Capability *
-rts_evalStableIO (Capability *, HsStablePtr s, /*out*/HsStablePtr *ret);
+void rts_evalStableIO (/* inout */ Capability **,
+ /* in */ HsStablePtr s,
+ /* out */ HsStablePtr *ret);
-Capability *
-rts_evalLazyIO (Capability *, HaskellObj p, /*out*/HaskellObj *ret);
+void rts_evalLazyIO (/* inout */ Capability **,
+ /* in */ HaskellObj p,
+ /* out */ HaskellObj *ret);
-Capability *
-rts_evalLazyIO_ (Capability *, HaskellObj p, unsigned int stack_size,
- /*out*/HaskellObj *ret);
+void rts_evalLazyIO_ (/* inout */ Capability **,
+ /* in */ HaskellObj p,
+ /* in */ unsigned int stack_size,
+ /* out */ HaskellObj *ret);
-void
-rts_checkSchedStatus (char* site, Capability *);
+void rts_checkSchedStatus (char* site, Capability *);
-SchedulerStatus
-rts_getSchedStatus (Capability *cap);
+SchedulerStatus rts_getSchedStatus (Capability *cap);
/* --------------------------------------------------------------------------
Wrapper closures