net: core: Add array support to stack info helpers
Allow caller to create array of thread stacks using NET_STACK_ARRAY_DEFINE() macro. This allows more debug information to be printed by "net stacks" command. Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
81d8d5219c
commit
159aaf1740
1 changed files with 35 additions and 0 deletions
|
@ -111,6 +111,8 @@ struct net_stack_info {
|
|||
const char *name;
|
||||
size_t orig_size;
|
||||
size_t size;
|
||||
int prio;
|
||||
int idx;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_NET_SHELL)
|
||||
|
@ -126,15 +128,45 @@ struct net_stack_info {
|
|||
.orig_size = _orig, \
|
||||
.name = #_name, \
|
||||
.pretty_name = #_pretty, \
|
||||
.prio = -1, \
|
||||
.idx = -1, \
|
||||
}
|
||||
|
||||
/* Note that the stack address needs to be fixed at runtime because
|
||||
* we cannot do it during static initialization. For name we allocate
|
||||
* some space so that the stack index can be printed too.
|
||||
*/
|
||||
#define NET_STACK_INFO_ADDR_ARRAY(_pretty, _name, _orig, _size, _addr, \
|
||||
sfx, _nmemb) \
|
||||
static struct net_stack_info \
|
||||
(NET_STACK_GET_NAME(_pretty, _name, sfx))[_nmemb] __used \
|
||||
__attribute__((__section__(".net_stack.data"))) = { \
|
||||
[0 ... (_nmemb - 1)] = { \
|
||||
.stack = _addr[0], \
|
||||
.size = _size, \
|
||||
.orig_size = _orig, \
|
||||
.name = #_name, \
|
||||
.pretty_name = #_pretty, \
|
||||
.prio = -1, \
|
||||
.idx = -1, \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NET_STACK_INFO(_pretty_name, _name, _orig, _size) \
|
||||
NET_STACK_INFO_ADDR(_pretty_name, _name, _orig, _size, _name, 0)
|
||||
|
||||
#define NET_STACK_INFO_ARRAY(_pretty_name, _name, _orig, _size, _nmemb) \
|
||||
NET_STACK_INFO_ADDR_ARRAY(_pretty_name, _name, _orig, _size, _name, \
|
||||
0, _nmemb)
|
||||
|
||||
#define NET_STACK_DEFINE(pretty_name, name, orig, size) \
|
||||
K_THREAD_STACK_DEFINE(name, size); \
|
||||
NET_STACK_INFO(pretty_name, name, orig, size)
|
||||
|
||||
#define NET_STACK_ARRAY_DEFINE(pretty_name, name, orig, size, nmemb) \
|
||||
K_THREAD_STACK_ARRAY_DEFINE(name, nmemb, size); \
|
||||
NET_STACK_INFO_ARRAY(pretty_name, name, orig, size, nmemb)
|
||||
|
||||
#else /* CONFIG_NET_SHELL */
|
||||
|
||||
#define NET_STACK_INFO(...)
|
||||
|
@ -143,6 +175,9 @@ struct net_stack_info {
|
|||
#define NET_STACK_DEFINE(pretty_name, name, orig, size) \
|
||||
K_THREAD_STACK_DEFINE(name, size)
|
||||
|
||||
#define NET_STACK_ARRAY_DEFINE(pretty_name, name, orig, size, nmemb) \
|
||||
K_THREAD_STACK_ARRAY_DEFINE(name, nmemb, size)
|
||||
|
||||
#endif /* CONFIG_NET_SHELL */
|
||||
|
||||
#define NET_STACK_DEFINE_EMBEDDED(name, size) char name[size]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue