r6.0.0:lfds600_stack_query
Jump to navigation
Jump to search
Source Files
/liblfds600/src/lfds600_stack/lfds600_stack_query.c /liblfds600/inc/liblfds600.h
Enums
enum lfds600_stack_query_type { LFDS600_STACK_QUERY_ELEMENT_COUNT };
Prototype
void lfds600_stack_query( struct lfds600_stack_state *ss, enum lfds600_stack_query_type query_type, void *query_input, void *query_output );
Parameters
struct lfds600_stack_state *ss
- A stack state as allocated by lfds600_stack_new.
enum lfds600_stack_query_type query_type
- Indicates which query to perform.
void *query_input
- A pointer to data, or data cast to a void pointer, which is input data required by requested query. Only some queries require input data. If no input data is required, set query_input to NULL.
void *query_output
- The address of a variable into which the requested information is placed. The type of variable varies on the type of query; see Notes.
Return Value
No return value. The variable pointed to by query_result (the type of which will vary depending on the query, see Notes) will be set; this is the mechanism by which information is passed back to the caller. Currently, no query can fail, so there is no notion of an error value.
Notes
The following query is currently supported;
- LFDS600_STACK_QUERY_ELEMENT_COUNT
- query_input is NULL.
- query_output must point to an lfds600_atom_t and this variable is set to hold the total count of elements belonging to the stack's freelist (not the free count, the total count). It is an approximate value, since the count cannot be atomically updated as elements are added to the freelist. However, the count is incremented immediately after an element is added, so the value will in general be correct or very nearly correct and can at most be inaccurate by the number of threads concurrently adding new elements to the stack (which occurs by calling lfds600_stack_guaranteed_push).