]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libshared/src/libshared_memory/libshared_memory_query.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libshared / src / libshared_memory / libshared_memory_query.c
1 /***** includes *****/
2 #include "libshared_memory_internal.h"
3
4
5
6
7
8 /****************************************************************************/
9 #pragma warning( disable : 4100 )
10
11 void libshared_memory_query( struct libshared_memory_state *ms, enum libshared_memory_query query_type, void *query_input, void *query_output )
12 {
13   LFDS710_PAL_ASSERT( ms != NULL );
14   // TRD : query_type can be any value in its range
15
16   LFDS710_MISC_BARRIER_LOAD;
17
18   switch( query_type )
19   {
20     case LIBSHARED_MEMORY_QUERY_GET_AVAILABLE:
21     {
22       lfds710_pal_uint_t
23         available_bytes = 0;
24
25       struct lfds710_list_asu_element
26         *lasue = NULL;
27
28       struct libshared_memory_element
29         *me;
30
31       LFDS710_PAL_ASSERT( query_input == NULL );
32       LFDS710_PAL_ASSERT( query_output != NULL );
33
34       while( LFDS710_LIST_ASU_GET_START_AND_THEN_NEXT(ms->list_of_allocations,lasue) )
35       {
36         me = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue );
37         available_bytes += me->current_memory_size_in_bytes;
38       }
39
40       *(lfds710_pal_uint_t *) query_output = available_bytes;
41     }
42     break;
43   }
44
45   return;
46 }
47
48 #pragma warning( default : 4100 )
49