Predefined Constants in SPL
SPL constants defining the call addresses for Interrupts/Exceptions/Modules¶
Name | Default Value | Comments |
---|---|---|
EX_HANDLER / EXCEPTION | 1024 | Starting address of Exception Handler |
TIMER | 2048 | Starting address of Timer Interrupt Routine |
DISK | 3072 | Starting address of Disk Controller Interrupt Routine |
CONSOLE | 4096 | Starting address of Console Interrupt Routine |
INT_4 | 5120 | (Create, 1)*, (Delete, 4) |
INT_5 | 6144 | (Seek, 6), (Open, 2), (Close,3) |
INT_6 | 7168 | (Read, 7) |
INT_7 | 8192 | (Write, 5) |
INT_8 | 9216 | (Fork, 8) |
INT_9 | 10240 | (Exec, 9) |
INT_10 | 11264 | (Exit, 10) |
INT_11 | 12288 | (Getpid, 11), (Getppid, 12), (Wait, 13), (Signal, 14) |
INT_12 | 13312 | (Logout, 28) |
INT_13 | 14336 | (Semget, 17), (Semrelease, 18) |
INT_14 | 15360 | (SemLock, 19), (SemUnLock, 20) |
INT_15 | 16384 | (Shutdown, 21) |
INT_16 | 17408 | (Newusr, 22), (Remusr, 23), (Setpwd, 24), (Getuname, 25), (Getuid, 26) |
INT_17 | 18432 | (Login, 27) |
INT_18 | 19456 | (Test0, 96), (Test1, 97), (Test2, 98), (Test3, 99) |
MOD_0 / RESOURCE_MANAGER | 20480 | Resource Manager |
MOD_1 / PROCESS_MANAGER | 21504 | Process Manager |
MOD_2 / MEMORY_MANAGER | 22528 | Memory Manager |
MOD_3 / FILE_MANAGER | 23552 | File Manager |
MOD_4 / DEVICE_MANAGER | 24576 | Device Manager |
MOD_5 / CONTEXT_SWITCH / SCHEDULER | 25600 | Context Switch Module (Scheduler Module) |
MOD_6 / PAGER_MODULE | 26624 | Pager Module |
MOD_7 / BOOT_MODULE | 27648 | Boot Module |
*(System Call Name, System Call Number)
SPL constants for the System Call Numbers¶
Name | System Call Number | Comments |
---|---|---|
INT_CREATE | 1 | Create System Call |
INT_OPEN | 2 | Open System Call |
INT_CLOSE | 3 | Close System Call |
INT_DELETE | 4 | Delete System Call |
INT_WRITE | 5 | Write System Call |
INT_SEEK | 6 | Seek System Call |
INT_READ | 7 | Read System Call |
INT_FORK | 8 | Fork System Call |
INT_EXEC | 9 | Exec System Call |
INT_EXIT | 10 | Exit System Call |
INT_GETPID | 11 | Getpid System Call |
INT_GETPPID | 12 | Getppid System Call |
INT_WAIT | 13 | Wait System Call |
INT_SIGNAL | 14 | Signal System Call |
INT_SEMGET | 17 | Semget System Call |
INT_SEMRELEASE | 18 | Semrelease System Call |
INT_SEMLOCK | 19 | SemLock System Call |
INT_SEMUNLOCK | 20 | SemUnLock System Call |
INT_SHUTDOWN | 21 | Shutdown System Call |
INT_NEWUSR | 22 | Newusr System Call |
INT_REMUSR | 23 | Remusr System Call |
INT_SETPWD | 24 | Setpwd System Call |
INT_GETUNAME | 25 | Getuname System Call |
INT_GETUID | 26 | Getuid System Call |
INT_LOGIN | 27 | Login System Call |
INT_LOGOUT | 28 | Logout System Call |
INT_TEST0 | 96 | Test System Call 0 |
INT_TEST1 | 97 | Test System Call 1 |
INT_TEST2 | 98 | Test System Call 2 |
INT_TEST3 | 99 | Test System Call 3 |
SPL constants for indicating the Function Numbers in Modules¶
Name | Default Value | Comments |
---|---|---|
ACQUIRE_BUFFER | 1 | Resource Manager Function #1 |
RELEASE_BUFFER | 2 | Resource Manager Function #2 |
ACQUIRE_DISK | 3 | Resource Manager Function #3 |
ACQUIRE_INODE | 4 | Resource Manager Function #4 |
RELEASE_INODE | 5 | Resource Manager Function #5 |
ACQUIRE_SEMAPHORE | 6 | Resource Manager Function #6 |
RELEASE_SEMAPHORE | 7 | Resource Manager Function #7 |
ACQUIRE_TERMINAL | 8 | Resource Manager Function #8 |
RELEASE TERMINAL | 9 | Resource Manager Function #9 |
GET_PCB_ENTRY | 1 | Process Manager Function #1 |
FREE_USER_AREA_PAGE | 2 | Process Manager Function #2 |
EXIT_PROCESS | 3 | Process Manager Function #3 |
FREE_PAGE_TABLE | 4 | Process Manager Function #4 |
KILL_ALL | 5 | Process Manager Function #5 |
GET_FREE_PAGE | 1 | Memory Manager Function #1 |
RELEASE_PAGE | 2 | Memory Manager Function #2 |
GET_FREE_BLOCK | 3 | Memory Manager Function #3 |
RELEASE_BLOCK | 4 | Memory Manager Function #4 |
GET_CODE_PAGE | 5 | Memory Manager Function #5 |
GET_SWAP_BLOCK | 6 | Memory Manager Function #6 |
BUFFERED_WRITE | 1 | File Manager Function #1 |
BUFFERED_READ | 2 | File Manager Function #2 |
OPEN | 3 | File Manager Function #3 |
CLOSE | 4 | File Manager Function #4 |
DISK_STORE | 1 | Device Manager Function #1 |
DISK_LOAD | 2 | Device Manager Function #2 |
TERMINAL_WRITE | 3 | Device Manager Function #3 |
TERMINAL_READ | 4 | Device Manager Function #4 |
SWAP_OUT | 1 | Pager Module Function #1 |
SWAP_IN | 2 | Pager Module Function #2 |
SPL constants for indicating the starting addresses of Kernel Data Structures in Memory (See Memory Organisation)¶
Name | Default Value | Comments |
---|---|---|
PROCESS_TABLE | 28672 | Starting address of Process Table |
OPEN_FILE_TABLE | 28928 | Starting address of Open File Table |
SEMAPHORE_TABLE | 29056 | Starting address of Semaphore Table |
MEMORY_FREE_LIST | 29184 | Starting address of Memory Free List |
FILE_STATUS_TABLE | 29312 | Starting address of File Status Table |
DISK_STATUS_TABLE | 29552 | Starting address of Disk Status Table |
SYSTEM_STATUS_TABLE | 29560 | Starting address of System Status Table |
TERMINAL_STATUS_TABLE | 29568 | Starting address of Terminal Status Table |
PAGE_TABLE_BASE | 29696 | Starting address of Page tables |
BUFFER_TABLE | 30016 | Starting address of Buffer Table |
DISK_MAP_TABLE | 30032 | Starting address of Disk Map Table |
INODE_TABLE | 30208 | Starting address of Inode Table |
USER_TABLE | 31168 | Starting address of User Table |
DISK_FREE_LIST | 31232 | Starting address of Disk Free List |
ROOT_FILE | 31744 | Starting address of Root File |
BUFFER | 36352 | Starting address of Buffer Cache |
BUFFER_BASE | 71 | Starting page number of Buffer Cache |
SPL constants for related to User Programs loaded by the Kernel to Memory (See Memory Organisation)¶
Name | Default Value | Comments |
---|---|---|
LIBRARY | 32256 | Starting address of eXpOS Library |
INIT / LOGIN | 33280 | Starting address of INIT/Login Program |
SHELL | 34304 | Starting address of Shell Program |
IDLE / SWAPPER | 35328 | Starting address of Idle/Swapper Program |
IDLE_PROCESS | 0 | PID of the Idle Process |
INIT_PROCESS / LOGIN_PROCESS | 1 | PID of the Init/Login Proces |
SHELL_PROCESS | 2 | PID of the Shell |
SWAPPER_DAEMON | 15 | PID of the Swapper Daemon |
SPL constants for indicating the Process States¶
Name | Default Value | Comments |
---|---|---|
READY | 1 | Process State READY |
RUNNING | 2 | Process State RUNNING |
CREATED | 3 | Process State CREATED |
TERMINATED | 4 | Process State TERMINATED |
WAIT_DISK | 5 | Process is waiting to acquire disk |
WAIT_FILE | 6 | Process is waiting for release on an Inode |
WAIT_BUFFER | 7 | Process is waiting for release of buffer cache |
WAIT_TERMINAL | 8 | Process is waiting to acquire terminal |
WAIT_PROCESS | 9 | Process is waiting for a signal from another process |
WAIT_SEMAPHORE | 10 | Process is waiting to acquire a semaphore |
WAIT_MEM | 11 | Process is waiting as memory is not available |
ALLOCATED | 12 | Process Table entry has been allocated for the process, but process creation is not complete |
SPL constants identifying the File Type/Permission in Inode Table¶
Name | Default Value | Comments |
---|---|---|
EXCLUSIVE | 0 | EXCLUSIVE file permission |
OPEN_ACCESS | 1 | OPEN ACCESS file permission |
ROOT | 1 | Indicates that the file is the root file |
DATA | 2 | Indicates that the file is a data file |
EXEC | 3 | Indicates that the file is an executable file |
SPL constants related to Per-process Resource Table¶
Name | Default Value | Comments |
---|---|---|
FILE | 0 | Indicates that the resource is a file in the resource table |
SEMAPHORE | 1 | Indicates that the resource is a semaphore in the resource table |
RESOURCE_TABLE_OFFSET | 496 | Offset of the Resource Table from the start of user area page |
SPL constants related to Swapping¶
Name | Default Value | Comments |
---|---|---|
MEM_LOW | 4 | Memory is critically low so that swap out has to be initiated |
MEM_HIGH | 12 | Memory is high enough such that a process can be swapped in |
MAX_TICK | 1000 | Indicates the threshold after which a swapped out process must be swapped back in |
SPL constants related to eXpFS Disk (See Disk Origanisation)¶
Name | Default Value | Comments |
---|---|---|
XFS_BSIZE | 512 | Number of words in a disk block |
MAX_FILE_BLOCKS | 4 | Maximum number of blocks allocatable to each file. |
DISK_SWAP_AREA | 256 | Starting block number of Swap Area in the disk |
DISK_FREE_AREA | 69 | Starting block number of User Block area in the disk |
DISK_SIZE | 512 | Number of blocks in the disk |
SPL constants defining the maximum limits¶
Name | Default Value | Comments |
---|---|---|
PAGE_SIZE | 512 | Size of a memory page in eXpOS |
NUM_MEM_PAGES | 128 | Number of memory pages in eXpOS |
MAX_PROC_NUM | 16 | Max. number of process allowed by eXpOS |
PT_ENTRY_SIZE | 16 | Size of one page table entry |
MAX_OPENFILE_NUM | 32 | Max. number of open files allowed by eXpOS |
MAX_MEM_PAGE | 128 | Max. number of memory pages availble to eXpOS |
MAX_SEM_COUNT | 32 | Max. number of semaphores allowed by eXpOS |
MAX_PROC_PAGES | 10 | Max. number of pages allowed for each process |
MAX_BUFFER | 4 | Max. number of file read/write buffers in eXpOS |
MAX_FILE_NUM | 60 | Max. number of files possible |
MAX_FILE_SIZE | 2048 | Max. words in a file |
MAX_USER_NUM | 16 | Max. number of users allowed |
Miscellaneous Constants¶
Name | Default Value | Comments |
---|---|---|
INODE_ROOT | 0 | Inode Index field of the Open File Table is set to INODE_ROOT if the file is the Root file. |
KERNEL | 0 | Indicates the Kernel user in the CURRENT_USER_ID field of the System Status Table |
ZERO | 0 | Zero |
ONE | 1 | One |
Constants for NEXSM¶
Name | Default Value | Comments |
---|---|---|
OS_SECONDARY | 65536 | Starting address of OS Startup code for secondary core. |
INT_19 | 66560 | (Test4, 100), (Test5, 101), (Test6, 102), (Test7, 103) |
MOD_8 / ACCESS_CONTROL | 67584 | Access Control Module |
MOD_9 / TESTA | 68608 | TestA (Reserved for Future use) |
MOD_10 / TESTB | 69632 | TestB (Reserved for Future use) |
MOD_11 / TESTC | 70656 | TestC (Reserved for Future use) |
IDLE2_PROCESS | 14 | PID of the Idle Process for secondary core |
INT_TEST4 | 100 | Test System Call 4 |
INT_TEST5 | 101 | Test System Call 5 |
INT_TEST6 | 102 | Test System Call 6 |
INT_TEST7 | 103 | Test System Call 7 |
ACQUIRE_KERN_LOCK | 1 | Access Control Module Function #1 |
ACQUIRE_SCHED_LOCK | 2 | Access Control Module Function #2 |
ACQUIRE_GLOCK | 3 | Access Control Module Function #3 |
RELEASE_LOCK | 4 | Access Control Module Function #4 |
PRIMARY_CORE | 0 | Indicates that the current core is primary core |
SECONDARY_CORE | 1 | Indicates that the current core is secondary core |
ACCESS_LOCK_TABLE | 29576 | Starting address of Access Lock Table |
KERN_LOCK | 29576 | Kernel Lock |
SCHED_LOCK | 29577 | Scheduler Lock |
GLOCK | 29578 | General Purpose Lock |
NUM_MEM_PAGES * | 144 | Number of memory pages in eXpOS |
DISK_SIZE * | 528 | Number of blocks in the disk |