function lfds711_queue_umm_query

From liblfds.org
Jump to navigation Jump to search

Source Files

└───liblfds711
    ├───inc
    │   └───liblfds711
    │           lfds711_queue_umm.h
    └───src
        └───lfds711_queue
                lfds711_queue_umm_query.c

Enums

enum lfds711_queue_umm_query
{
  LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_GET_COUNT,
  LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE
};

Opaque Structures

struct lfds711_queue_umm_state;

Prototype

void lfds711_queue_umm_query( struct lfds711_queue_umm_state *qumms,
                              enum lfds711_queue_umm_query query_type,
                              void *query_input,
                              void *query_output );

Parameters

struct lfds711_queue_umm_state *qumms

A pointer to an initialized struct lfds711_queue_umm_state.

enum lfds711_queue_umm_query 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 query indicated by query_type.

void *query_output

A pointer to store into which the requested information is placed, where the output data varies by the query indicted by query_type.

Queries

void *query_input

A pointer to input data for the query, where the data varies by query;
LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_GET_COUNT
query_input is NULL.
LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE
query_input can be NULL, or or can be a pointer to a struct lfds711_misc_validation_info, which specifies an expected min/max count, in which case validation also counts the number of elements and check they fall within the specified range.

void *query_output

A pointer to output store for the query, where the output varies by query;
LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_GET_COUNT
Points to a lfds711_pal_uint_t, which is set to the number of elements in the queue.
LFDS711_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE
Points to an enum lfds711_misc_validity, which is set to indicate the result of the validation operation.

Notes

All SINGLETHREADED queries can only be safely performed if no enqueue or dequeue operations occur while the operation runs. If enqueue or dequeue operations do occur during the execution of a SINGLETHREADED query, it is theoretically possible for the query to enter an infinite loop. Do not do this.

See Also