2 #define LFDS710_QUEUE_UMM_GET_KEY_FROM_ELEMENT( queue_umm_element ) ( (queue_umm_element).key )
3 #define LFDS710_QUEUE_UMM_SET_KEY_IN_ELEMENT( queue_umm_element, new_key ) ( (queue_umm_element).key = (void *) (lfds710_pal_uint_t) (new_key) )
4 #define LFDS710_QUEUE_UMM_GET_VALUE_FROM_ELEMENT( queue_umm_element ) ( (queue_umm_element).value )
5 #define LFDS710_QUEUE_UMM_SET_VALUE_IN_ELEMENT( queue_umm_element, new_value ) ( (queue_umm_element).value = (void *) (lfds710_pal_uint_t) (new_value) )
6 #define LFDS710_QUEUE_UMM_GET_USER_STATE_FROM_STATE( queue_umm_state ) ( (queue_umm_state).user_state )
9 enum lfds710_queue_umm_query
11 LFDS710_QUEUE_UMM_QUERY_SINGLETHREADED_GET_COUNT,
12 LFDS710_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE
15 /***** structures *****/
16 struct lfds710_queue_umm_element
18 struct lfds710_queue_umm_element LFDS710_PAL_ALIGN(LFDS710_PAL_ALIGN_DOUBLE_POINTER)
19 *volatile next[PAC_SIZE];
26 struct lfds710_queue_umm_state
28 struct lfds710_queue_umm_element LFDS710_PAL_ALIGN(LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES)
29 *volatile enqueue[PAC_SIZE],
30 *volatile dequeue[PAC_SIZE];
32 lfds710_pal_uint_t volatile LFDS710_PAL_ALIGN(LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES)
35 void LFDS710_PAL_ALIGN(LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES)
38 struct lfds710_misc_backoff_state
43 /***** public prototypes *****/
44 void lfds710_queue_umm_init_valid_on_current_logical_core( struct lfds710_queue_umm_state *qumms,
45 struct lfds710_queue_umm_element *qumme_dummy,
47 // TRD : used in conjunction with the #define LFDS710_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE
49 void lfds710_queue_umm_cleanup( struct lfds710_queue_umm_state *qumms,
50 void (*element_cleanup_callback)(struct lfds710_queue_umm_state *qumms, struct lfds710_queue_umm_element *qumme, enum lfds710_misc_flag dummy_element_flag) );
52 void lfds710_queue_umm_enqueue( struct lfds710_queue_umm_state *qumms,
53 struct lfds710_queue_umm_element *qumme );
55 int lfds710_queue_umm_dequeue( struct lfds710_queue_umm_state *qumms,
56 struct lfds710_queue_umm_element **qumme );
58 void lfds710_queue_umm_query( struct lfds710_queue_umm_state *qumms,
59 enum lfds710_queue_umm_query query_type,