ARGOBOTS
1.1
|
This group is for the self wok unit. More...
Functions | |
int | ABT_self_get_xstream (ABT_xstream *xstream) |
Get an execution stream that is running the calling work unit. More... | |
int | ABT_self_get_xstream_rank (int *rank) |
Return a rank of an execution stream that is running the calling work unit. More... | |
int | ABT_self_get_thread (ABT_thread *thread) |
Get the calling work unit. More... | |
int | ABT_self_get_thread_id (ABT_unit_id *id) |
Get ID of the calling work unit. More... | |
int | ABT_self_get_task (ABT_thread *thread) |
Get the calling work unit. More... | |
int | ABT_self_get_task_id (ABT_unit_id *id) |
Get ID of the calling work unit. More... | |
int | ABT_self_set_specific (ABT_key key, void *value) |
Associate a value with a work-unit-specific data key in the calling work unit. More... | |
int | ABT_self_get_specific (ABT_key key, void **value) |
Get a value associated with a work-unit-specific data key in the calling work unit. More... | |
int | ABT_self_get_type (ABT_unit_type *type) |
Obtain a type of the caller. More... | |
int | ABT_self_is_primary (ABT_bool *is_primary) |
Check if the caller is the primary ULT. More... | |
int | ABT_self_on_primary_xstream (ABT_bool *on_primary) |
Check if the caller is running on the primary execution stream. More... | |
int | ABT_self_get_last_pool (ABT_pool *pool) |
Get the last pool of the calling work unit. More... | |
int | ABT_self_get_last_pool_id (int *pool_id) |
Get ID of the last pool of the calling work unit. More... | |
int | ABT_self_set_associated_pool (ABT_pool pool) |
Set an associated pool for the calling work unit. More... | |
int | ABT_self_get_unit (ABT_unit *unit) |
Get a unit handle of the calling work unit. More... | |
int | ABT_self_yield (void) |
Yield the calling ULT to its parent ULT. More... | |
int | ABT_self_suspend (void) |
Suspend the calling ULT. More... | |
int | ABT_self_exit (void) |
Terminate a calling ULT. More... | |
int | ABT_self_set_arg (void *arg) |
Set an argument for a work-unit function of the calling work unit. More... | |
int | ABT_self_get_arg (void **arg) |
Retrieve an argument for a work-unit function of the calling work unit. More... | |
int | ABT_self_get_thread_func (void(**thread_func)(void *)) |
Retrieve a work-unit function of the calling work unit. More... | |
int | ABT_self_is_unnamed (ABT_bool *is_unnamed) |
Check if the calling work unit is unnamed. More... | |
This group is for the self wok unit.
int ABT_self_exit | ( | void | ) |
Terminate a calling ULT.
ABT_self_exit()
terminates the calling ULT. This routine does not return if it succeeds.
ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_THREAD
is returned if the caller is a tasklet.ABT_ERR_INV_THREAD
is returned if the caller is the primary ULT.int ABT_self_get_arg | ( | void ** | arg | ) |
Retrieve an argument for a work-unit function of the calling work unit.
ABT_self_get_arg()
returns the argument that is passed to the caller's work-unit function through arg
.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED
if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] arg
is set to NULL
if an error occurs.
[Argobots 2.0] arg
is not updated if an error occurs.
arg
when an error occurs. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.arg
is NULL
, the results are undefined.[out] | arg | argument for the caller's function |
int ABT_self_get_last_pool | ( | ABT_pool * | pool | ) |
Get the last pool of the calling work unit.
ABT_self_get_last_pool()
returns the last pool associated with the calling work unit through pool
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.pool
is NULL
, the results are undefined.[out] | pool | pool handle |
int ABT_self_get_last_pool_id | ( | int * | pool_id | ) |
Get ID of the last pool of the calling work unit.
ABT_self_get_last_pool_id()
returns the last pool's ID of the calling work unit through pool_id
.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED
if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] pool_id
is set to -1 if an error occurs.
[Argobots 2.0] pool_id
is not updated if an error occurs.
pool_id
when an error occurs. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.pool_id
is NULL
, the results are undefined.[out] | pool_id | pool ID |
int ABT_self_get_specific | ( | ABT_key | key, |
void ** | value | ||
) |
Get a value associated with a work-unit-specific data key in the calling work unit.
ABT_self_get_specific()
returns the value in the caller associated with the work-unit-specific data key key
in the calling work unit through value
. If the caller has never set a value for key
, this routine sets value
to NULL
.
Work-unit-specific values associated with a work-unit-specific data key are read and updated atomically.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_KEY
is returned if key
is ABT_KEY_NULL
.value
is NULL
, the results are undefined.[in] | key | work-unit-specific data key handle |
[out] | value | value associated with key |
int ABT_self_get_task | ( | ABT_thread * | thread | ) |
Get the calling work unit.
The functionality of this routine is the same as ABT_self_get_thread()
.
int ABT_self_get_task_id | ( | ABT_unit_id * | id | ) |
Get ID of the calling work unit.
The functionality of this routine is the same as ABT_self_get_thread_id()
.
int ABT_self_get_thread | ( | ABT_thread * | thread | ) |
Get the calling work unit.
ABT_self_get_thread()
returns the handle of the calling work unit through thread
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.thread
is NULL
, the results are undefined.[out] | thread | work unit handle |
int ABT_self_get_thread_func | ( | void(**)(void *) | thread_func | ) |
Retrieve a work-unit function of the calling work unit.
ABT_self_get_thread_func()
returns the work-unit function of the calling work unit through thread_func
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.thread_func
is NULL
, the results are undefined.[out] | thread_func | the caller's function |
int ABT_self_get_thread_id | ( | ABT_unit_id * | id | ) |
Get ID of the calling work unit.
ABT_self_get_thread_id()
returns the ID of the calling work unit through id
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.id
is NULL
, the results are undefined.[out] | id | ID of the calling work unit |
int ABT_self_get_type | ( | ABT_unit_type * | type | ) |
Obtain a type of the caller.
ABT_self_get_type()
returns a type of the calling work unit through type
. If the caller is a ULT, type
is set to ABT_UNIT_TYPE_THREAD
. If the caller is a tasklet, type
is set to ABT_UNIT_TYPE_TASK
. Otherwise (i.e., if the caller is an external thread), type
is set to ABT_UNIT_TYPE_EXT
.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM
is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED
if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] type
is set to ABT_UNIT_TYPE_EXT
if an error occurs.
[Argobots 2.0] type
is not updated if an error occurs.
type
when an error occurs. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.type
is NULL
, the results are undefined.[out] | type | work unit type |
int ABT_self_get_unit | ( | ABT_unit * | unit | ) |
Get a unit handle of the calling work unit.
ABT_self_get_unit()
returns the ABT_unit
handle associated with the calling work unit through unit
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.unit
is NULL
, the results are undefined.[out] | unit | work unit handle |
int ABT_self_get_xstream | ( | ABT_xstream * | xstream | ) |
Get an execution stream that is running the calling work unit.
ABT_self_get_xstream()
returns the handle of the execution stream that is running the calling work unit through xstream
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.xstream
is NULL
, the results are undefined.[out] | xstream | execution stream handle |
int ABT_self_get_xstream_rank | ( | int * | rank | ) |
Return a rank of an execution stream that is running the calling work unit.
ABT_self_get_xstream_rank()
returns the rank of the execution stream that is running the calling work unit through rank
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.rank
is NULL
, the results are undefined.[out] | rank | execution stream rank |
int ABT_self_is_primary | ( | ABT_bool * | is_primary | ) |
Check if the caller is the primary ULT.
ABT_self_is_primary()
checks whether the caller is the primary ULT and returns the result through is_primary
. If the caller is the primary ULT, is_primary
is set to ABT_TRUE
. Otherwise, is_primary
is set to ABT_FALSE
.
[Argobots 1.x] If a tasklet calls this routine, ABT_ERR_INV_THREAD
is returned.
[Argobots 2.0] A tasklet may call this routine.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM
is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED
if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] is_primary
is set to ABT_FALSE
if an error occurs.
[Argobots 2.0] is_primary
is not updated if an error occurs.
is_primary
when an error occurs. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_THREAD
is returned if the caller is a tasklet.is_primary
is NULL
, the results are undefined.[out] | is_primary | result (ABT_TRUE: primary ULT, ABT_FALSE: not) |
int ABT_self_is_unnamed | ( | ABT_bool * | is_unnamed | ) |
Check if the calling work unit is unnamed.
ABT_self_is_unnamed()
checks if the calling work unit is unnamed and returns the result through is_unnamed
. is_unnamed
is set to ABT_TRUE
if the calling work unit is unnamed. Otherwise, is_unnamed
is set to ABT_FALSE
.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.is_unnamed
is NULL
, the results are undefined.[out] | is_unnamed | result (ABT_TRUE: unnamed, ABT_FALSE: not) |
int ABT_self_on_primary_xstream | ( | ABT_bool * | on_primary | ) |
Check if the caller is running on the primary execution stream.
ABT_self_on_primary_xstream()
checks whether the caller is running on the primary execution stream and returns the result through on_primary
. If the caller is a work unit running on the primary execution stream, on_primary
is set to ABT_TRUE
. Otherwise, on_primary
is set to ABT_FALSE
.
[Argobots 1.x] If an external thread calls this routine, ABT_ERR_INV_XSTREAM
is returned.
[Argobots 2.0] An external thread may call this routine.
[Argobots 1.x] This routine returns ABT_ERR_UNINITIALIZED
if Argobots is not initialized.
[Argobots 2.0] The results of this routine are undefined if Argobots is not initialized.
[Argobots 1.x] on_primary
is set to ABT_FALSE
if an error occurs.
[Argobots 2.0] on_primary
is not updated if an error occurs.
on_primary
when an error occurs. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.on_primary
is NULL
, the results are undefined.[out] | on_primary | result (ABT_TRUE: primary execution stream, ABT_FALSE: not) |
int ABT_self_set_arg | ( | void * | arg | ) |
Set an argument for a work-unit function of the calling work unit.
ABT_self_set_arg()
sets the argument arg
for the caller's work-unit function.
ABT_ERR_UNINITIALIZED
if Argobots is not initialized.ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_UNINITIALIZED
is returned if the Argobots runtime is not initialized.[in] | arg | argument a work-unit function of the calling work unit |
int ABT_self_set_associated_pool | ( | ABT_pool | pool | ) |
Set an associated pool for the calling work unit.
ABT_self_set_associated_pool()
changes the associated pool of the work unit thread
to the pool pool
. This routine does not yield the calling work unit.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_POOL
is returned if pool
is ABT_POOL_NULL
.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.ABT_ERR_UNIT
is returned if u_create_from_thread()
fails.[in] | pool | pool handle |
int ABT_self_set_specific | ( | ABT_key | key, |
void * | value | ||
) |
Associate a value with a work-unit-specific data key in the calling work unit.
ABT_self_set_specific()
associates a value value
with the work-unit-specific data key key
in the calling work unit. Different work units may bind different values to the same key.
Work-unit-specific values associated with a work-unit-specific data key are read and updated atomically.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_KEY
is returned if key
is ABT_KEY_NULL
.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.[in] | key | work-unit-specific data key handle |
[in] | value | value associated with key |
int ABT_self_suspend | ( | void | ) |
Suspend the calling ULT.
ABT_self_suspend()
suspends the execution of the calling ULT and switches to its parent ULT. The calling ULT is not pushed to its associated pool and its state becomes blocked. ABT_thread_resume()
awakens the suspended ULT and pushes it back to its associated pool.
ABT_ERR_INV_THREAD
is returned if this routine is called by an external thread.ABT_ERR_INV_XSTREAM
is returned if this routine is called by an external thread. ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.ABT_ERR_INV_THREAD
is returned if the caller is a tasklet.int ABT_self_yield | ( | void | ) |
Yield the calling ULT to its parent ULT.
ABT_self_yield()
yields the calling ULT and pushes the calling ULT to its associated pool. Its parent ULT will be resumed.
ABT_SUCCESS
is returned if this routine succeeds.ABT_ERR_INV_THREAD
is returned if the caller is a tasklet.ABT_ERR_INV_XSTREAM
is returned if the caller is an external thread.