]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/liblfds710/src/lfds710_ringbuffer/lfds710_ringbuffer_init.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / liblfds710 / src / lfds710_ringbuffer / lfds710_ringbuffer_init.c
1 /***** includes *****/
2 #include "lfds710_ringbuffer_internal.h"
3
4
5
6
7
8 /****************************************************************************/
9 void lfds710_ringbuffer_init_valid_on_current_logical_core( struct lfds710_ringbuffer_state *rs,
10                                                             struct lfds710_ringbuffer_element *re_array_inc_dummy,
11                                                             lfds710_pal_uint_t number_elements_inc_dummy,
12                                                             void *user_state )
13 {
14   lfds710_pal_uint_t
15     loop;
16
17   LFDS710_PAL_ASSERT( rs != NULL );
18   LFDS710_PAL_ASSERT( re_array_inc_dummy != NULL );
19   LFDS710_PAL_ASSERT( number_elements_inc_dummy >= 2 );
20   // TRD : user_state can be NULL
21
22   rs->user_state = user_state;
23
24   re_array_inc_dummy[0].qumme_use = &re_array_inc_dummy[0].qumme;
25
26   lfds710_freelist_init_valid_on_current_logical_core( &rs->fs, NULL, 0, rs );
27   lfds710_queue_umm_init_valid_on_current_logical_core( &rs->qumms, &re_array_inc_dummy[0].qumme, rs );
28
29   for( loop = 1 ; loop < number_elements_inc_dummy ; loop++ )
30   {
31     re_array_inc_dummy[loop].qumme_use = &re_array_inc_dummy[loop].qumme;
32     LFDS710_FREELIST_SET_VALUE_IN_ELEMENT( re_array_inc_dummy[loop].fe, &re_array_inc_dummy[loop] );
33     lfds710_freelist_push( &rs->fs, &re_array_inc_dummy[loop].fe, NULL );
34   }
35
36   LFDS710_MISC_BARRIER_STORE;
37
38   lfds710_misc_force_store();
39
40   return;
41 }
42