|
ARGOBOTS
|
Functions | |
| int | ABT_eventual_create (int nbytes, ABT_eventual *neweventual) |
| Create an eventual. More... | |
| int | ABT_eventual_free (ABT_eventual *eventual) |
| Free the eventual object. More... | |
| int | ABT_eventual_wait (ABT_eventual eventual, void **value) |
| Wait on the eventual. More... | |
| int | ABT_eventual_test (ABT_eventual eventual, void **value, int *is_ready) |
| Test the readiness of an eventual. More... | |
| int | ABT_eventual_set (ABT_eventual eventual, void *value, int nbytes) |
| Signal the eventual. More... | |
| int | ABT_eventual_reset (ABT_eventual eventual) |
| Reset the readiness of the target eventual. More... | |
In Argobots, an eventual corresponds to the traditional behavior of the future concept (refer to Future). A ULT creates an eventual, which is a memory buffer that will eventually contain a value of interest. Many ULTs can wait on the eventual (a blocking call), until one ULT signals on that future.
| int ABT_eventual_create | ( | int | nbytes, |
| ABT_eventual * | neweventual | ||
| ) |
Create an eventual.
ABT_eventual_create creates an eventual and returns a handle to the newly created eventual into neweventual. If nbytes is not zero, this routine allocates a memory buffer of nbytes size and creates a list of entries for all the ULTs that will be blocked waiting for the eventual to be ready. The list is initially empty. If nbytes is zero, the eventual is used without passing the data.
| [in] | nbytes | size in bytes of the memory buffer |
| [out] | neweventual | handle to a new eventual |
| ABT_SUCCESS | on success |
Definition at line 32 of file eventual.c.
| int ABT_eventual_free | ( | ABT_eventual * | eventual | ) |
Free the eventual object.
ABT_eventual_free releases memory associated with the eventual eventual. It also deallocates the memory buffer of the eventual. If it is successfully processed, eventual is set to ABT_EVENTUAL_NULL.
| [in,out] | eventual | handle to the eventual |
| ABT_SUCCESS | on success |
Definition at line 62 of file eventual.c.
| int ABT_eventual_reset | ( | ABT_eventual | eventual | ) |
Reset the readiness of the target eventual.
ABT_eventual_reset() resets the readiness of the target eventual eventual so that it can be reused. That is, it makes eventual unready irrespective of its readiness.
| [in] | eventual | handle to the target eventual |
| ABT_SUCCESS | on success |
Definition at line 306 of file eventual.c.
| int ABT_eventual_set | ( | ABT_eventual | eventual, |
| void * | value, | ||
| int | nbytes | ||
| ) |
Signal the eventual.
ABT_eventual_set sets a value in the eventual's buffer and releases all waiting ULTs. It copies nbytes bytes from the buffer pointed to by value into the internal buffer of eventual and awakes all ULTs waiting on the eventual. Therefore, all ULTs waiting on this eventual will be ready to be scheduled.
| [in] | eventual | handle to the eventual |
| [in] | value | pointer to the memory buffer containing the data that will be copied to the memory buffer of the eventual |
| [in] | nbytes | number of bytes to be copied |
| ABT_SUCCESS | on success |
Definition at line 235 of file eventual.c.
| int ABT_eventual_test | ( | ABT_eventual | eventual, |
| void ** | value, | ||
| int * | is_ready | ||
| ) |
Test the readiness of an eventual.
ABT_eventual_test does a nonblocking test on the eventual eventual if resolved. If the eventual is not ready, is_ready would equal FALSE. If the eventual is ready, the pointer pointed to by value will point to the memory buffer associated with the eventual.
| [in] | eventual | handle to the eventual |
| [out] | value | pointer to the memory buffer of the eventual |
| [out] | is_ready | pointer to the a user flag |
| ABT_SUCCESS | on success |
Definition at line 193 of file eventual.c.
| int ABT_eventual_wait | ( | ABT_eventual | eventual, |
| void ** | value | ||
| ) |
Wait on the eventual.
ABT_eventual_wait blocks the caller ULT until the eventual eventual is resolved. If the eventual is not ready, the ULT calling this routine suspends and goes to the state BLOCKED. Internally, an entry is created per each blocked ULT to be awaken when the eventual is signaled. If the eventual is ready, the pointer pointed to by value will point to the memory buffer associated with the eventual. The system keeps a list of all the ULTs waiting on the eventual.
| [in] | eventual | handle to the eventual |
| [out] | value | pointer to the memory buffer of the eventual |
| ABT_SUCCESS | on success |
Definition at line 104 of file eventual.c.
1.8.11