tizpqueue¶
-
group
tizpqueue Non-synchronized priority queue. External synchronisation is required in case it needs to be accessed safely from multiple threads.
Typedefs
-
typedef struct tiz_pqueue
tiz_pqueue_t¶ Priority queue opaque structure.
Functions
-
OMX_ERRORTYPE
tiz_pqueue_init(tiz_pqueue_t **app_pq, OMX_S32 a_max_prio, tiz_pq_cmp_f apf_cmp, tiz_soa_t *ap_soa, const char *ap_name)¶ Initialize a new empty priority queue with up to a_max_prio + 1 different priorities (i.e. priority groups [0..a_max_prio]). 0 is the highest priority.
A string of up to TIZ_PQUEUE_MAX_NAME_LEN characters that can be used during debugging to identify this queue
- Parameters
app_pq: A handle to the priority queue object to be initializeda_max_prio: Maximum number of priority groups that can be stored in the queueapf_cmp: A comparison function (used by tiz_pqueue_remove and tiz_pqueue_removep functions)ap_soa: The Tizonia’s small object allocator to allocate from. Or NULL if the Tizonia’s default allocation/deallocation routines should be used instead
- Return
OMX_ErrorNone if success, OMX_ErrorInsufficientResources otherwise
-
void
tiz_pqueue_destroy(tiz_pqueue_t *ap_pq)¶ Destroy a priority queue.
- Pre
The queue must be empty before calling this function
- Parameters
ap_pq: The priority queue to be destroyed. If NULL, or if the queue has already been detroyed, no operation is performed.
-
OMX_ERRORTYPE
tiz_pqueue_send(tiz_pqueue_t *ap_pq, void *ap_data, OMX_S32 a_prio)¶ Add an item to the end of the priority group a_prio.
- Return
OMX_ErrorNone if success, OMX_ErrorInsufficientResources otherwise
-
OMX_ERRORTYPE
tiz_pqueue_receive(tiz_pqueue_t *ap_pq, void **app_data)¶ Receive the first item from the queue. The item received is no longer in the queue.
- Return
OMX_ErrorNone if success, OMX_ErrorNoMore if empty
-
OMX_ERRORTYPE
tiz_pqueue_remove(tiz_pqueue_t *ap_pq, void *ap_data)¶ Remove an item from the queue. The item is found using the comparison function provided at initialization time (see tiz_pqueue_init).
- Return
OMX_ErrorNone if success, OMX_ErrorNoMore if not found
-
OMX_ERRORTYPE
tiz_pqueue_removep(tiz_pqueue_t *ap_pq, void *ap_data, OMX_S32 a_priority)¶ Remove an item from the queue. The item is found using the comparison function provided at initialization time (see tiz_pqueue_init). The search is restricted to the priority group a_priority.
- Return
OMX_ErrorNone if success, OMX_ErrorNoMore if not found
-
OMX_S32
tiz_pqueue_remove_func(tiz_pqueue_t *ap_pq, tiz_pq_func_f apf_func, OMX_S32 a_data1, void *ap_data2)¶ Remove from the queue all the items found using the comparison function apf_func.
- Return
The number of items removed from the queue.
-
OMX_ERRORTYPE
tiz_pqueue_first(tiz_pqueue_t *ap_pq, void **app_data)¶ Return a reference to the first item in the queue.
- Return
OMX_ErrorNone if success, OMX_ErrorNoMore if none found
-
OMX_S32
tiz_pqueue_length(const tiz_pqueue_t *ap_pq)¶ Return the number of items currently in the queue.
- Return
Number of items in the queue
-
OMX_S32
tiz_pqueue_dump(tiz_pqueue_t *ap_pq, tiz_pq_dump_item_f apf_dump)¶ This function dumps the contents of all the nodes in the queue using the apf_dump callback function.
- Return
The number of nodes processed.
-
typedef struct tiz_pqueue