1 /**
2  ****************************************************************************************
3  *
4  * @file ke_env.h
5  *
6  * @brief This file contains the definition of the kernel.
7  *
8  * Copyright (C) RivieraWaves 2009-2015
9  *
10  *
11  ****************************************************************************************
12  */
13 
14 #ifndef _KE_ENV_H_
15 #define _KE_ENV_H_
16 
17 /**
18  ****************************************************************************************
19  * @addtogroup ENV Environment
20  * @ingroup KERNEL
21  * @brief Kernel Environment
22  *
23  * @{
24  ****************************************************************************************
25  */
26 
27 /*
28  * INCLUDE FILES
29  ****************************************************************************************
30  */
31 #include "rwip_config.h"          // stack configuration
32 #include "ke_config.h"            // kernel configuration
33 #include "ke_event.h"             // kernel event
34 #include "co_list.h"              // kernel queue definition
35 
36 // forward declaration
37 struct mblock_free;
38 
39 /// Kernel environment definition
40 struct ke_env_tag
41 {
42     /// Queue of sent messages but not yet delivered to receiver
43     struct co_list queue_sent;
44     /// Queue of messages delivered but not consumed by receiver
45     struct co_list queue_saved;
46     /// Queue of timers
47     struct co_list queue_timer;
48 
49     #if (KE_MEM_RW)
50     /// Root pointer = pointer to first element of heap linked lists
51     struct mblock_free * heap[KE_MEM_BLOCK_MAX];
52     /// Size of heaps
53     uint16_t heap_size[KE_MEM_BLOCK_MAX];
54 
55     #if (KE_PROFILING)
56     /// Size of heap used
57     uint16_t heap_used[KE_MEM_BLOCK_MAX];
58     /// Maximum heap memory used
59     uint32_t max_heap_used;
60     #endif //KE_PROFILING
61     #endif //KE_MEM_RW
62 };
63 
64 /// Kernel environment
65 extern struct ke_env_tag ke_env;
66 
67 /// @} ENV
68 
69 #endif // _KE_ENV_H_
70