Zephyr Project API
3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
sip_svc_controller.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2023, Intel Corporation.
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef ZEPHYR_SIP_SVC_CONTROLLER_H_
8
#define ZEPHYR_SIP_SVC_CONTROLLER_H_
9
14
#ifdef CONFIG_ARM_SIP_SVC_SUBSYS
15
16
#include <
zephyr/sys/atomic.h
>
17
22
#define SIP_SVC_SUBSYS_CONDUIT_NAME_LENGTH (4U)
23
27
enum
open_state {
28
SIP_SVC_OPEN_UNLOCKED = 0,
29
SIP_SVC_OPEN_LOCKED
30
};
31
36
struct
sip_svc_client {
37
38
/* Client id internal to sip_svc*/
39
uint32_t
id;
40
/* Client's token id provided back to client during sip_svc_register() */
41
uint32_t
token;
42
/* Client's state */
43
uint32_t
state
;
44
/* Total Number of on-going transaction of the client */
45
uint32_t
active_trans_cnt;
46
/* Private data of each client , Provided during sip_svc_register() */
47
void
*priv_data;
48
/* Transaction id pool for each client */
49
struct
sip_svc_id_pool *trans_idx_pool;
50
};
51
56
struct
sip_svc_controller {
57
58
/* Initialization status*/
59
bool
init;
60
/* Total number of clients*/
61
const
uint32_t
num_clients;
62
/* Maximum allowable transactions in the system per controller*/
63
const
uint32_t
max_transactions;
64
/* Response size of buffer used for ASYNC transaction*/
65
const
uint32_t
resp_size;
66
/* Total Number of active transactions */
67
uint32_t
active_job_cnt;
68
/* Active ASYNC transactions */
69
uint32_t
active_async_job_cnt;
70
/* Supervisory call name , got from dts entry */
71
char
method[SIP_SVC_SUBSYS_CONDUIT_NAME_LENGTH];
72
/* Pointer to driver instance */
73
const
struct
device
*dev;
74
/* Pointer to client id pool */
75
struct
sip_svc_id_pool *client_id_pool;
76
/* Pointer to database for storing arguments from sip_svc_send() */
77
struct
sip_svc_id_map *trans_id_map;
78
/* Pointer to client array */
79
struct
sip_svc_client *clients;
80
/* Pointer to Buffer used for storing response from lower layers */
81
uint8_t
*async_resp_data;
82
/* Thread id of sip_svc thread */
83
k_tid_t
tid
;
84
85
#if CONFIG_ARM_SIP_SVC_SUBSYS_SINGLY_OPEN
86
/* Atomic variable to restrict one client access */
87
atomic_t
open_lock;
88
#endif
89
/* Mutex for protecting database access */
90
struct
k_mutex
data_mutex;
91
/* msgq for sending sip_svc_request to sip_svc thread */
92
struct
k_msgq
req_msgq;
93
/* sip_svc thread object */
94
struct
k_thread
thread
;
95
/* Stack object of sip_svc thread */
96
K_KERNEL_STACK_MEMBER
(
stack
, CONFIG_ARM_SIP_SVC_SUBSYS_THREAD_STACK_SIZE);
97
};
98
104
#define SIP_SVC_CONTROLLER_DEFINE(inst, conduit_name, sip_dev, sip_num_clients, \
105
sip_max_transactions, sip_resp_size) \
106
BUILD_ASSERT( \
107
((sip_num_clients <= CONFIG_ARM_SIP_SVC_SUBSYS_MAX_CLIENT_COUNT) && \
108
(sip_num_clients > 0)), \
109
"Number of client should be within 1 and ARM_SIP_SVC_SUBSYS_MAX_CLIENT_COUNT"); \
110
static STRUCT_SECTION_ITERABLE(sip_svc_controller, sip_svc_##inst) = { \
111
.method = conduit_name, \
112
.dev = sip_dev, \
113
.num_clients = sip_num_clients, \
114
.max_transactions = sip_max_transactions, \
115
.resp_size = sip_resp_size, \
116
}
117
118
#else
119
#define SIP_SVC_CONTROLLER_DEFINE(inst, conduit_name, sip_dev, sip_num_clients, \
120
sip_max_transactions, sip_resp_size)
121
#endif
122
123
#endif
/* ZEPHYR_SIP_SVC_CONTROLLER_H_ */
thread
static struct k_thread thread[2]
Definition
atomic.c:26
atomic_t
long atomic_t
Definition
atomic_types.h:15
tid
static k_tid_t tid[ARRAY_SIZE(timeout_order_data_mult_fifo)]
Definition
main.c:86
K_KERNEL_STACK_MEMBER
#define K_KERNEL_STACK_MEMBER(sym, size)
Define an embedded stack memory region.
Definition
thread_stack.h:279
state
state
Definition
parser_state.h:29
stack
char stack[2048]
Definition
main.c:22
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:90
uint8_t
__UINT8_TYPE__ uint8_t
Definition
stdint.h:88
device
Runtime device structure (in ROM) per driver instance.
Definition
device.h:403
k_msgq
Message Queue Structure.
Definition
kernel.h:4426
k_mutex
Mutex Structure.
Definition
kernel.h:2917
k_thread
Thread Structure.
Definition
thread.h:259
atomic.h
include
zephyr
sip_svc
sip_svc_controller.h
Generated on Sun Sep 15 2024 17:01:30 for Zephyr Project API by
1.9.8