2 #include "lfds710_ringbuffer_internal.h"
4 /***** private prototypes *****/
5 static void lfds710_ringbuffer_internal_validate( struct lfds710_ringbuffer_state *rs,
6 struct lfds710_misc_validation_info *vi,
7 enum lfds710_misc_validity *lfds710_queue_umm_validity,
8 enum lfds710_misc_validity *lfds710_freelist_validity );
12 /****************************************************************************/
13 void lfds710_ringbuffer_query( struct lfds710_ringbuffer_state *rs,
14 enum lfds710_ringbuffer_query query_type,
18 LFDS710_PAL_ASSERT( rs != NULL );
19 // TRD : query_type can be any value in its range
21 LFDS710_MISC_BARRIER_LOAD;
25 case LFDS710_RINGBUFFER_QUERY_SINGLETHREADED_GET_COUNT:
26 LFDS710_PAL_ASSERT( query_input == NULL );
27 LFDS710_PAL_ASSERT( query_output != NULL );
29 lfds710_queue_umm_query( &rs->qumms, LFDS710_QUEUE_UMM_QUERY_SINGLETHREADED_GET_COUNT, NULL, query_output );
32 case LFDS710_RINGBUFFER_QUERY_SINGLETHREADED_VALIDATE:
33 // TRD : query_input can be NULL
34 LFDS710_PAL_ASSERT( query_output != NULL );
36 lfds710_ringbuffer_internal_validate( rs, (struct lfds710_misc_validation_info *) query_input, (enum lfds710_misc_validity *) query_output, ((enum lfds710_misc_validity *) query_output)+1 );
47 /****************************************************************************/
48 static void lfds710_ringbuffer_internal_validate( struct lfds710_ringbuffer_state *rs,
49 struct lfds710_misc_validation_info *vi,
50 enum lfds710_misc_validity *lfds710_queue_umm_validity,
51 enum lfds710_misc_validity *lfds710_freelist_validity )
53 LFDS710_PAL_ASSERT( rs != NULL );
54 // TRD : vi can be NULL
55 LFDS710_PAL_ASSERT( lfds710_queue_umm_validity != NULL );
56 LFDS710_PAL_ASSERT( lfds710_freelist_validity != NULL );
60 lfds710_queue_umm_query( &rs->qumms, LFDS710_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE, NULL, lfds710_queue_umm_validity );
61 lfds710_freelist_query( &rs->fs, LFDS710_FREELIST_QUERY_SINGLETHREADED_VALIDATE, NULL, lfds710_freelist_validity );
66 struct lfds710_misc_validation_info
70 queue_vi.min_elements = 0;
71 freelist_vi.min_elements = 0;
72 queue_vi.max_elements = vi->max_elements;
73 freelist_vi.max_elements = vi->max_elements;
75 lfds710_queue_umm_query( &rs->qumms, LFDS710_QUEUE_UMM_QUERY_SINGLETHREADED_VALIDATE, &queue_vi, lfds710_queue_umm_validity );
76 lfds710_freelist_query( &rs->fs, LFDS710_FREELIST_QUERY_SINGLETHREADED_VALIDATE, &freelist_vi, lfds710_freelist_validity );