| /* |
| * Copyright (c) 2022-2023, Intel Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_SIP_SVC_ID_MGR_H_ |
| #define ZEPHYR_SIP_SVC_ID_MGR_H_ |
| |
| /** |
| * @file |
| * @brief Arm SiP services ID manager and ID mapping table. |
| * |
| */ |
| |
| struct sip_svc_id_pool { |
| uint32_t size; |
| uint32_t head; |
| uint32_t tail; |
| uint32_t *id_list; |
| uint32_t *id_mask; |
| }; |
| |
| struct sip_svc_id_map_item { |
| uint32_t id; |
| void *arg1; /* callback function pointer */ |
| void *arg2; /* high resp data address */ |
| void *arg3; /* low resp data address */ |
| void *arg4; /* maximum resp data addr size */ |
| void *arg5; /* pointer to private data */ |
| void *arg6; /* client index */ |
| }; |
| |
| struct sip_svc_id_map { |
| uint32_t size; |
| struct sip_svc_id_map_item *items; |
| }; |
| |
| struct sip_svc_id_pool *sip_svc_id_mgr_create(uint32_t size); |
| |
| void sip_svc_id_mgr_delete(struct sip_svc_id_pool *id_pool); |
| |
| uint32_t sip_svc_id_mgr_alloc(struct sip_svc_id_pool *id_pool); |
| |
| void sip_svc_id_mgr_free(struct sip_svc_id_pool *id_pool, uint32_t id); |
| |
| struct sip_svc_id_map *sip_svc_id_map_create(uint32_t size); |
| |
| void sip_svc_id_map_delete(struct sip_svc_id_map *id_map); |
| |
| int sip_svc_id_map_insert_item(struct sip_svc_id_map *id_map, uint32_t id, void *arg1, void *arg2, |
| void *arg3, void *arg4, void *arg5, void *arg6); |
| |
| int sip_svc_id_map_remove_item(struct sip_svc_id_map *id_map, uint32_t id); |
| |
| struct sip_svc_id_map_item *sip_svc_id_map_query_item(struct sip_svc_id_map *id_map, uint32_t id); |
| |
| #endif /* ZEPHYR_SIP_SVC_ID_MGR_H_ */ |