diff options
Diffstat (limited to 'includes/RtsAPI.h')
-rw-r--r-- | includes/RtsAPI.h | 48 |
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 |