• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Institute of Parallel And Distributed Systems (IPADS), Shanghai Jiao Tong University (SJTU)
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 #ifndef MEM_OPS_H
13 #define MEM_OPS_H
14 
15 #include <stdint.h>
16 #include "tee_uuid.h"
17 
18 #define STATPROC_NAME_MAX 64
19 #define PATHNAME_MAX      256
20 #define STATPROC_MAX      100
21 
22 struct stat_proc_mem {
23     char name[STATPROC_NAME_MAX];
24     uint32_t mem;
25     uint32_t mem_max;
26     uint32_t mem_limit;
27 };
28 
29 struct stat_mem_info {
30     uint32_t total_mem;
31     uint32_t mem;
32     uint32_t free_mem;
33     uint32_t free_mem_min;
34     uint32_t proc_num;
35     struct stat_proc_mem proc_mem[STATPROC_MAX];
36 };
37 
38 int mem_ops_init(void);
39 
40 int32_t task_map_ns_phy_mem(uint32_t task_id, uint64_t phy_addr, uint32_t size,
41                             uint64_t *info);
42 
43 int32_t self_map_ns_phy_mem(uint64_t info, uint32_t size, uint64_t *virt_addr);
44 
45 int32_t task_unmap(uint32_t task_id, uint64_t info, uint32_t size);
46 
47 int32_t self_unmap(uint64_t info);
48 
49 void *alloc_sharemem_aux(const struct tee_uuid *uuid, uint32_t size);
50 
51 uint32_t free_sharemem(void *addr, uint32_t size);
52 
53 int32_t map_sharemem(uint32_t src_task, uint64_t vaddr, uint64_t size,
54                      uint64_t *vaddr_out);
55 
56 uint32_t unmap_sharemem(void *addr, uint32_t size);
57 
58 uint64_t virt_to_phys(uintptr_t vaddr);
59 
60 int32_t dump_mem_info(struct stat_mem_info *info, int print_history);
61 
62 #endif /* MEM_OPS_H */
63