arm_subbuffer_block_cause Struct Reference
[ARM 4.1 Sub-buffers]
used to specify a block cause for a blocking transaction. More...
#include <arm41.h>
Data Fields | |
arm_subbuffer_t | header |
arm_block_cause_t | cause |
arm_int32_t | extended_cause |
This is an optional value that can be used to further qualify the type of blocking cause within the two possible blocking types: synchronous and asynchronous. | |
const arm_char_t * | description |
This is an optional null-terminated character string with a maximum length of 128 characters, including the termination character, which describes the block cause. A null value indicates that no description is provided. |
Detailed Description
used to specify a block cause for a blocking transaction.
Applications may indicate that they are blocked waiting on an external event using the arm_block_transaction() function. When the application becomes unblocked it indicates the same using arm_unblock_transaction(). Calling arm_stop_transaction() implicitly executes an arm_unblock_transaction() for every blocking condition whose end has not been explicitly indicated using arm_unblock_transaction().
Calling arm_block_transaction() with no further information does not indicate the cause of the blocking condition. The Block Cause sub-buffer provides a means to indicate the cause of the blocking condition. Its use is optional. It is valid on the following calls:
In the case of application servers that loop on queued message requests, it is important to distinguish between the application being blocked and a message being blocked (or simply not available yet). arm_block_transaction() and arm_unblock_transaction() are used only within the scope of paired arm_start_transaction() and arm_stop_transaction() calls that indicate the time that work is being processed. If the application server is idle waiting for work to process it would not report this time using arm_block_transaction() and arm_unblock_transaction().
Field Documentation
A value that indicates the cause of the blocking condition. All non-negative values are defined by or reserved by this specification:
- ARM_BLOCK_CAUSE_SYNCHRONOUS_EVENT
- ARM_BLOCK_CAUSE_ASYNCHRONOUS_EVENT
- All other values: Reserved for future use. All implementations should accept these values and ignore them if the meaning is unknown. This enables compatibility in future versions of the ARM standard if some of these values are defined.
This is an optional value that can be used to further qualify the type of blocking cause within the two possible blocking types: synchronous and asynchronous.
- All non-negative values: Reserved by the standard. It is anticipated that ranges will be assigned to organizations that instrument their software.
- Negative values:The extended blocking cause is not defined by the standard. There are no restrictions on who uses these values or what they mean.
header.format must be set to ARM_SUBBUFFER_BLOCK_CAUSE
The documentation for this struct was generated from the following file: