source: trunk/kernel/kernel_config.h @ 627

Last change on this file since 627 was 625, checked in by alain, 5 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
RevLine 
[439]1/*
2 * kernel_config.h - global kernel configuration arguments
3 *
[590]4 * Authors  Mohamed Lamine Karaoui (2015)
[614]5 *          Alain Greiner (2016,2017,2018,2019)
[439]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
[569]25#ifndef _KERNEL_CONFIG_H_
26#define _KERNEL_CONFIG_H_
[439]27
[625]28#define CONFIG_ALMOS_VERSION           "Version 2.0 / April 2019"
[439]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
[620]37#define DEBUG_BARRIER_CREATE              0
38#define DEBUG_BARRIER_DESTROY             0
[619]39#define DEBUG_BARRIER_WAIT                0
[581]40
[620]41#define DEBUG_BUSYLOCK                    0
[625]42#define DEBUG_BUSYLOCK_PID                0x10001    // for busylock detailed debug
43#define DEBUG_BUSYLOCK_TRDID              0x10000    // for busylock detailed debug
[569]44                 
[607]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
[439]49
[607]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
[439]54
[607]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
[439]66
[614]67#define DEBUG_DEVFS_GLOBAL_INIT           0
68#define DEBUG_DEVFS_LOCAL_INIT            0
[607]69#define DEBUG_DEVFS_MOVE                  0
[439]70
[607]71#define DEBUG_ELF_LOAD                    0
[582]72
[607]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
[439]78
[607]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
[614]84#define DEBUG_FATFS_GET_USER_DIR          0
[607]85#define DEBUG_FATFS_MOVE_PAGE             0
[623]86#define DEBUG_FATFS_NEW_DENTRY            0
[624]87#define DEBUG_FATFS_RELEASE_INODE         0
[610]88#define DEBUG_FATFS_REMOVE_DENTRY         0
[607]89#define DEBUG_FATFS_SYNC_FAT              0
90#define DEBUG_FATFS_SYNC_FSINFO           0
91#define DEBUG_FATFS_SYNC_INODE            0
[623]92#define DEBUG_FATFS_UPDATE_DENTRY         0
[439]93
[625]94#define DEBUG_HAL_CONTEXT                 0
[624]95#define DEBUG_HAL_EXCEPTIONS              0
[607]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
[624]100#define DEBUG_HAL_IOC_RX                  0
101#define DEBUG_HAL_IOC_TX                  0
102#define DEBUG_HAL_IRQS                    0
[607]103#define DEBUG_HAL_KENTRY                  0
104#define DEBUG_HAL_TXT_RX                  0
105#define DEBUG_HAL_TXT_TX                  0
[624]106#define DEBUG_HAL_USPACE                  0
107#define DEBUG_HAL_VMM                     0
[439]108
[607]109#define DEBUG_KCM                         0
110#define DEBUG_KMEM                        0
[439]111
[619]112#define DEBUG_KERNEL_INIT                 0
[439]113
[610]114#define DEBUG_MAPPER_GET_PAGE             0
[607]115#define DEBUG_MAPPER_HANDLE_MISS          0
116#define DEBUG_MAPPER_MOVE_USER            0
117#define DEBUG_MAPPER_MOVE_KERNEL          0
[623]118#define DEBUG_MAPPER_SYNC                 0
[569]119
[607]120#define DEBUG_MUTEX                       0
[439]121
[607]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
[610]127#define DEBUG_PROCESS_FD_REGISTER         0
[607]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
[439]136
[623]137#define DEBUG_QUEUELOCK_TYPE              0    // lock type (0 : undefined / 1000 : all types)
[569]138
[607]139#define DEBUG_RPC_CLIENT_GENERIC          0
140#define DEBUG_RPC_SERVER_GENERIC          0
[439]141
[607]142#define DEBUG_RPC_KCM_ALLOC               0
143#define DEBUG_RPC_KCM_FREE                0
[610]144#define DEBUG_RPC_MAPPER_HANDLE_MISS      0
[607]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
[611]159#define DEBUG_RPC_VMM_CREATE_VSEG         0
[607]160#define DEBUG_RPC_VMM_GET_PTE             0
161#define DEBUG_RPC_VMM_GET_VSEG            0
[619]162#define DEBUG_RPC_VMM_DELETE_VSEG         0
[439]163
[623]164#define DEBUG_RWLOCK_TYPE                 0    // lock type (0 : undefined / 1000 : all types)
[569]165
[607]166#define DEBUG_SCHED_HANDLE_SIGNALS        2
[625]167#define DEBUG_SCHED_YIELD                 0
[607]168#define DEBUG_SCHED_RPC_ACTIVATE          0
[439]169
[607]170#define DEBUG_SEM                         0
[569]171
[607]172#define DEBUG_SYSCALLS_ERROR              2
[439]173
[607]174#define DEBUG_SYS_BARRIER                 0
175#define DEBUG_SYS_CLOSE                   0
[611]176#define DEBUG_SYS_CLOSEDIR                0
[607]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
[610]184#define DEBUG_SYS_GETCWD                  0
[607]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
[611]189#define DEBUG_SYS_MKDIR                   0
[607]190#define DEBUG_SYS_MMAP                    0
191#define DEBUG_SYS_MUNMAP                  0
192#define DEBUG_SYS_MUTEX                   0
[625]193#define DEBUG_SYS_OPEN                    0
194#define DEBUG_SYS_OPENDIR                 0
[607]195#define DEBUG_SYS_READ                    0
[611]196#define DEBUG_SYS_READDIR                 0
[607]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
[439]210
[607]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
[439]221
[614]222#define DEBUG_USER_DIR                    0
[612]223
[607]224#define DEBUG_VFS_ADD_CHILD               0
[614]225#define DEBUG_VFS_ADD_SPECIAL             0
[611]226#define DEBUG_VFS_CHDIR                   0
[607]227#define DEBUG_VFS_CLOSE                   0
228#define DEBUG_VFS_DENTRY_CREATE           0
[610]229#define DEBUG_VFS_FILE_CREATE             0
230#define DEBUG_VFS_GET_PATH                0
[607]231#define DEBUG_VFS_INODE_CREATE            0
232#define DEBUG_VFS_INODE_LOAD_ALL          0
[625]233#define DEBUG_VFS_KERNEL_MOVE             0
[610]234#define DEBUG_VFS_LINK                    0
[611]235#define DEBUG_VFS_LOOKUP                  0
[607]236#define DEBUG_VFS_LSEEK                   0
[611]237#define DEBUG_VFS_MKDIR                   0
[625]238#define DEBUG_VFS_NEW_DENTRY_INIT         0
[607]239#define DEBUG_VFS_OPEN                    0
[614]240#define DEBUG_VFS_OPENDIR                 0
[607]241#define DEBUG_VFS_STAT                    0
[625]242#define DEBUG_VFS_USER_MOVE               0
[624]243#define DEBUG_VFS_UNLINK                  0
[439]244
[607]245#define DEBUG_VMM_CREATE_VSEG             0
[611]246#define DEBUG_VMM_DELETE_VSEG             0
[607]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
[614]253#define DEBUG_VMM_MMAP_ALLOC              0
[607]254#define DEBUG_VMM_PAGE_ALLOCATE           0
[625]255#define DEBUG_VMM_REMOVE_VSEG             0
[623]256#define DEBUG_VMM_RESIZE_VSEG             0
[607]257#define DEBUG_VMM_SET_COW                 0
258#define DEBUG_VMM_UPDATE_PTE              0
[625]259#define DEBUG_VMM_USER_INIT               0
260#define DEBUG_VMM_USER_RESET              0
[439]261
[607]262#define DEBUG_XHTAB                       0
[440]263
[569]264
[439]265////////////////////////////////////////////////////////////////////////////////////////////
[569]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
[610]281#define LOCK_XHTAB_STATE      11   // remote (B)  protect  a distributed xhtab state
[569]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
[610]289#define LOCK_PROCESS_CWD      19   // remote (B)  protect current working directory in process
[619]290#define LOCK_BARRIER_STATE    20   // remote (B)  protect user barrier state
[569]291
292#define LOCK_CLUSTER_PREFTBL  21   // local  (Q)  protect array of ref. processes in cluster
293
[607]294#define LOCK_PPM_DIRTY        22   // remote (Q)  protect PPM dirty_pages list
[569]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
[619]298#define LOCK_PROCESS_USERSYNC 26   // remote (Q)  protect lists of user synchros in process
[569]299#define LOCK_PROCESS_FDARRAY  27   // remote (Q)  protect array of open files in owner process
[607]300#define LOCK_FATFS_FREE       28   // remote (Q)  protect the FATFS context (free clusters)
[611]301#define LOCK_PROCESS_DIR      29   // remote (Q)  protect xlist of open directories in process
[569]302
[611]303#define LOCK_PROCESS_THTBL    30   // local  (RW) protect local array of threads in a process
[569]304
[611]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)
[569]311
[590]312
[569]313////////////////////////////////////////////////////////////////////////////////////////////
[439]314//                          HARDWARE CONFIGURATION     
315////////////////////////////////////////////////////////////////////////////////////////////
316
317#define CONFIG_KERNEL_IDENTITY_MAP          true       // True for 32 bits cores             
[569]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)
[439]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
[569]324#define CONFIG_MAX_INTERNAL_IRQS            32         // max number of internal IRQs
325#define CONFIG_MAX_EXTERNAL_IRQS            32         // max number of external IRQs
[439]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
[443]339#define CONFIG_TXT_KBUF_SIZE                512        // kernel buffer for TXT write
[439]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
[607]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
[439]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
[611]364#define CONFIG_VFS_MAX_NAME_LENGTH          56         // dentry name max length (bytes)
[439]365#define CONFIG_VFS_MAX_PATH_LENGTH          256        // pathname max length (bytes)
[607]366#define CONFIG_VFS_FREE_CLUSTERS_MIN        32         // min number of free clusters
[611]367#define CONFIG_VFS_MAX_DENTRIES             63         // max number of dentries in one dir
[439]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
[614]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
[439]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
[590]397#define CONFIG_SCHED_IDLE_MODE_SLEEP        0       // idle thread use sleep mode if non 0
[439]398
399////////////////////////////////////////////////////////////////////////////////////////////
400//                                 THREADS
401////////////////////////////////////////////////////////////////////////////////////////////
402
[590]403#define CONFIG_THREADS_MAX_PER_CLUSTER      32      // max threads per cluster per process
[439]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
[440]413#define CONFIG_RPC_THREADS_MAX              4      // max number of RPC threads per core
[439]414
415////////////////////////////////////////////////////////////////////////////////////////////
[624]416//             32 bits  USER SPACE SEGMENTATION / all values are numbers of pages
[439]417////////////////////////////////////////////////////////////////////////////////////////////
418
419#define CONFIG_VMM_VSPACE_SIZE        0x100000     // virtual space          : 4   Gbytes
420
[624]421#define CONFIG_VMM_UTILS_BASE         0x000200     // UTILS zone base        : 2   Mbytes
[439]422#define CONFIG_VMM_ELF_BASE           0x000400     // ELF zone base          : 4   Mbytes
423#define CONFIG_VMM_HEAP_BASE          0x002000     // HEAP zone base         : 32  Mbytes
[579]424#define CONFIG_VMM_STACK_BASE         0x0C0000     // STACK zone base        : 3   Gbytes
[439]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
[625]428#define CONFIG_VMM_STACK_SIZE         0x001000     // single stack vseg size : 16  Mbytes
[439]429
430////////////////////////////////////////////////////////////////////////////////////////////
[619]431//                      PHYSICAL MEMORY MANAGEMENT         
[439]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////////////////////////////////////////////////////////////////////////////////////////////
[569]447//                 INSTRUMENTATION
[439]448////////////////////////////////////////////////////////////////////////////////////////////
449
[569]450#define CONFIG_INTRUMENTATION_SYSCALLS  0
[439]451
452
453
454
455
456#endif  /* _KERNEL_CONFIG_H_ */
Note: See TracBrowser for help on using the repository browser.