https://www.liblfds.org/mediawiki/index.php?title=r7.1.0:Function_lfds710_queue_bmm_query&feed=atom&action=historyr7.1.0:Function lfds710 queue bmm query - Revision history2024-03-29T01:29:03ZRevision history for this page on the wikiMediaWiki 1.36.0https://www.liblfds.org/mediawiki/index.php?title=r7.1.0:Function_lfds710_queue_bmm_query&diff=827&oldid=prevAdmin at 18:41, 30 May 20162016-05-30T18:41:09Z<p></p>
<p><b>New page</b></p><div>{{DISPLAYTITLE:function lfds710_queue_bmm_query}}<br />
==Source Files==<br />
└───liblfds710<br />
├───inc<br />
│ └───liblfds710<br />
│ lfds710_queue_bmm.h<br />
└───src<br />
└───lfds710_queue<br />
lfds710_queue_bmm_query.c<br />
<br />
==Enums==<br />
enum [[r7.1.0:enum lfds710_queue_bmm_query|lfds710_queue_bmm_query]]<br />
{<br />
LFDS710_QUEUE_BMM_QUERY_GET_POTENTIALLY_INACCURATE_COUNT,<br />
LFDS710_QUEUE_BMM_QUERY_SINGLETHREADED_VALIDATE<br />
};<br />
<br />
==Opaque Structures==<br />
struct [[r7.1.0:struct lfds710_queue_bmm_state|lfds710_queue_bmm_state]];<br />
<br />
==Prototype==<br />
void lfds710_queue_bmm_query( struct lfds710_queue_bmm_state *qbmms,<br />
enum lfds710_queue_bmm_query query_type,<br />
void *query_input,<br />
void *query_output );<br />
<br />
==Parameters==<br />
''struct lfds710_queue_umm_state *qbmms''<br />
: A pointer to an initialized ''struct lfds710_queue_bmm_state''.<br />
<br />
''enum lfds710_queue_bmm_query query_type''<br />
: Indicates which query to perform.<br />
<br />
''void *query_input''<br />
: A pointer to data, or data cast to a void pointer, which is input data required by query indicated by ''query_type''.<br />
<br />
''void *query_output''<br />
: A pointer to store into which the requested information is placed, where the output data varies by the query indicted by ''query_type''.<br />
<br />
==Queries==<br />
''void *query_input''<br />
: A pointer to input data for the query, where the data varies by query;<br />
:: ''LFDS710_QUEUE_BMM_QUERY_GET_POTENTIALLY_INACCURATE_COUNT''<br />
::: ''query_input'' is NULL.<br />
:: ''LFDS710_QUEUE_BMM_QUERY_SINGLETHREADED_VALIDATE''<br />
::: ''query_input'' can be NULL, or or can be a pointer to a ''struct lfds710_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.<br />
<br />
''void *query_output''<br />
: A pointer to output store for the query, where the output varies by query;<br />
:: ''LFDS710_QUEUE_BMM_QUERY_GET_POTENTIALLY_INACCURATE_COUNT''<br />
::: Points to a ''lfds710_pal_uint_t'', which is set to the number of elements in the queue.<br />
:: ''LFDS710_QUEUE_BMM_QUERY_SINGLETHREADED_VALIDATE''<br />
::: Points to an enum ''[[r7.1.0:enum lfds710_misc_validity|lfds710_misc_validity]]'', which is set to indicate the result of the validation operation.<br />
<br />
==Notes==<br />
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.<br />
<br />
The LFDS710_QUEUE_BMM_QUERY_GET_POTENTIALLY_INACCURATE_COUNT query is not guaranteed to be accurate. Where enqueue and dequeue operations are not guaranteed to be visible by the time the function calls return, similarly, it may be that a count will during its operation not see an element which has been enqueued, or see that an element has been dequeued. In general however it should be bang on; it's just it's not guaranteed. <br />
<br />
==See Also==<br />
* [[r7.1.0:Queue (bounded, many producer, many consumer)|Queue (bounded, many producer, many consumer)]]</div>Admin