2 #include "libtest_tests_internal.h"
8 /****************************************************************************/
9 #pragma warning( disable : 4100 )
11 void libtest_tests_queue_bmm_count( struct lfds710_list_asu_state *list_of_logical_processors, struct libshared_memory_state *ms, enum lfds710_misc_validity *dvs )
24 struct lfds710_queue_bmm_element
27 struct lfds710_queue_bmm_state
30 LFDS710_PAL_ASSERT( list_of_logical_processors != NULL );
31 LFDS710_PAL_ASSERT( ms != NULL );
32 LFDS710_PAL_ASSERT( dvs != NULL );
34 /* TRD : make a queue with 8 elements
35 1. enqueue to full, count
36 2. dequeue to empty, count
37 3. enqueue to full, half dequeue, add two more, count
40 *dvs = LFDS710_MISC_VALIDITY_VALID;
42 lfds710_queue_bmm_init_valid_on_current_logical_core( &qbmms, qbmme_array, 8, NULL );
44 // TRD : loop a few times
45 for( loop = 0 ; loop < 64 ; loop++ )
47 // TRD : enqueue two (but the queue may be full, so we might only queue one)
48 for( subloop = 0 ; subloop < 2 ; subloop++ )
50 rv = lfds710_queue_bmm_enqueue( &qbmms, NULL, NULL );
52 if( rv == 1 and expected_count == 8 )
53 *dvs = LFDS710_MISC_VALIDITY_INVALID_TEST_DATA;
55 if( rv == 1 and expected_count < 8 )
60 rv = lfds710_queue_bmm_dequeue( &qbmms, (void **) &key, (void **) &value );
66 *dvs = LFDS710_MISC_VALIDITY_INVALID_TEST_DATA;
68 lfds710_queue_bmm_query( &qbmms, LFDS710_QUEUE_BMM_QUERY_GET_POTENTIALLY_INACCURATE_COUNT, NULL, (void *) &number_elements );
70 if( number_elements != expected_count )
71 *dvs = LFDS710_MISC_VALIDITY_INVALID_TEST_DATA;
74 lfds710_queue_bmm_cleanup( &qbmms, NULL );
79 #pragma warning( default : 4100 )