samples: zbus: add isolated pool to msg_sub sample
Add isolated pool (static and dynamic) to the sample illustrating how to use that and performing some testing in different scenarios. Signed-off-by: Rodrigo Peixoto <rodrigopex@gmail.com>
This commit is contained in:
parent
3b10caf96e
commit
6ec617340f
5 changed files with 248 additions and 4 deletions
|
|
@ -7,4 +7,9 @@ config ZBUS_MSG_SUBSCRIBER_SAMPLE
|
|||
select SYS_HEAP_LISTENER
|
||||
select SYS_HEAP_RUNTIME_STATS
|
||||
|
||||
config ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE
|
||||
int "Set size of the isolated pool"
|
||||
default 32
|
||||
depends on ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION
|
||||
|
||||
source "Kconfig.zephyr"
|
||||
|
|
|
|||
|
|
@ -6,8 +6,9 @@
|
|||
|
||||
Overview
|
||||
********
|
||||
This sample illustrates how to use a message subscriber in different
|
||||
ways in conjunction with other types of observers.
|
||||
This sample illustrates how to use a message subscriber in different ways with other types of
|
||||
observers. It is possible to explore the pool isolation feature by setting the pool size and if it
|
||||
is static or dynamic by setting the proper :kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC`.
|
||||
|
||||
Building and Running
|
||||
********************
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ CONFIG_LOG=y
|
|||
CONFIG_LOG_MODE_MINIMAL=y
|
||||
CONFIG_ASSERT=y
|
||||
CONFIG_BOOT_BANNER=n
|
||||
CONFIG_MAIN_THREAD_PRIORITY=5
|
||||
CONFIG_MAIN_THREAD_PRIORITY=3
|
||||
CONFIG_ZBUS=y
|
||||
CONFIG_ZBUS_LOG_LEVEL_INF=y
|
||||
CONFIG_ZBUS_CHANNEL_NAME=y
|
||||
|
|
|
|||
|
|
@ -181,3 +181,225 @@ tests:
|
|||
tags: zbus
|
||||
integration_platforms:
|
||||
- qemu_x86
|
||||
|
||||
sample.zbus.msg_subscriber_dynamic_isolated:
|
||||
harness: console
|
||||
extra_configs:
|
||||
- CONFIG_ZBUS_LOG_LEVEL_DBG=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION=y
|
||||
harness_config:
|
||||
type: multi_line
|
||||
ordered: false
|
||||
regex:
|
||||
- "^.*?I: ----> Publishing to acc_data_chan channel"
|
||||
- "^.*?I: AL Memory allocated \\d{1,3} bytes. Total allocated \\d{1,3} bytes$"
|
||||
- "^.*?I: FR Memory freed \\d{1,3} bytes. Total allocated 0 bytes$"
|
||||
- "^.*?D: 0 -> bar_sub1"
|
||||
- "^.*?D: 1 -> bar_msg_sub1"
|
||||
- "^.*?D: 2 -> bar_msg_sub2"
|
||||
- "^.*?D: 3 -> bar_msg_sub3"
|
||||
- "^.*?D: 4 -> bar_msg_sub4"
|
||||
- "^.*?D: 5 -> bar_msg_sub5"
|
||||
- "^.*?D: 6 -> bar_msg_sub6"
|
||||
- "^.*?D: 7 -> bar_msg_sub7"
|
||||
- "^.*?D: 8 -> bar_msg_sub8"
|
||||
- "^.*?D: 9 -> bar_msg_sub9"
|
||||
- "^.*?D: 10 -> foo_lis"
|
||||
- "^.*?D: 11 -> bar_msg_sub10"
|
||||
- "^.*?D: 12 -> bar_msg_sub11"
|
||||
- "^.*?D: 13 -> bar_msg_sub12"
|
||||
- "^.*?D: 14 -> bar_msg_sub13"
|
||||
- "^.*?D: 15 -> bar_msg_sub14"
|
||||
- "^.*?D: 16 -> bar_msg_sub15"
|
||||
- "^.*?D: 17 -> bar_msg_sub16"
|
||||
- "^.*?D: 18 -> bar_sub2"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=3, y=30, z=300"
|
||||
tags: zbus
|
||||
integration_platforms:
|
||||
- qemu_x86
|
||||
sample.zbus.msg_subscriber_dynamic_isolated_too_small:
|
||||
harness: console
|
||||
extra_configs:
|
||||
- CONFIG_ZBUS_LOG_LEVEL_DBG=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE=2
|
||||
harness_config:
|
||||
type: multi_line
|
||||
ordered: false
|
||||
regex:
|
||||
- "^.*?I: ----> Publishing to acc_data_chan channel"
|
||||
- "^.*?I: AL Memory allocated \\d{1,3} bytes. Total allocated \\d{1,3} bytes$"
|
||||
- "^.*?I: FR Memory freed \\d{1,3} bytes. Total allocated 0 bytes$"
|
||||
- "^.*?D: 0 -> bar_sub1"
|
||||
- "^.*?D: 1 -> bar_msg_sub1"
|
||||
- "^.*?E: could not deliver notification to observer bar_msg_sub2. Error code -12"
|
||||
tags: zbus
|
||||
integration_platforms:
|
||||
- qemu_x86
|
||||
sample.zbus.msg_subscriber_static_isolated:
|
||||
harness: console
|
||||
extra_configs:
|
||||
- CONFIG_ZBUS_LOG_LEVEL_DBG=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC_DATA_SIZE=16
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE=32
|
||||
harness_config:
|
||||
type: multi_line
|
||||
ordered: false
|
||||
regex:
|
||||
- "^.*?I: ----> Publishing to acc_data_chan channel"
|
||||
- "^.*?D: 0 -> bar_sub1"
|
||||
- "^.*?D: 1 -> bar_msg_sub1"
|
||||
- "^.*?D: 2 -> bar_msg_sub2"
|
||||
- "^.*?D: 3 -> bar_msg_sub3"
|
||||
- "^.*?D: 4 -> bar_msg_sub4"
|
||||
- "^.*?D: 5 -> bar_msg_sub5"
|
||||
- "^.*?D: 6 -> bar_msg_sub6"
|
||||
- "^.*?D: 7 -> bar_msg_sub7"
|
||||
- "^.*?D: 8 -> bar_msg_sub8"
|
||||
- "^.*?D: 9 -> bar_msg_sub9"
|
||||
- "^.*?D: 10 -> foo_lis"
|
||||
- "^.*?D: 11 -> bar_msg_sub10"
|
||||
- "^.*?D: 12 -> bar_msg_sub11"
|
||||
- "^.*?D: 13 -> bar_msg_sub12"
|
||||
- "^.*?D: 14 -> bar_msg_sub13"
|
||||
- "^.*?D: 15 -> bar_msg_sub14"
|
||||
- "^.*?D: 16 -> bar_msg_sub15"
|
||||
- "^.*?D: 17 -> bar_msg_sub16"
|
||||
- "^.*?D: 18 -> bar_sub2"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=1, y=10, z=100"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=2, y=20, z=200"
|
||||
- "^.*?I: From listener foo_lis -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub1 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub2 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub3 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub4 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub5 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub6 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub7 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub8 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub9 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub10 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub11 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub12 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub13 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub14 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub15 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From msg subscriber bar_msg_sub16 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From subscriber bar_sub1 -> Acc x=3, y=30, z=300"
|
||||
- "^.*?I: From subscriber bar_sub2 -> Acc x=3, y=30, z=300"
|
||||
tags: zbus
|
||||
integration_platforms:
|
||||
- qemu_x86
|
||||
sample.zbus.msg_subscriber_static_isolated_too_small:
|
||||
harness: console
|
||||
extra_configs:
|
||||
- CONFIG_ZBUS_LOG_LEVEL_DBG=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC_DATA_SIZE=16
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION=y
|
||||
- CONFIG_ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE=2
|
||||
harness_config:
|
||||
type: multi_line
|
||||
ordered: false
|
||||
regex:
|
||||
- "^.*?I: ----> Publishing to acc_data_chan channel"
|
||||
- "^.*?D: 0 -> bar_sub1"
|
||||
- "^.*?D: 1 -> bar_msg_sub1"
|
||||
- "^.*?E: could not deliver notification to observer bar_msg_sub2. Error code -12"
|
||||
tags: zbus
|
||||
integration_platforms:
|
||||
- qemu_x86
|
||||
|
|
|
|||
|
|
@ -169,10 +169,26 @@ ZBUS_CHAN_ADD_OBS(acc_data_chan, bar_msg_sub16, 3);
|
|||
|
||||
static struct acc_msg acc = {.x = 1, .y = 10, .z = 100};
|
||||
|
||||
#if defined(CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION)
|
||||
#include <zephyr/net/buf.h>
|
||||
|
||||
#if defined(CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC)
|
||||
NET_BUF_POOL_HEAP_DEFINE(isolated_pool, (CONFIG_ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE),
|
||||
(sizeof(struct zbus_channel *)), NULL);
|
||||
#else
|
||||
NET_BUF_POOL_FIXED_DEFINE(isolated_pool, (CONFIG_ZBUS_MSG_SUBSCRIBER_SAMPLE_ISOLATED_BUF_POOL_SIZE),
|
||||
(CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC_DATA_SIZE),
|
||||
sizeof(struct zbus_channel *), NULL);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
total_allocated = 0;
|
||||
#if defined(CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION)
|
||||
zbus_chan_set_msg_sub_pool(&acc_data_chan, &isolated_pool);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC)
|
||||
|
||||
|
|
@ -183,7 +199,7 @@ int main(void)
|
|||
|
||||
while (1) {
|
||||
LOG_INF("----> Publishing to %s channel", zbus_chan_name(&acc_data_chan));
|
||||
zbus_chan_pub(&acc_data_chan, &acc, K_SECONDS(1));
|
||||
zbus_chan_pub(&acc_data_chan, &acc, K_NO_WAIT);
|
||||
acc.x += 1;
|
||||
acc.y += 10;
|
||||
acc.z += 100;
|
||||
|
|
|
|||
Loading…
Reference in a new issue