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 13 #pragma once 14 #include <chcore/container/hashtable.h> 15 #include <chcore/type.h> 16 17 #define MAP_SHARED 0x01 18 #define MAP_PRIVATE 0x02 19 20 #define PROT_NONE 0 21 #define PROT_READ 1 22 #define PROT_WRITE 2 23 #define PROT_EXEC 4 24 25 #define PROT_CHECK_MASK (~(PROT_NONE | PROT_READ | PROT_WRITE | PROT_EXEC)) 26 27 #define HASH_TABLE_SIZE 509 28 #define VA_TO_KEY(va) ((u32)((vaddr_t)va >> 12)) 29 30 #define UNMAPSELF_STACK_SIZE (0x1000UL) 31 32 #if __SIZEOF_POINTER__ == 4 33 #define HEAP_START (0x60000000UL) 34 #else 35 #define HEAP_START (0x600000000000UL) 36 #endif 37 38 struct pmo_node { 39 cap_t cap; 40 vaddr_t va; 41 size_t pmo_size; 42 int type; 43 ipc_struct_t *_fs_ipc_struct; 44 struct list_head list_node; 45 struct hlist_node hash_node; 46 }; 47 48 void *chcore_mmap(void *start, size_t length, int prot, int flags, int fd, 49 off_t off); 50 void *chcore_fmap(void *start, size_t length, int prot, int flags, int fd, 51 off_t off); 52 int chcore_munmap(void *start, size_t length); 53 vaddr_t chcore_unmapself(void *start, size_t length);