|
ARGOBOTS
1.1
|
This group is for Eventual. More...
Typedefs | |
| typedef struct ABT_eventual_opaque * | ABT_eventual |
| Eventual handle type. More... | |
Functions | |
| int | ABT_eventual_create (int nbytes, ABT_eventual *neweventual) |
| Create a new eventual. More... | |
| int | ABT_eventual_free (ABT_eventual *eventual) |
| Free an eventual. More... | |
| int | ABT_eventual_wait (ABT_eventual eventual, void **value) |
| Wait on an eventual. More... | |
| int | ABT_eventual_test (ABT_eventual eventual, void **value, ABT_bool *is_ready) |
| Check if an eventual is ready. More... | |
| int | ABT_eventual_set (ABT_eventual eventual, void *value, int nbytes) |
| Signal an eventual. More... | |
| int | ABT_eventual_reset (ABT_eventual eventual) |
| Reset a readiness of an eventual. More... | |
This group is for Eventual.
| typedef struct ABT_eventual_opaque* ABT_eventual |
| int ABT_eventual_create | ( | int | nbytes, |
| ABT_eventual * | neweventual | ||
| ) |
Create a new eventual.
ABT_eventual_create() creates a new eventual and returns its handle through neweventual. neweventual is set to unready. If nbytes is greater than zero, this routine allocates a memory buffer of nbytes bytes for neweventual. This memory buffer can be set by ABT_eventual_set() and read by ABT_eventual_wait() or ABT_eventual_test(). If nbytes is zero, the user cannot pass data from a setter to waiters through neweventual.
neweventual must be freed by ABT_eventual_free() after its use.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_ARG is returned if nbytes is negative.ABT_ERR_MEM is returned if memory allocation fails.ABT_ERR_SYS is returned if an error related to system calls and standard libraries occurs.neweventual is NULL, the results are undefined.| [in] | nbytes | size in bytes of the memory buffer |
| [out] | neweventual | eventual handle |
Definition at line 42 of file eventual.c.
| int ABT_eventual_free | ( | ABT_eventual * | eventual | ) |
Free an eventual.
ABT_eventual_free() deallocates the resource used for the eventual eventual and sets eventual to ABT_EVENTUAL_NULL.
eventual regardless of its readiness.ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_EVENTUAL is returned if eventual points to ABT_EVENTUAL_NULL.eventual is NULL, the results are undefined.eventual, the results are undefined.eventual is accessed after calling this routine, the results are undefined.| [in,out] | eventual | eventual handle |
Definition at line 96 of file eventual.c.
| int ABT_eventual_reset | ( | ABT_eventual | eventual | ) |
Reset a readiness of an eventual.
ABT_eventual_reset() makes the eventual eventual unready.
eventual unready irrespective of its readiness.The readiness of an eventual is managed atomically.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_EVENTUAL is returned if eventual is ABT_EVENTUAL_NULL.eventual, the results are undefined.| [in] | eventual | eventual handle |
Definition at line 361 of file eventual.c.
| int ABT_eventual_set | ( | ABT_eventual | eventual, |
| void * | value, | ||
| int | nbytes | ||
| ) |
Signal an eventual.
ABT_eventual_set() makes the eventual eventual ready and resumes all waiters that are blocked on eventual. If nbytes is greater than zero, this routine copies nbytes bytes of the memory buffer pointed to by value to the memory buffer of eventual before making eventual ready.
ABT_eventual_reset().The readiness of an eventual is managed atomically.
eventual and returns ABT_SUCCESS if eventual is ready.ABT_ERR_EVENTUAL if eventual is ready. eventual is ready breaks the semantics of eventual. Such an update should be prohibited. ABT_ERR_INV_EVENTUAL is returned if nbytes is greater than the size of the memory buffer of eventual.ABT_ERR_INV_ARG is returned if nbytes is greater than the size of the memory buffer of eventual. ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_ARG is returned if nbytes is negative.ABT_ERR_INV_EVENTUAL is returned if eventual is ABT_EVENTUAL_NULL.ABT_ERR_EVENTUAL is returned if eventual is ready.ABT_ERR_INV_EVENTUAL is returned if nbytes is larger than the size of the memory buffer of eventual.ABT_ERR_INV_ARG is returned if nbytes is larger than the size of the memory buffer of eventual.nbytes is greater than zero and value is NULL, the results are undefined.| [in] | eventual | eventual handle |
| [in] | value | pointer to the memory buffer |
| [in] | nbytes | number of bytes to be copied |
Definition at line 302 of file eventual.c.
| int ABT_eventual_test | ( | ABT_eventual | eventual, |
| void ** | value, | ||
| ABT_bool * | is_ready | ||
| ) |
Check if an eventual is ready.
ABT_eventual_test() checks if the eventual eventual is ready and returns the result through is_ready. If eventual is not ready, this routine leaves value unchanged and sets is_ready to ABT_FALSE. If eventual is ready, is_ready is set to ABT_TRUE and, if value is not NULL, value is set to the memory buffer of eventual. This routine returns ABT_SUCCESS even if eventual is not ready.
The memory buffer pointed to by value is deallocated when eventual is freed by ABT_eventual_free(). The memory buffer is properly aligned for storage of any type of object that has the given size. If the data written by ABT_eventual_set() is smaller than the size of the memory buffer of eventual, the contents of the memory buffer that was not written by ABT_eventual_set() are undefined. The contents of the memory buffer get undefined if either ABT_eventual_set() or ABT_eventual_reset() is called for eventual. The memory buffer is read-only, so rewriting the contents of the obtained memory buffer causes undefined behavior.
The readiness of an eventual is managed atomically.
ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_EVENTUAL is returned if eventual is ABT_EVENTUAL_NULL.is_ready is NULL, the results are undefined.value is accessed after freeing eventual, the results are undefined.value is modified, the results are undefined.| [in] | eventual | handle to the eventual |
| [out] | value | pointer to the memory buffer of the eventual |
| [out] | is_ready | user flag |
Definition at line 236 of file eventual.c.
| int ABT_eventual_wait | ( | ABT_eventual | eventual, |
| void ** | value | ||
| ) |
Wait on an eventual.
The caller of ABT_eventual_wait() waits on the eventual eventual. If eventual is ready, this routine returns immediately. If eventual is not ready, the caller suspends and will be resumed once eventual gets ready.
If value is not NULL, value is set to the memory buffer of eventual. If value is not NULL but the size of the memory buffer of eventual (i.e., nbytes passed to ABT_eventual_create()) is zero, value is set to NULL.
The memory buffer pointed to by value is deallocated when eventual is freed by ABT_eventual_free(). The memory buffer is properly aligned for storage of any type of object that has the given size. If the data written by ABT_eventual_set() is smaller than the size of the memory buffer of eventual, the contents of the memory buffer that was not written by ABT_eventual_set() are undefined. The contents of the memory buffer get undefined if either ABT_eventual_set() or ABT_eventual_reset() is called for eventual. The memory buffer is read-only, so rewriting the contents of the obtained memory buffer causes undefined behavior.
The readiness of an eventual is managed atomically.
ABT_ERR_EVENTUAL is returned.eventual is not ready. Otherwise, this routine does not switch the context of the calling ULT unless any user-defined function that is involved in this routine switch the context of the calling ULT.eventual is not ready. Otherwise, this routine does not switch the context of the calling ULT unless any user-defined function that is involved in this routine switch the context of the calling ULT.ABT_SUCCESS is returned if this routine succeeds.ABT_ERR_INV_EVENTUAL is returned if eventual is ABT_EVENTUAL_NULL.ABT_ERR_EVENTUAL is returned if the caller is a tasklet.value is accessed after freeing eventual, the results are undefined.value is modified, the results are undefined.| [in] | eventual | eventual handle |
| [out] | value | memory buffer of the eventual |
Definition at line 163 of file eventual.c.
1.8.17