2 #define LFDS700_RINGBUFFER_GET_USER_STATE_FROM_STATE( ringbuffer_state ) ( (ringbuffer_state).user_state )
5 enum lfds700_ringbuffer_query
7 LFDS700_RINGBUFFER_QUERY_SINGLETHREADED_GET_COUNT,
8 LFDS700_RINGBUFFER_QUERY_SINGLETHREADED_VALIDATE
11 /***** structures *****/
12 struct lfds700_ringbuffer_element
14 struct lfds700_freelist_element LFDS700_PAL_ALIGN(LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES)
17 struct lfds700_queue_element LFDS700_PAL_ALIGN(LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES)
20 struct lfds700_queue_element
21 *qe_use; // TRD : hack for 7.0.0; we need a new queue with no dummy element
28 struct lfds700_ringbuffer_state
30 struct lfds700_freelist_state LFDS700_PAL_ALIGN(LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES)
33 struct lfds700_queue_state LFDS700_PAL_ALIGN(LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES)
37 (*element_cleanup_callback)( struct lfds700_ringbuffer_state *rs, void *key, void *value, enum lfds700_misc_flag unread_flag ),
41 /***** public prototypes *****/
42 void lfds700_ringbuffer_init_valid_on_current_logical_core( struct lfds700_ringbuffer_state *rs,
43 struct lfds700_ringbuffer_element *re_array_inc_dummy,
44 lfds700_pal_uint_t number_elements,
45 struct lfds700_misc_prng_state *ps,
47 // TRD : used in conjunction with the #define LFDS700_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE
49 void lfds700_ringbuffer_cleanup( struct lfds700_ringbuffer_state *rs,
50 void (*element_cleanup_callback)(struct lfds700_ringbuffer_state *rs, void *key, void *value, enum lfds700_misc_flag unread_flag) );
52 int lfds700_ringbuffer_read( struct lfds700_ringbuffer_state *rs,
55 struct lfds700_misc_prng_state *ps );
57 void lfds700_ringbuffer_write( struct lfds700_ringbuffer_state *rs,
60 enum lfds700_misc_flag *overwrite_occurred_flag,
61 void **overwritten_key,
62 void **overwritten_value,
63 struct lfds700_misc_prng_state *ps );
65 void lfds700_ringbuffer_query( struct lfds700_ringbuffer_state *rs,
66 enum lfds700_ringbuffer_query query_type,