1# Copyright (c) 2022 Nordic Semiconductor (ASA)
2# SPDX-License-Identifier: Apache-2.0
3
4config IPC_SERVICE_ICMSG_SHMEM_ACCESS_SYNC
5	bool "Synchronize access to shared memory"
6	depends on MULTITHREADING
7	default y
8	help
9	  Provide synchronization access to shared memory at a library level.
10	  This option is enabled by default to allow to use sending API from
11	  multiple contexts. Mutex is used to guard access to the memory.
12	  This option can be safely disabled if an application ensures data
13	  are sent from single context.
14
15config IPC_SERVICE_ICMSG_SHMEM_ACCESS_TO_MS
16	int "Mutex lock timeout in milliseconds"
17	depends on IPC_SERVICE_ICMSG_SHMEM_ACCESS_SYNC
18	range 1 5
19	default 1
20	help
21	  Maximum time to wait, in milliseconds, for access to send data with
22	  backends basing on icmsg library. This time should be relatively low.
23
24config IPC_SERVICE_BACKEND_ICMSG_WQ_ENABLE
25	bool "Use dedicated workqueue"
26	depends on MULTITHREADING
27	default y
28	help
29	  Enable dedicated workqueue thread for the ICMsg backend.
30	  Disabling this configuration will cause the ICMsg backend to
31	  process incoming data through the system workqueue context, and
32	  therefore reduces the RAM footprint of the backend.
33	  Disabling this config may result in deadlocks in certain usage
34	  scenarios, such as when synchronous IPC is executed from the system
35	  workqueue context.
36	  The callbacks coming from the backend are executed from the workqueue
37	  context.
38	  When the option is disabled, the user must obey the restrictions
39	  imposed by the system workqueue, such as never performing blocking
40	  operations from within the callback.
41
42if IPC_SERVICE_BACKEND_ICMSG_WQ_ENABLE
43
44config IPC_SERVICE_BACKEND_ICMSG_WQ_STACK_SIZE
45	int "Size of RX work queue stack"
46	default 1280
47	help
48	  Size of stack used by work queue RX thread. This work queue is
49	  created to prevent notifying service users about received data
50	  from the system work queue. The queue is shared among instances.
51
52config IPC_SERVICE_BACKEND_ICMSG_WQ_PRIORITY
53	int "Priority of RX work queue thread"
54	default -1
55	range -256 -1
56	help
57	  Priority of the ICMSG RX work queue thread.
58	  The ICMSG library in its simplicity requires the workqueue to execute
59	  at a cooperative priority.
60
61endif
62
63config IPC_SERVICE_ICMSG_UNBOUND_ENABLED_ALLOWED
64	bool "Instance is allowed to set unbound to enabled"
65	default y
66	help
67	  Controls whether the "enabled" value of the "unbound"
68	  property is allowed to be set in any of the ICMsg instances. You
69	  can set this option to "n", if you want to reduce code size and
70	  no instance of ICMsg is using unbound functionality.
71
72config IPC_SERVICE_ICMSG_UNBOUND_DISABLED_ALLOWED
73	bool "Instance is allowed to set unbound to disabled"
74	default y
75	help
76	  Controls whether the "disabled" value of the "unbound"
77	  property is allowed to be set in any of the ICMsg instances. You
78	  can set this option to "n", if you want to reduce code size and
79	  all instances of ICMsg are using unbound functionality.
80
81config IPC_SERVICE_ICMSG_UNBOUND_DETECT_ALLOWED
82	bool "Instance is allowed to set unbound to detect"
83	default y
84	help
85	  Controls whether the "detect" value of the "unbound"
86	  property is allowed to be set in any of the ICMsg instances. You
87	  can set this option to "n", if you want to reduce code size and
88	  all instances of ICMsg are using unbound detection functionality.
89
90# The Icmsg library in its simplicity requires the system workqueue to execute
91# at a cooperative priority.
92config SYSTEM_WORKQUEUE_PRIORITY
93	range -256 -1 if !IPC_SERVICE_BACKEND_ICMSG_WQ_ENABLE
94
95config PBUF
96	bool "Packed buffer support library"
97	help
98	  The packet buffer implements lightweight unidirectional packet buffer
99	  with read/write semantics on top of a memory region shared by the
100	  reader and writer. It optionally embeds cache and memory barrier
101	  management to ensure correct data access.
102
103if PBUF
104
105config PBUF_RX_READ_BUF_SIZE
106	int "Size of PBUF read buffer in bytes"
107	default 128
108
109endif # PBUF
110