source: trunk/kernel/kernel_config.h @ 624

Last change on this file since 624 was 624, checked in by alain, 5 years ago

Fix several bugs to use the instruction MMU in kernel mode
in replacement of the instruction address extension register,
and remove the "kentry" segment.

This version is running on the tsar_generic_iob" platform.

One interesting bug: the cp0_ebase defining the kernel entry point
(for interrupts, exceptions and syscalls) must be initialized
early in kernel_init(), because the VFS initialisation done by
kernel_ini() uses RPCs, and RPCs uses Inter-Processor-Interrup.

File size: 21.9 KB
Line 
1/*
2 * kernel_config.h - global kernel configuration arguments
3 *
4 * Authors  Mohamed Lamine Karaoui (2015)
5 *          Alain Greiner (2016,2017,2018,2019)
6 *
7 * Copyright (c)  UPMC Sorbonne Universites
8 *
9 * This file is part of ALMOS-MKH.
10 *
11 * ALMOS-MKH is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; version 2.0 of the License.
14 *
15 * ALMOS-MKH is distributed in the hope that it will be useful, but
16 * WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 * General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with ALMOS-MKH; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 */
24
25#ifndef _KERNEL_CONFIG_H_
26#define _KERNEL_CONFIG_H_
27
28#define CONFIG_ALMOS_VERSION           "Version 1.1 / October 2018"
29
30////////////////////////////////////////////////////////////////////////////////////////////
31//                              KERNEL DEBUG
32//  Each debug variable control one kernel function, or one small group of functions.
33//  - trace is generated only when cycle > debug_value.
34//  - detailed trace is enabled when (debug_value & Ox1) is non zero.
35////////////////////////////////////////////////////////////////////////////////////////////
36
37#define DEBUG_BARRIER_CREATE              0
38#define DEBUG_BARRIER_DESTROY             0
39#define DEBUG_BARRIER_WAIT                0
40
41#define DEBUG_BUSYLOCK                    0
42#define DEBUG_BUSYLOCK_PID                0x10001    // thread pid (when detailed debug)
43#define DEBUG_BUSYLOCK_TRDID              0x10000    // thread trdid (when detailed debug)
44                 
45#define DEBUG_CHDEV_CMD_RX                0
46#define DEBUG_CHDEV_CMD_TX                0
47#define DEBUG_CHDEV_SERVER_RX             0
48#define DEBUG_CHDEV_SERVER_TX             0
49
50#define DEBUG_CLUSTER_INIT                0
51#define DEBUG_CLUSTER_PID_ALLOC           0
52#define DEBUG_CLUSTER_PID_RELEASE         0
53#define DEBUG_CLUSTER_PROCESS_COPIES      0
54
55#define DEBUG_DEV_TXT_RX                  0
56#define DEBUG_DEV_TXT_TX                  0
57#define DEBUG_DEV_IOC_RX                  0
58#define DEBUG_DEV_IOC_TX                  0
59#define DEBUG_DEV_NIC_RX                  0
60#define DEBUG_DEV_NIC_RX                  0
61#define DEBUG_DEV_FBF_RX                  0
62#define DEBUG_DEV_FBF_TX                  0
63#define DEBUG_DEV_DMA                     0
64#define DEBUG_DEV_MMC                     0
65#define DEBUG_DEV_PIC                     0
66
67#define DEBUG_DEVFS_GLOBAL_INIT           0
68#define DEBUG_DEVFS_LOCAL_INIT            0
69#define DEBUG_DEVFS_MOVE                  0
70
71#define DEBUG_ELF_LOAD                    0
72
73#define DEBUG_DQDT_INIT                   0
74#define DEBUG_DQDT_UPDATE_THREADS         0
75#define DEBUG_DQDT_SELECT_FOR_PROCESS     0
76#define DEBUG_DQDT_UPDATE_PAGES           0
77#define DEBUG_DQDT_SELECT_FOR_MEMORY      0
78
79#define DEBUG_FATFS_ADD_DENTRY            0
80#define DEBUG_FATFS_CLUSTER_ALLOC         0
81#define DEBUG_FATFS_CTX_INIT              0
82#define DEBUG_FATFS_FREE_CLUSTERS         0
83#define DEBUG_FATFS_GET_CLUSTER           0
84#define DEBUG_FATFS_GET_USER_DIR          0
85#define DEBUG_FATFS_MOVE_PAGE             0
86#define DEBUG_FATFS_NEW_DENTRY            0
87#define DEBUG_FATFS_RELEASE_INODE         0
88#define DEBUG_FATFS_REMOVE_DENTRY         0
89#define DEBUG_FATFS_SYNC_FAT              0
90#define DEBUG_FATFS_SYNC_FSINFO           0
91#define DEBUG_FATFS_SYNC_INODE            0
92#define DEBUG_FATFS_UPDATE_DENTRY         0
93
94#define DEBUG_HAL_EXCEPTIONS              0
95#define DEBUG_HAL_GPT_SET_PTE             0
96#define DEBUG_HAL_GPT_COPY                0
97#define DEBUG_HAL_GPT_CREATE              0
98#define DEBUG_HAL_GPT_DESTROY             0
99#define DEBUG_HAL_IOC_RX                  0
100#define DEBUG_HAL_IOC_TX                  0
101#define DEBUG_HAL_IRQS                    0
102#define DEBUG_HAL_KENTRY                  0
103#define DEBUG_HAL_TXT_RX                  0
104#define DEBUG_HAL_TXT_TX                  0
105#define DEBUG_HAL_USPACE                  0
106#define DEBUG_HAL_VMM                     0
107
108#define DEBUG_KCM                         0
109#define DEBUG_KMEM                        0
110
111#define DEBUG_KERNEL_INIT                 0
112
113#define DEBUG_MAPPER_GET_PAGE             0
114#define DEBUG_MAPPER_HANDLE_MISS          0
115#define DEBUG_MAPPER_MOVE_USER            0
116#define DEBUG_MAPPER_MOVE_KERNEL          0
117#define DEBUG_MAPPER_SYNC                 0
118
119#define DEBUG_MUTEX                       0
120
121#define DEBUG_PPM_ALLOC_PAGES             0
122#define DEBUG_PPM_FREE_PAGES              0
123   
124#define DEBUG_PROCESS_COPY_INIT           0
125#define DEBUG_PROCESS_DESTROY             0
126#define DEBUG_PROCESS_FD_REGISTER         0
127#define DEBUG_PROCESS_GET_LOCAL_COPY      0
128#define DEBUG_PROCESS_INIT_CREATE         0
129#define DEBUG_PROCESS_MAKE_EXEC           0
130#define DEBUG_PROCESS_MAKE_FORK           0
131#define DEBUG_PROCESS_REFERENCE_INIT      0
132#define DEBUG_PROCESS_SIGACTION           0
133#define DEBUG_PROCESS_TXT                 0
134#define DEBUG_PROCESS_ZERO_CREATE         0
135
136#define DEBUG_QUEUELOCK_TYPE              0    // lock type (0 : undefined / 1000 : all types)
137
138#define DEBUG_RPC_CLIENT_GENERIC          0
139#define DEBUG_RPC_SERVER_GENERIC          0
140
141#define DEBUG_RPC_KCM_ALLOC               0
142#define DEBUG_RPC_KCM_FREE                0
143#define DEBUG_RPC_MAPPER_HANDLE_MISS      0
144#define DEBUG_RPC_MAPPER_MOVE_USER        0
145#define DEBUG_RPC_PMEM_GET_PAGES          0
146#define DEBUG_RPC_PMEM_RELEASE_PAGES      0
147#define DEBUG_RPC_PROCESS_MAKE_FORK       0
148#define DEBUG_RPC_PROCESS_SIGACTION       0
149#define DEBUG_RPC_THREAD_USER_CREATE      0
150#define DEBUG_RPC_THREAD_KERNEL_CREATE    0
151#define DEBUG_RPC_VFS_INODE_CREATE        0
152#define DEBUG_RPC_VFS_INODE_DESTROY       0
153#define DEBUG_RPC_VFS_DENTRY_CREATE       0
154#define DEBUG_RPC_VFS_DENTRY_DESTROY      0
155#define DEBUG_RPC_VFS_FILE_CREATE         0
156#define DEBUG_RPC_VFS_FILE_DESTROY        0
157#define DEBUG_RPC_VFS_DEVICE_GET_DENTRY   0
158#define DEBUG_RPC_VMM_CREATE_VSEG         0
159#define DEBUG_RPC_VMM_GET_PTE             0
160#define DEBUG_RPC_VMM_GET_VSEG            0
161#define DEBUG_RPC_VMM_DELETE_VSEG         0
162
163#define DEBUG_RWLOCK_TYPE                 0    // lock type (0 : undefined / 1000 : all types)
164
165#define DEBUG_SCHED_HANDLE_SIGNALS        2
166#define DEBUG_SCHED_YIELD                 0     
167#define DEBUG_SCHED_RPC_ACTIVATE          0
168
169#define DEBUG_SEM                         0
170
171#define DEBUG_SYSCALLS_ERROR              2
172
173#define DEBUG_SYS_BARRIER                 0
174#define DEBUG_SYS_CLOSE                   0
175#define DEBUG_SYS_CLOSEDIR                0
176#define DEBUG_SYS_CONDVAR                 0
177#define DEBUG_SYS_DISPLAY                 0
178#define DEBUG_SYS_EXEC                    0
179#define DEBUG_SYS_EXIT                    0
180#define DEBUG_SYS_FG                      0
181#define DEBUG_SYS_FORK                    0
182#define DEBUG_SYS_GET_CONFIG              0
183#define DEBUG_SYS_GETCWD                  0
184#define DEBUG_SYS_GETPID                  0
185#define DEBUG_SYS_ISATTY                  0
186#define DEBUG_SYS_IS_FG                   0
187#define DEBUG_SYS_KILL                    0
188#define DEBUG_SYS_OPEN                    0
189#define DEBUG_SYS_OPENDIR                 0
190#define DEBUG_SYS_MKDIR                   0
191#define DEBUG_SYS_MMAP                    0
192#define DEBUG_SYS_MUNMAP                  0
193#define DEBUG_SYS_MUTEX                   0
194#define DEBUG_SYS_READ                    0
195#define DEBUG_SYS_READDIR                 0
196#define DEBUG_SYS_SEM                     0
197#define DEBUG_SYS_STAT                    0
198#define DEBUG_SYS_THREAD_CANCEL           0
199#define DEBUG_SYS_THREAD_CREATE           0
200#define DEBUG_SYS_THREAD_EXIT             0
201#define DEBUG_SYS_THREAD_JOIN             0
202#define DEBUG_SYS_THREAD_SLEEP            0
203#define DEBUG_SYS_THREAD_WAKEUP           0
204#define DEBUG_SYS_THREAD_YIELD            0
205#define DEBUG_SYS_TRACE                   0
206#define DEBUG_SYS_UNLINK                  0
207#define DEBUG_SYS_WAIT                    0
208#define DEBUG_SYS_WRITE                   0
209
210#define DEBUG_THREAD_BLOCK                0
211#define DEBUG_THREAD_DELETE               0
212#define DEBUG_THREAD_DESTROY              0
213#define DEBUG_THREAD_GET_XPTR             0
214#define DEBUG_THREAD_IDLE                 0
215#define DEBUG_THREAD_INIT                 0
216#define DEBUG_THREAD_KERNEL_CREATE        0
217#define DEBUG_THREAD_USER_CREATE          0
218#define DEBUG_THREAD_USER_FORK            0
219#define DEBUG_THREAD_USER_EXEC            0
220
221#define DEBUG_USER_DIR                    0
222
223#define DEBUG_VFS_ADD_CHILD               0
224#define DEBUG_VFS_ADD_SPECIAL             0
225#define DEBUG_VFS_CHDIR                   0
226#define DEBUG_VFS_CLOSE                   0
227#define DEBUG_VFS_DENTRY_CREATE           0
228#define DEBUG_VFS_FILE_CREATE             0
229#define DEBUG_VFS_GET_PATH                0
230#define DEBUG_VFS_INODE_CREATE            0
231#define DEBUG_VFS_INODE_LOAD_ALL          0
232#define DEBUG_VFS_LINK                    0
233#define DEBUG_VFS_LOOKUP                  0
234#define DEBUG_VFS_LSEEK                   0
235#define DEBUG_VFS_MKDIR                   0
236#define DEBUG_VFS_NEW_CHILD_INIT          0
237#define DEBUG_VFS_OPEN                    0
238#define DEBUG_VFS_OPENDIR                 0
239#define DEBUG_VFS_STAT                    0
240#define DEBUG_VFS_UNLINK                  0
241
242#define DEBUG_VMM_CREATE_VSEG             0
243#define DEBUG_VMM_DELETE_VSEG             0
244#define DEBUG_VMM_DESTROY                 0
245#define DEBUG_VMM_FORK_COPY               0
246#define DEBUG_VMM_GET_ONE_PPN             0
247#define DEBUG_VMM_GET_PTE                 0
248#define DEBUG_VMM_HANDLE_PAGE_FAULT       0
249#define DEBUG_VMM_HANDLE_COW              0
250#define DEBUG_VMM_INIT                    0
251#define DEBUG_VMM_MMAP_ALLOC              0
252#define DEBUG_VMM_PAGE_ALLOCATE           0
253#define DEBUG_VMM_RESIZE_VSEG             0
254#define DEBUG_VMM_SET_COW                 0
255#define DEBUG_VMM_UPDATE_PTE              0
256
257#define DEBUG_XHTAB                       0
258
259
260////////////////////////////////////////////////////////////////////////////////////////////
261//                KERNEL LOCKS TYPES MNEMONICS (for debug)
262// It must be kept consistent with the lock_name[] array defined in kernel_init.c file.
263////////////////////////////////////////////////////////////////////////////////////////////
264
265#define LOCK_CLUSTER_KCM       1   // local  (B)  protect dynamic KCM creation in cluster
266#define LOCK_PPM_FREE          2   // local  (B)  protect PPM allocator free_pages lists
267#define LOCK_SCHED_STATE       3   // local  (B)  protect scheduler state for given core
268#define LOCK_VMM_STACK         4   // local  (B)  protect VMM stack vseg allocator   
269#define LOCK_VMM_MMAP          5   // local  (B)  protect VMM mmap vseg allocator
270#define LOCK_VFS_CTX           6   // local  (B)  protect vfs context state
271#define LOCK_KCM_STATE         7   // local  (B)  protect KCM allocator state
272#define LOCK_KHM_STATE         8   // local  (B)  protect KHM allocator state
273#define LOCK_HTAB_STATE        9   // local  (B)  protect a local htab state
274
275#define LOCK_THREAD_JOIN      10   // remote (B)  protect join/exit between two threads
276#define LOCK_XHTAB_STATE      11   // remote (B)  protect  a distributed xhtab state
277#define LOCK_CHDEV_QUEUE      12   // remote (B)  protect chdev threads waiting queue
278#define LOCK_CHDEV_TXT0       13   // remote (B)  protect access to kernel terminal TXT0
279#define LOCK_CHDEV_TXTLIST    14   // remote (B)  protect xlist of processes using same TXT
280#define LOCK_PAGE_STATE       15   // remote (B)  protect physical page descriptor state
281#define LOCK_MUTEX_STATE      16   // remote (B)  protect user mutex state
282#define LOCK_CONDVAR_STATE    17   // remote (B)  protect user condvar state
283#define LOCK_SEM_STATE        18   // remote (B)  protect user semaphore state
284#define LOCK_PROCESS_CWD      19   // remote (B)  protect current working directory in process
285#define LOCK_BARRIER_STATE    20   // remote (B)  protect user barrier state
286
287#define LOCK_CLUSTER_PREFTBL  21   // local  (Q)  protect array of ref. processes in cluster
288
289#define LOCK_PPM_DIRTY        22   // remote (Q)  protect PPM dirty_pages list
290#define LOCK_CLUSTER_LOCALS   23   // remote (Q)  protect xlist of local processes in cluster
291#define LOCK_CLUSTER_COPIES   24   // remote (Q)  protect xlist of process copies in cluster
292#define LOCK_PROCESS_CHILDREN 25   // remote (Q)  protect xlist of chidren process in process
293#define LOCK_PROCESS_USERSYNC 26   // remote (Q)  protect lists of user synchros in process
294#define LOCK_PROCESS_FDARRAY  27   // remote (Q)  protect array of open files in owner process
295#define LOCK_FATFS_FREE       28   // remote (Q)  protect the FATFS context (free clusters)
296#define LOCK_PROCESS_DIR      29   // remote (Q)  protect xlist of open directories in process
297
298#define LOCK_PROCESS_THTBL    30   // local  (RW) protect local array of threads in a process
299
300#define LOCK_MAPPER_STATE     31   // remote (RW) protect mapper state
301#define LOCK_VFS_SIZE         32   // remote (RW) protect inode state and associated mapper
302#define LOCK_VFS_FILE         33   // remote (RW) protect file descriptor state
303#define LOCK_VMM_VSL          34   // remote (RW) protect VSL (local list of vsegs)
304#define LOCK_VMM_GPT          35   // remote (RW) protect GPT (local page table)
305#define LOCK_VFS_MAIN         36   // remote (RW) protect vfs traversal (in root inode)
306
307
308////////////////////////////////////////////////////////////////////////////////////////////
309//                          HARDWARE CONFIGURATION     
310////////////////////////////////////////////////////////////////////////////////////////////
311
312#define CONFIG_KERNEL_IDENTITY_MAP          true       // True for 32 bits cores             
313#define CONFIG_MAX_CLUSTERS_X               16         // max number of clusters in row
314#define CONFIG_MAX_CLUSTERS_Y               16         // max number of clusters in column
315#define CONFIG_MAX_CLUSTERS                 (CONFIG_MAX_CLUSTERS_X * CONFIG_MAX_CLUSTERS_Y)
316#define CONFIG_MAX_LOCAL_CORES              4          // max number of cores per cluster
317#define CONFIG_MAX_INT_DEV                  4          // max number of internal peripherals
318#define CONFIG_MAX_EXT_DEV                  8          // max number of external peripherals
319#define CONFIG_MAX_INTERNAL_IRQS            32         // max number of internal IRQs
320#define CONFIG_MAX_EXTERNAL_IRQS            32         // max number of external IRQs
321#define CONFIG_IRQS_PER_CORE                4          // number of input IRQs per core
322#define CONFIG_CLUSTER_SPAN                 32         // ln(phys. address space per cluster)
323#define CONFIG_CACHE_LINE_SIZE              64         // number of bytes in cache line
324
325#define CONFIG_CACHE_LINE_ALIGNED           __attribute__((aligned(CONFIG_CACHE_LINE_SIZE)))
326
327#define CONFIG_MAX_IOC_CHANNELS             1          // max number of IOC device channels
328#define CONFIG_MAX_FBF_CHANNELS             1          // max number of FBF device channels
329#define CONFIG_MAX_TXT_CHANNELS             8          // max number of TXT device channels
330#define CONFIG_MAX_DMA_CHANNELS             4          // max number of DMA device channels
331#define CONFIG_MAX_NIC_CHANNELS             4          // max number of NIC device channels
332
333#define CONFIG_TXT_ECHO_MODE                1          // echo mode for TXT peripheral
334#define CONFIG_TXT_KBUF_SIZE                512        // kernel buffer for TXT write
335
336#define CONFIG_FBF_WIDTH                    128
337#define CONFIG_FBF_HEIGHT                   128
338
339#define CONFIG_CPU_CTX_SIZE                 256        // up to 64 uint32_t registers
340#define CONFIG_FPU_CTX_SIZE                 256        // up to 32 uint64_t registers
341#define CONFIG_NIC_CHBUF_DEPTH              1          // number of containers in NIC chbuf
342
343////////////////////////////////////////////////////////////////////////////////////////////
344//                            PROCESS MANAGEMENT       
345////////////////////////////////////////////////////////////////////////////////////////////
346
347#define CONFIG_MAX_PROCESS_PER_CLUSTER      16         // max number of owned process
348#define CONFIG_PROCESS_FILE_MAX_NR          16         // max number of open files
349#define CONFIG_PROCESS_MAX_CHILDREN         1024       // max number of children process
350#define CONFIG_PROCESS_HEAP_MIN_SIZE        0x00010000 // user heap min size (bytes)
351#define CONFIG_PROCESS_HEAP_MAX_SIZE        0x30000000 // user heap max size (bytes)
352#define CONFIG_PROCESS_INIT_PATH            "/bin/user/init.elf"
353
354////////////////////////////////////////////////////////////////////////////////////////////
355//                            VIRTUAL FILE SYSTEM       
356////////////////////////////////////////////////////////////////////////////////////////////
357
358#define CONFIG_VFS_MAX_INODES               128        // max number of inodes per cluster
359#define CONFIG_VFS_MAX_NAME_LENGTH          56         // dentry name max length (bytes)
360#define CONFIG_VFS_MAX_PATH_LENGTH          256        // pathname max length (bytes)
361#define CONFIG_VFS_FREE_CLUSTERS_MIN        32         // min number of free clusters
362#define CONFIG_VFS_MAX_DENTRIES             63         // max number of dentries in one dir
363
364#define CONFIG_VFS_ROOT_IS_FATFS            1          // root FS is FATFS if non zero
365#define CONFIG_VFS_ROOT_IS_EX2FS            0          // root FS is EX2FS if non zero
366
367#define CONFIG_MAPPER_GRDXT_W1              7      // number of bits for RADIX_TREE_IX1
368#define CONFIG_MAPPER_GRDXT_W2              7      // number of bits for RADIX_TREE_IX2
369#define CONFIG_MAPPER_GRDXT_W3              6      // number of bits for RADIX_TREE_IX3
370
371////////////////////////////////////////////////////////////////////////////////////////////
372//                                  DQDT       
373////////////////////////////////////////////////////////////////////////////////////////////
374
375#define CONFIG_DQDT_LEVELS_NR               5
376#define CONFIG_DQDT_TICKS_PER_QUANTUM       1        // number of ticks between updates
377
378////////////////////////////////////////////////////////////////////////////////////////////
379//                              RANDOM NUMBERS
380////////////////////////////////////////////////////////////////////////////////////////////
381
382#define CONFIG_RDNG_PARAM_A                 65519
383#define CONFIG_RDNG_PARAM_C                 64037
384
385////////////////////////////////////////////////////////////////////////////////////////////
386//                                SCHEDULING
387////////////////////////////////////////////////////////////////////////////////////////////
388
389#define CONFIG_SCHED_TICK_MS_PERIOD         10000   // number of milliseconds per period
390#define CONFIG_SCHED_TICKS_PER_QUANTUM      1       // number of ticks between scheduling
391#define CONFIG_SCHED_MAX_THREADS_NR         32      // max number of threads per core
392#define CONFIG_SCHED_IDLE_MODE_SLEEP        0       // idle thread use sleep mode if non 0
393
394////////////////////////////////////////////////////////////////////////////////////////////
395//                                 THREADS
396////////////////////////////////////////////////////////////////////////////////////////////
397
398#define CONFIG_THREADS_MAX_PER_CLUSTER      32      // max threads per cluster per process
399#define CONFIG_THREAD_DESC_SIZE             0x4000  // thread desc size (with kernel stack)
400#define CONFIG_THREAD_DESC_ORDER            2       // ln( number of 4K pages )
401
402////////////////////////////////////////////////////////////////////////////////////////////
403//                             REMOTE PROCEDURE CALL
404////////////////////////////////////////////////////////////////////////////////////////////
405
406#define CONFIG_REMOTE_FIFO_SLOTS                    16
407#define CONFIG_REMOTE_FIFO_MAX_ITERATIONS   1024
408#define CONFIG_RPC_THREADS_MAX              4      // max number of RPC threads per core
409
410////////////////////////////////////////////////////////////////////////////////////////////
411//             32 bits  USER SPACE SEGMENTATION / all values are numbers of pages
412////////////////////////////////////////////////////////////////////////////////////////////
413
414#define CONFIG_VMM_VSPACE_SIZE        0x100000     // virtual space          : 4   Gbytes
415
416#define CONFIG_VMM_UTILS_BASE         0x000200     // UTILS zone base        : 2   Mbytes
417#define CONFIG_VMM_ELF_BASE           0x000400     // ELF zone base          : 4   Mbytes
418#define CONFIG_VMM_HEAP_BASE          0x002000     // HEAP zone base         : 32  Mbytes
419#define CONFIG_VMM_STACK_BASE         0x0C0000     // STACK zone base        : 3   Gbytes
420
421#define CONFIG_VMM_ARGS_SIZE          0x000004     // args vseg size         : 16  Kbytes
422#define CONFIG_VMM_ENVS_SIZE          0x000008     // envs vseg size         : 32  Kbytes
423#define CONFIG_VMM_STACK_SIZE         0x000100     // single stack vseg size : 1   Mbytes
424
425////////////////////////////////////////////////////////////////////////////////////////////
426//                      PHYSICAL MEMORY MANAGEMENT         
427////////////////////////////////////////////////////////////////////////////////////////////
428
429#define CONFIG_PPM_PAGE_SIZE          4096         // physical page size (bytes)
430#define CONFIG_PPM_PAGE_SHIFT         12           // physical page shift (bits)
431#define CONFIG_PPM_PAGE_MASK          0x00000FFF   // physical page mask     
432#define CONFIG_PPM_MAX_ORDER          16           // ln(total number of pages per cluster)
433#define CONFIG_PPM_HEAP_ORDER         10           // ln(number of heap pages per cluster)
434#define CONFIG_PPM_MAX_RSVD           32           // max reserved zones on the machine
435
436#define CONFIG_KCM_SLOT_SIZE          64           // smallest allocated block (bytes)
437
438#define CONFIG_PPM_PAGE_ALIGNED       __attribute__((aligned(CONFIG_PPM_PAGE_SIZE)))
439
440
441////////////////////////////////////////////////////////////////////////////////////////////
442//                 INSTRUMENTATION
443////////////////////////////////////////////////////////////////////////////////////////////
444
445#define CONFIG_INTRUMENTATION_SYSCALLS  0
446
447
448
449
450
451#endif  /* _KERNEL_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.