1 /* 2 * Copyright (C) 2022 Huawei Technologies Co., Ltd. 3 * Licensed under the Mulan PSL v2. 4 * You can use this software according to the terms and conditions of the Mulan PSL v2. 5 * You may obtain a copy of Mulan PSL v2 at: 6 * http://license.coscl.org.cn/MulanPSL2 7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 8 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 9 * PURPOSE. 10 * See the Mulan PSL v2 for more details. 11 */ 12 13 #ifndef DYN_CONG_BUILDED_DRVCALL_DYN_CONF_BUILDER_H 14 #define DYN_CONG_BUILDED_DRVCALL_DYN_CONF_BUILDER_H 15 16 #include <dyn_conf_common.h> 17 #include "dyn_conf_dispatch_inf.h" 18 19 enum drv_perm_tags { 20 DRV_PERM = 0x0, 21 DRV_PERM_DRVCALL_PERM_APPLY = 0x1, 22 DRV_PERM_DRVCALL_PERM_APPLY_ITEM, 23 DRV_PERM_DRVCALL_PERM_APPLY_ITEM_NAME, 24 DRV_PERM_DRVCALL_PERM_APPLY_ITEM_PERMISSION, 25 DRV_PERM_DRV_BASIC_INFO, 26 DRV_PERM_DRV_BASIC_INFO_THREAD_LIMIT, 27 DRV_PERM_DRV_BASIC_INFO_UPGRADE, 28 DRV_PERM_DRV_BASIC_INFO_VIRT2PHYS, 29 DRV_PERM_DRV_BASIC_INFO_EXCEPTION_MODE, 30 DRV_PERM_DRV_IO_MAP, 31 DRV_PERM_DRV_IO_MAP_ITEM, 32 DRV_PERM_DRV_IO_MAP_ITEM_CHIP_TYPE, 33 DRV_PERM_DRV_IO_MAP_ITEM_IOMAP, 34 DRV_PERM_IRQ, 35 DRV_PERM_IRQ_ITEM, 36 DRV_PERM_IRQ_ITEM_CHIP_TYPE, 37 DRV_PERM_IRQ_ITEM_IRQ, 38 DRV_PERM_MAP_SECURE, 39 DRV_PERM_MAP_SECURE_ITEM, 40 DRV_PERM_MAP_SECURE_ITEM_CHIP_TYPE, 41 DRV_PERM_MAP_SECURE_ITEM_UUID, 42 DRV_PERM_MAP_SECURE_ITEM_REGION, 43 DRV_PERM_MAP_NOSECURE, 44 DRV_PERM_MAP_NOSECURE_ITEM, 45 DRV_PERM_MAP_NOSECURE_ITEM_CHIP_TYPE, 46 DRV_PERM_MAP_NOSECURE_ITEM_UUID, 47 DRV_PERM_DRV_CMD_PERM_INFO, 48 DRV_PERM_DRV_CMD_PERM_INFO_ITEM, 49 DRV_PERM_DRV_CMD_PERM_INFO_ITEM_CMD, 50 DRV_PERM_DRV_CMD_PERM_INFO_ITEM_PERMISSION, 51 DRV_PERM_DRV_MAC_INFO, 52 DRV_PERM_DRV_MAC_INFO_ITEM, 53 DRV_PERM_DRV_MAC_INFO_ITEM_UUID, 54 DRV_PERM_DRV_MAC_INFO_ITEM_PERMISSION, 55 DRV_PERM_UNUSED, 56 }; 57 58 int32_t install_drvcall_permission(void *obj, uint32_t obj_size, const struct conf_queue_t *conf_queue); 59 void uninstall_drvcall_permission(const void *obj, uint32_t obj_size); 60 void dump_drvcall_conf(void); 61 int32_t combine_perms(uint64_t *perm, uint32_t size, const char *value); 62 63 int32_t init_drvcall_conf(struct drvcall_perm_apply_t *drvcall_perm_apply, 64 const struct conf_queue_t *conf_queue); 65 66 void free_drvcall_perm(struct drvcall_perm_apply_t *drvcall_perm); 67 68 int32_t build_drvcall_perm_apply(struct dlist_node **pos, const struct conf_node_t *node, 69 void *obj, uint32_t obj_size); 70 #endif 71