]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libtest/src/libtest_tests/libtest_tests_queue_bounded_singleproducer_singleconsumer_dequeuing.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libtest / src / libtest_tests / libtest_tests_queue_bounded_singleproducer_singleconsumer_dequeuing.c
1 /***** includes *****/
2 #include "libtest_tests_internal.h"
3
4
5
6
7
8 /****************************************************************************/
9 #pragma warning( disable : 4100 )
10
11 void libtest_tests_queue_bss_dequeuing( struct lfds710_list_asu_state *list_of_logical_processors, struct libshared_memory_state *ms, enum lfds710_misc_validity *dvs )
12 {
13   lfds710_pal_uint_t
14     loop;
15
16   struct lfds710_queue_bss_element
17     element_array[128];
18
19   struct lfds710_queue_bss_state
20     qs;
21
22   struct lfds710_misc_validation_info
23     vi;
24
25   void
26     *value;
27
28   LFDS710_PAL_ASSERT( list_of_logical_processors != NULL );
29   LFDS710_PAL_ASSERT( ms != NULL );
30   LFDS710_PAL_ASSERT( dvs != NULL );
31
32   /* TRD : create an empty queue
33            enqueue 128 elements
34            then dequeue the elements, in the same thread - we're API testing
35            it's a single producer queue, so we just do this in our current thread
36            since we're enqueuing and dequeuing in the same thread
37   */
38
39   *dvs = LFDS710_MISC_VALIDITY_VALID;
40
41   lfds710_queue_bss_init_valid_on_current_logical_core( &qs, element_array, 128, NULL );
42
43   for( loop = 0 ; loop < 127 ; loop++ )
44     lfds710_queue_bss_enqueue( &qs, NULL, (void *) loop );
45
46   for( loop = 0 ; loop < 127 ; loop++ )
47   {
48     lfds710_queue_bss_dequeue( &qs, NULL, &value );
49     if( (lfds710_pal_uint_t) value != 127 - loop )
50       *dvs = LFDS710_MISC_VALIDITY_INVALID_TEST_DATA;
51   }
52
53   vi.min_elements = vi.max_elements = 0;
54
55   lfds710_queue_bss_query( &qs, LFDS710_QUEUE_BSS_QUERY_VALIDATE, &vi, dvs );
56
57   lfds710_queue_bss_cleanup( &qs, NULL );
58
59   return;
60 }
61
62 #pragma warning( default : 4100 )
63