source: trunk/kernel/kernel_config.h @ 627

Last change on this file since 627 was 625, checked in by alain, 3 years ago

Fix a bug in the vmm_remove_vseg() function: the physical pages
associated to an user DATA vseg were released to the kernel when
the target process descriptor was in the reference cluster.
This physical pages release should be done only when the page
forks counter value is zero.
All other modifications are cosmetic.

File size: 22.0 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 2.0 / April 2019"
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    // for busylock detailed debug
43#define DEBUG_BUSYLOCK_TRDID              0x10000    // for busylock 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_CONTEXT                 0
95#define DEBUG_HAL_EXCEPTIONS              0
96#define DEBUG_HAL_GPT_SET_PTE             0
97#define DEBUG_HAL_GPT_COPY                0
98#define DEBUG_HAL_GPT_CREATE              0
99#define DEBUG_HAL_GPT_DESTROY             0
100#define DEBUG_HAL_IOC_RX                  0
101#define DEBUG_HAL_IOC_TX                  0
102#define DEBUG_HAL_IRQS                    0
103#define DEBUG_HAL_KENTRY                  0
104#define DEBUG_HAL_TXT_RX                  0
105#define DEBUG_HAL_TXT_TX                  0
106#define DEBUG_HAL_USPACE                  0
107#define DEBUG_HAL_VMM                     0
108
109#define DEBUG_KCM                         0
110#define DEBUG_KMEM                        0
111
112#define DEBUG_KERNEL_INIT                 0
113
114#define DEBUG_MAPPER_GET_PAGE             0
115#define DEBUG_MAPPER_HANDLE_MISS          0
116#define DEBUG_MAPPER_MOVE_USER            0
117#define DEBUG_MAPPER_MOVE_KERNEL          0
118#define DEBUG_MAPPER_SYNC                 0
119
120#define DEBUG_MUTEX                       0
121
122#define DEBUG_PPM_ALLOC_PAGES             0
123#define DEBUG_PPM_FREE_PAGES              0
124   
125#define DEBUG_PROCESS_COPY_INIT           0
126#define DEBUG_PROCESS_DESTROY             0
127#define DEBUG_PROCESS_FD_REGISTER         0
128#define DEBUG_PROCESS_GET_LOCAL_COPY      0
129#define DEBUG_PROCESS_INIT_CREATE         0
130#define DEBUG_PROCESS_MAKE_EXEC           0
131#define DEBUG_PROCESS_MAKE_FORK           0
132#define DEBUG_PROCESS_REFERENCE_INIT      0
133#define DEBUG_PROCESS_SIGACTION           0
134#define DEBUG_PROCESS_TXT                 0
135#define DEBUG_PROCESS_ZERO_CREATE         0
136
137#define DEBUG_QUEUELOCK_TYPE              0    // lock type (0 : undefined / 1000 : all types)
138
139#define DEBUG_RPC_CLIENT_GENERIC          0
140#define DEBUG_RPC_SERVER_GENERIC          0
141
142#define DEBUG_RPC_KCM_ALLOC               0
143#define DEBUG_RPC_KCM_FREE                0
144#define DEBUG_RPC_MAPPER_HANDLE_MISS      0
145#define DEBUG_RPC_MAPPER_MOVE_USER        0
146#define DEBUG_RPC_PMEM_GET_PAGES          0
147#define DEBUG_RPC_PMEM_RELEASE_PAGES      0
148#define DEBUG_RPC_PROCESS_MAKE_FORK       0
149#define DEBUG_RPC_PROCESS_SIGACTION       0
150#define DEBUG_RPC_THREAD_USER_CREATE      0
151#define DEBUG_RPC_THREAD_KERNEL_CREATE    0
152#define DEBUG_RPC_VFS_INODE_CREATE        0
153#define DEBUG_RPC_VFS_INODE_DESTROY       0
154#define DEBUG_RPC_VFS_DENTRY_CREATE       0
155#define DEBUG_RPC_VFS_DENTRY_DESTROY      0
156#define DEBUG_RPC_VFS_FILE_CREATE         0
157#define DEBUG_RPC_VFS_FILE_DESTROY        0
158#define DEBUG_RPC_VFS_DEVICE_GET_DENTRY   0
159#define DEBUG_RPC_VMM_CREATE_VSEG         0
160#define DEBUG_RPC_VMM_GET_PTE             0
161#define DEBUG_RPC_VMM_GET_VSEG            0
162#define DEBUG_RPC_VMM_DELETE_VSEG         0
163
164#define DEBUG_RWLOCK_TYPE                 0    // lock type (0 : undefined / 1000 : all types)
165
166#define DEBUG_SCHED_HANDLE_SIGNALS        2
167#define DEBUG_SCHED_YIELD                 0
168#define DEBUG_SCHED_RPC_ACTIVATE          0
169
170#define DEBUG_SEM                         0
171
172#define DEBUG_SYSCALLS_ERROR              2
173
174#define DEBUG_SYS_BARRIER                 0
175#define DEBUG_SYS_CLOSE                   0
176#define DEBUG_SYS_CLOSEDIR                0
177#define DEBUG_SYS_CONDVAR                 0
178#define DEBUG_SYS_DISPLAY                 0
179#define DEBUG_SYS_EXEC                    0
180#define DEBUG_SYS_EXIT                    0
181#define DEBUG_SYS_FG                      0
182#define DEBUG_SYS_FORK                    0
183#define DEBUG_SYS_GET_CONFIG              0
184#define DEBUG_SYS_GETCWD                  0
185#define DEBUG_SYS_GETPID                  0
186#define DEBUG_SYS_ISATTY                  0
187#define DEBUG_SYS_IS_FG                   0
188#define DEBUG_SYS_KILL                    0
189#define DEBUG_SYS_MKDIR                   0
190#define DEBUG_SYS_MMAP                    0
191#define DEBUG_SYS_MUNMAP                  0
192#define DEBUG_SYS_MUTEX                   0
193#define DEBUG_SYS_OPEN                    0
194#define DEBUG_SYS_OPENDIR                 0
195#define DEBUG_SYS_READ                    0
196#define DEBUG_SYS_READDIR                 0
197#define DEBUG_SYS_SEM                     0
198#define DEBUG_SYS_STAT                    0
199#define DEBUG_SYS_THREAD_CANCEL           0
200#define DEBUG_SYS_THREAD_CREATE           0
201#define DEBUG_SYS_THREAD_EXIT             0
202#define DEBUG_SYS_THREAD_JOIN             0
203#define DEBUG_SYS_THREAD_SLEEP            0
204#define DEBUG_SYS_THREAD_WAKEUP           0
205#define DEBUG_SYS_THREAD_YIELD            0
206#define DEBUG_SYS_TRACE                   0
207#define DEBUG_SYS_UNLINK                  0
208#define DEBUG_SYS_WAIT                    0
209#define DEBUG_SYS_WRITE                   0
210
211#define DEBUG_THREAD_BLOCK                0
212#define DEBUG_THREAD_DELETE               0
213#define DEBUG_THREAD_DESTROY              0
214#define DEBUG_THREAD_GET_XPTR             0
215#define DEBUG_THREAD_IDLE                 0
216#define DEBUG_THREAD_INIT                 0
217#define DEBUG_THREAD_KERNEL_CREATE        0
218#define DEBUG_THREAD_USER_CREATE          0
219#define DEBUG_THREAD_USER_FORK            0
220#define DEBUG_THREAD_USER_EXEC            0
221
222#define DEBUG_USER_DIR                    0
223
224#define DEBUG_VFS_ADD_CHILD               0
225#define DEBUG_VFS_ADD_SPECIAL             0
226#define DEBUG_VFS_CHDIR                   0
227#define DEBUG_VFS_CLOSE                   0
228#define DEBUG_VFS_DENTRY_CREATE           0
229#define DEBUG_VFS_FILE_CREATE             0
230#define DEBUG_VFS_GET_PATH                0
231#define DEBUG_VFS_INODE_CREATE            0
232#define DEBUG_VFS_INODE_LOAD_ALL          0
233#define DEBUG_VFS_KERNEL_MOVE             0
234#define DEBUG_VFS_LINK                    0
235#define DEBUG_VFS_LOOKUP                  0
236#define DEBUG_VFS_LSEEK                   0
237#define DEBUG_VFS_MKDIR                   0
238#define DEBUG_VFS_NEW_DENTRY_INIT         0
239#define DEBUG_VFS_OPEN                    0
240#define DEBUG_VFS_OPENDIR                 0
241#define DEBUG_VFS_STAT                    0
242#define DEBUG_VFS_USER_MOVE               0
243#define DEBUG_VFS_UNLINK                  0
244
245#define DEBUG_VMM_CREATE_VSEG             0
246#define DEBUG_VMM_DELETE_VSEG             0
247#define DEBUG_VMM_DESTROY                 0
248#define DEBUG_VMM_FORK_COPY               0
249#define DEBUG_VMM_GET_ONE_PPN             0
250#define DEBUG_VMM_GET_PTE                 0
251#define DEBUG_VMM_HANDLE_PAGE_FAULT       0
252#define DEBUG_VMM_HANDLE_COW              0
253#define DEBUG_VMM_MMAP_ALLOC              0
254#define DEBUG_VMM_PAGE_ALLOCATE           0
255#define DEBUG_VMM_REMOVE_VSEG             0
256#define DEBUG_VMM_RESIZE_VSEG             0
257#define DEBUG_VMM_SET_COW                 0
258#define DEBUG_VMM_UPDATE_PTE              0
259#define DEBUG_VMM_USER_INIT               0
260#define DEBUG_VMM_USER_RESET              0
261
262#define DEBUG_XHTAB                       0
263
264
265////////////////////////////////////////////////////////////////////////////////////////////
266//                KERNEL LOCKS TYPES MNEMONICS (for debug)
267// It must be kept consistent with the lock_name[] array defined in kernel_init.c file.
268////////////////////////////////////////////////////////////////////////////////////////////
269
270#define LOCK_CLUSTER_KCM       1   // local  (B)  protect dynamic KCM creation in cluster
271#define LOCK_PPM_FREE          2   // local  (B)  protect PPM allocator free_pages lists
272#define LOCK_SCHED_STATE       3   // local  (B)  protect scheduler state for given core
273#define LOCK_VMM_STACK         4   // local  (B)  protect VMM stack vseg allocator   
274#define LOCK_VMM_MMAP          5   // local  (B)  protect VMM mmap vseg allocator
275#define LOCK_VFS_CTX           6   // local  (B)  protect vfs context state
276#define LOCK_KCM_STATE         7   // local  (B)  protect KCM allocator state
277#define LOCK_KHM_STATE         8   // local  (B)  protect KHM allocator state
278#define LOCK_HTAB_STATE        9   // local  (B)  protect a local htab state
279
280#define LOCK_THREAD_JOIN      10   // remote (B)  protect join/exit between two threads
281#define LOCK_XHTAB_STATE      11   // remote (B)  protect  a distributed xhtab state
282#define LOCK_CHDEV_QUEUE      12   // remote (B)  protect chdev threads waiting queue
283#define LOCK_CHDEV_TXT0       13   // remote (B)  protect access to kernel terminal TXT0
284#define LOCK_CHDEV_TXTLIST    14   // remote (B)  protect xlist of processes using same TXT
285#define LOCK_PAGE_STATE       15   // remote (B)  protect physical page descriptor state
286#define LOCK_MUTEX_STATE      16   // remote (B)  protect user mutex state
287#define LOCK_CONDVAR_STATE    17   // remote (B)  protect user condvar state
288#define LOCK_SEM_STATE        18   // remote (B)  protect user semaphore state
289#define LOCK_PROCESS_CWD      19   // remote (B)  protect current working directory in process
290#define LOCK_BARRIER_STATE    20   // remote (B)  protect user barrier state
291
292#define LOCK_CLUSTER_PREFTBL  21   // local  (Q)  protect array of ref. processes in cluster
293
294#define LOCK_PPM_DIRTY        22   // remote (Q)  protect PPM dirty_pages list
295#define LOCK_CLUSTER_LOCALS   23   // remote (Q)  protect xlist of local processes in cluster
296#define LOCK_CLUSTER_COPIES   24   // remote (Q)  protect xlist of process copies in cluster
297#define LOCK_PROCESS_CHILDREN 25   // remote (Q)  protect xlist of chidren process in process
298#define LOCK_PROCESS_USERSYNC 26   // remote (Q)  protect lists of user synchros in process
299#define LOCK_PROCESS_FDARRAY  27   // remote (Q)  protect array of open files in owner process
300#define LOCK_FATFS_FREE       28   // remote (Q)  protect the FATFS context (free clusters)
301#define LOCK_PROCESS_DIR      29   // remote (Q)  protect xlist of open directories in process
302
303#define LOCK_PROCESS_THTBL    30   // local  (RW) protect local array of threads in a process
304
305#define LOCK_MAPPER_STATE     31   // remote (RW) protect mapper state
306#define LOCK_VFS_SIZE         32   // remote (RW) protect inode state and associated mapper
307#define LOCK_VFS_FILE         33   // remote (RW) protect file descriptor state
308#define LOCK_VMM_VSL          34   // remote (RW) protect VSL (local list of vsegs)
309#define LOCK_VMM_GPT          35   // remote (RW) protect GPT (local page table)
310#define LOCK_VFS_MAIN         36   // remote (RW) protect vfs traversal (in root inode)
311
312
313////////////////////////////////////////////////////////////////////////////////////////////
314//                          HARDWARE CONFIGURATION     
315////////////////////////////////////////////////////////////////////////////////////////////
316
317#define CONFIG_KERNEL_IDENTITY_MAP          true       // True for 32 bits cores             
318#define CONFIG_MAX_CLUSTERS_X               16         // max number of clusters in row
319#define CONFIG_MAX_CLUSTERS_Y               16         // max number of clusters in column
320#define CONFIG_MAX_CLUSTERS                 (CONFIG_MAX_CLUSTERS_X * CONFIG_MAX_CLUSTERS_Y)
321#define CONFIG_MAX_LOCAL_CORES              4          // max number of cores per cluster
322#define CONFIG_MAX_INT_DEV                  4          // max number of internal peripherals
323#define CONFIG_MAX_EXT_DEV                  8          // max number of external peripherals
324#define CONFIG_MAX_INTERNAL_IRQS            32         // max number of internal IRQs
325#define CONFIG_MAX_EXTERNAL_IRQS            32         // max number of external IRQs
326#define CONFIG_IRQS_PER_CORE                4          // number of input IRQs per core
327#define CONFIG_CLUSTER_SPAN                 32         // ln(phys. address space per cluster)
328#define CONFIG_CACHE_LINE_SIZE              64         // number of bytes in cache line
329
330#define CONFIG_CACHE_LINE_ALIGNED           __attribute__((aligned(CONFIG_CACHE_LINE_SIZE)))
331
332#define CONFIG_MAX_IOC_CHANNELS             1          // max number of IOC device channels
333#define CONFIG_MAX_FBF_CHANNELS             1          // max number of FBF device channels
334#define CONFIG_MAX_TXT_CHANNELS             8          // max number of TXT device channels
335#define CONFIG_MAX_DMA_CHANNELS             4          // max number of DMA device channels
336#define CONFIG_MAX_NIC_CHANNELS             4          // max number of NIC device channels
337
338#define CONFIG_TXT_ECHO_MODE                1          // echo mode for TXT peripheral
339#define CONFIG_TXT_KBUF_SIZE                512        // kernel buffer for TXT write
340
341#define CONFIG_FBF_WIDTH                    128
342#define CONFIG_FBF_HEIGHT                   128
343
344#define CONFIG_CPU_CTX_SIZE                 256        // up to 64 uint32_t registers
345#define CONFIG_FPU_CTX_SIZE                 256        // up to 32 uint64_t registers
346#define CONFIG_NIC_CHBUF_DEPTH              1          // number of containers in NIC chbuf
347
348////////////////////////////////////////////////////////////////////////////////////////////
349//                            PROCESS MANAGEMENT       
350////////////////////////////////////////////////////////////////////////////////////////////
351
352#define CONFIG_MAX_PROCESS_PER_CLUSTER      16         // max number of owned process
353#define CONFIG_PROCESS_FILE_MAX_NR          16         // max number of open files
354#define CONFIG_PROCESS_MAX_CHILDREN         1024       // max number of children process
355#define CONFIG_PROCESS_HEAP_MIN_SIZE        0x00010000 // user heap min size (bytes)
356#define CONFIG_PROCESS_HEAP_MAX_SIZE        0x30000000 // user heap max size (bytes)
357#define CONFIG_PROCESS_INIT_PATH            "/bin/user/init.elf"
358
359////////////////////////////////////////////////////////////////////////////////////////////
360//                            VIRTUAL FILE SYSTEM       
361////////////////////////////////////////////////////////////////////////////////////////////
362
363#define CONFIG_VFS_MAX_INODES               128        // max number of inodes per cluster
364#define CONFIG_VFS_MAX_NAME_LENGTH          56         // dentry name max length (bytes)
365#define CONFIG_VFS_MAX_PATH_LENGTH          256        // pathname max length (bytes)
366#define CONFIG_VFS_FREE_CLUSTERS_MIN        32         // min number of free clusters
367#define CONFIG_VFS_MAX_DENTRIES             63         // max number of dentries in one dir
368
369#define CONFIG_VFS_ROOT_IS_FATFS            1          // root FS is FATFS if non zero
370#define CONFIG_VFS_ROOT_IS_EX2FS            0          // root FS is EX2FS if non zero
371
372#define CONFIG_MAPPER_GRDXT_W1              7      // number of bits for RADIX_TREE_IX1
373#define CONFIG_MAPPER_GRDXT_W2              7      // number of bits for RADIX_TREE_IX2
374#define CONFIG_MAPPER_GRDXT_W3              6      // number of bits for RADIX_TREE_IX3
375
376////////////////////////////////////////////////////////////////////////////////////////////
377//                                  DQDT       
378////////////////////////////////////////////////////////////////////////////////////////////
379
380#define CONFIG_DQDT_LEVELS_NR               5
381#define CONFIG_DQDT_TICKS_PER_QUANTUM       1        // number of ticks between updates
382
383////////////////////////////////////////////////////////////////////////////////////////////
384//                              RANDOM NUMBERS
385////////////////////////////////////////////////////////////////////////////////////////////
386
387#define CONFIG_RDNG_PARAM_A                 65519
388#define CONFIG_RDNG_PARAM_C                 64037
389
390////////////////////////////////////////////////////////////////////////////////////////////
391//                                SCHEDULING
392////////////////////////////////////////////////////////////////////////////////////////////
393
394#define CONFIG_SCHED_TICK_MS_PERIOD         10000   // number of milliseconds per period
395#define CONFIG_SCHED_TICKS_PER_QUANTUM      1       // number of ticks between scheduling
396#define CONFIG_SCHED_MAX_THREADS_NR         32      // max number of threads per core
397#define CONFIG_SCHED_IDLE_MODE_SLEEP        0       // idle thread use sleep mode if non 0
398
399////////////////////////////////////////////////////////////////////////////////////////////
400//                                 THREADS
401////////////////////////////////////////////////////////////////////////////////////////////
402
403#define CONFIG_THREADS_MAX_PER_CLUSTER      32      // max threads per cluster per process
404#define CONFIG_THREAD_DESC_SIZE             0x4000  // thread desc size (with kernel stack)
405#define CONFIG_THREAD_DESC_ORDER            2       // ln( number of 4K pages )
406
407////////////////////////////////////////////////////////////////////////////////////////////
408//                             REMOTE PROCEDURE CALL
409////////////////////////////////////////////////////////////////////////////////////////////
410
411#define CONFIG_REMOTE_FIFO_SLOTS                    16
412#define CONFIG_REMOTE_FIFO_MAX_ITERATIONS   1024
413#define CONFIG_RPC_THREADS_MAX              4      // max number of RPC threads per core
414
415////////////////////////////////////////////////////////////////////////////////////////////
416//             32 bits  USER SPACE SEGMENTATION / all values are numbers of pages
417////////////////////////////////////////////////////////////////////////////////////////////
418
419#define CONFIG_VMM_VSPACE_SIZE        0x100000     // virtual space          : 4   Gbytes
420
421#define CONFIG_VMM_UTILS_BASE         0x000200     // UTILS zone base        : 2   Mbytes
422#define CONFIG_VMM_ELF_BASE           0x000400     // ELF zone base          : 4   Mbytes
423#define CONFIG_VMM_HEAP_BASE          0x002000     // HEAP zone base         : 32  Mbytes
424#define CONFIG_VMM_STACK_BASE         0x0C0000     // STACK zone base        : 3   Gbytes
425
426#define CONFIG_VMM_ARGS_SIZE          0x000004     // args vseg size         : 16  Kbytes
427#define CONFIG_VMM_ENVS_SIZE          0x000008     // envs vseg size         : 32  Kbytes
428#define CONFIG_VMM_STACK_SIZE         0x001000     // single stack vseg size : 16  Mbytes
429
430////////////////////////////////////////////////////////////////////////////////////////////
431//                      PHYSICAL MEMORY MANAGEMENT         
432////////////////////////////////////////////////////////////////////////////////////////////
433
434#define CONFIG_PPM_PAGE_SIZE          4096         // physical page size (bytes)
435#define CONFIG_PPM_PAGE_SHIFT         12           // physical page shift (bits)
436#define CONFIG_PPM_PAGE_MASK          0x00000FFF   // physical page mask     
437#define CONFIG_PPM_MAX_ORDER          16           // ln(total number of pages per cluster)
438#define CONFIG_PPM_HEAP_ORDER         10           // ln(number of heap pages per cluster)
439#define CONFIG_PPM_MAX_RSVD           32           // max reserved zones on the machine
440
441#define CONFIG_KCM_SLOT_SIZE          64           // smallest allocated block (bytes)
442
443#define CONFIG_PPM_PAGE_ALIGNED       __attribute__((aligned(CONFIG_PPM_PAGE_SIZE)))
444
445
446////////////////////////////////////////////////////////////////////////////////////////////
447//                 INSTRUMENTATION
448////////////////////////////////////////////////////////////////////////////////////////////
449
450#define CONFIG_INTRUMENTATION_SYSCALLS  0
451
452
453
454
455
456#endif  /* _KERNEL_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.