xv6, line by line
kernel/param.h

kernel/param.h

C header · 14 lines · annotated 100% · kernel · upstream

Included by 26 fileskernel/bio.c, kernel/console.c, kernel/exec.c, kernel/file.c, kernel/fs.c, kernel/kalloc.c, kernel/log.c, kernel/main.c, kernel/pipe.c, kernel/plic.c, kernel/printk.c, kernel/proc.c, kernel/sleeplock.c, kernel/spinlock.c, kernel/start.c, kernel/syscall.c, kernel/sysfile.c, kernel/sysproc.c, kernel/trap.c, kernel/uart.c, kernel/virtio_disk.c, kernel/vm.c, mkfs/mkfs.c, user/grind.c, user/umalloc.c, user/usertests.c
About this file

The kernel’s fixed limits. xv6 allocates almost all of its tables (processes, open files, inodes, disk buffers) as fixed-size arrays at compile time instead of growing them at run time, and these constants set their sizes. Changing one means recompiling the kernel, and for FSSIZE and LOGBLOCKS also rebuilding the disk image with mkfs, which includes this file too.

Each line is a #define: the C preprocessor replaces the name with its value wherever it appears. The parentheses around the computed values keep them correct inside larger expressions.

1#define NPROC 64 // maximum number of processes
2#define NCPU 8 // maximum number of CPUs
3#define NOFILE 16 // open files per process
4#define NFILE 100 // open files per system
5#define NINODE 50 // maximum number of active i-nodes
6#define NDEV 10 // maximum major device number
7#define ROOTDEV 1 // device number of file system root disk
8#define MAXARG 32 // max exec arguments
9#define MAXOPBLOCKS 10 // max # of blocks any FS op writes
10#define LOGBLOCKS (MAXOPBLOCKS * 3) // max data blocks in on-disk log
11#define NBUF (MAXOPBLOCKS * 3) // size of disk block cache
12#define FSSIZE 2000 // size of file system in blocks
13#define MAXPATH 128 // maximum file path name
14#define USERSTACK 1 // user stack pages