1 /* 2 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License") 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef KERNEL_CONSTANTS_H 17 #define KERNEL_CONSTANTS_H 18 19 #include <unistd.h> 20 21 /** 22 * ================ DAC and Caps ================ 23 */ 24 const uid_t SHELL_UID = 2; 25 const uid_t SHELL_GID = 2; 26 27 28 /** 29 * ================ Process Manager ================ 30 */ 31 #define MAX_PROCESS_GROUPS 255 // max number of groups a process can have 32 #define MAX_PROCESS_NUMBER 63 // max allowd process [0,63] 33 #define MAX_TASK_NUMBER 128 // max allowd task(process+thread) 34 35 #define INIT_PROCESS_ID 1 // pid of init 36 #define KERNEL_PROCESS_ID 2 // pid of KProcess 37 38 #define HIGHEST_USER_PROCESS_PRIORITY 10 39 #define LOWEST_USER_PROCESS_PRIORITY 31 40 #define HIGHEST_USER_THREAD_PRIORITY 0 41 #define LOWEST_USER_THREAD_PRIORITY 31 42 43 #define DEFAULT_SHELL_PROCESS_PRIORITY 15 44 #define DEFAULT_INIT_PROCESS_PRIORITY 28 45 #define DEFAULT_KERNEL_PROCESS_PRIORITY 0 46 #define DEFAULT_THREAD_PRIORITY 25 47 #define DEFAULT_RR_SCHED_INTERVAL 5000000 // defalult sched interval of RR, in ms 48 49 /** 50 * ================ Memory Manager ================ 51 */ 52 typedef unsigned long addr_t; 53 54 #define USER_ASPACE_BASE ((addr_t)0x01000000UL) 55 #define USER_ASPACE_TOP_MAX ((addr_t)0x3FFFFFFFUL) 56 #define USER_ASPACE_SIZE ((addr_t)(USER_ASPACE_TOP_MAX - USER_ASPACE_BASE)) 57 #define USER_HEAP_BASE ((addr_t)(USER_ASPACE_TOP_MAX >> 2)) 58 #define USER_MAP_BASE ((addr_t)(USER_ASPACE_TOP_MAX >> 1)) 59 #define USER_MAP_SIZE ((addr_t)(USER_ASPACE_SIZE >> 3)) 60 61 #ifndef PAGE_SIZE 62 #define PAGE_SIZE 0x1000U 63 #endif 64 #define PAGE_MASK (~(PAGE_SIZE - 1)) 65 #define PAGE_SHIFT 12 66 67 #define MEM_PAGESTART(addr) ((addr) & ~(PAGE_SIZE - 1)) 68 #define MEM_PAGEOFFSET(addr) ((addr) & (PAGE_SIZE - 1)) 69 #define MEM_PAGEALIGN(addr) (((addr) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) 70 71 72 /** 73 * ================ IPC ================ 74 */ 75 const int MAX_SIGNAL_NUMBER = 64; // max number of allowed signal, [1,64] 76 const int MAX_PIPE_BUFFER = 1023; // max size of a pipe buffer 77 const int MAX_PIPE_NUMBER = 32; // max pipe number 78 79 const int MAX_MQ_NUMBER = 256; // max mqueue number 80 const int MAX_MQ_NAME_LEN = 2560; // max mqueue name length 81 const int MAX_MQ_MSG_SIZE = 65530; // max mqueue message size 82 83 84 /** 85 * ================ FS ================ 86 */ 87 const int MAX_PATH_SIZE = 256; // max size of path string 88 89 /** 90 * ================ SYSTEM ================ 91 */ 92 #define SYSINFO_SYSNAME "Huawei LiteOS" // sys name from 'uname' 93 94 /** 95 * ================ XTS ================ 96 */ 97 #define RES_DIR_KERNEL "/test_root/kernel/" // top dir of test resource of kernel 98 #define WRITABLE_TEST_DIR "/storage/" // writable dir for test file 99 100 #endif 101