• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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