|
This document explains how the CROCOS source code is organised and gives hints to port CROCOS on others architectures. |
| + doc/ | + README, phases... text files documention | + html/ | + index.html... html files documentation | + disk_img/ ext2 disk image used for tests | + phase_1/ code for phase 1 + phase_2.1/ code for phase 2.1 + ... ... |
|
The definition for "first phases" can be found in " How to build, test and use CROCOS ": In these phases, user programs and the kernel are linked together and the kernel is run inside a Linux process. |
+ Makefile, rules.mk, var.mk main Makefile files
|
+ crocos/ kernel code
| + main/
| | + main.c entry point for the kernel
| |
| + devices/ devices related code (drivers)
| + fs/ file system code
| + intr/ interrupt handlers
| + process/ tasks manager
| |
| + include/
| + config/config.h system configuration
| + devices/ include files for device drivers
| + fs/ include files for file system
| + intr/ include files for interrupt handlers
| + process/ include files for the tasks manager
|
+ klibc klibc code
| + src/ source code
| + include/
| | + klibc/ include files
| + test/ test programs for the klic
| + klibc.a klibc library after compilation
|
+ usr/ user-space related files
+ lib/ directory for user-space libraries
| + libcrocos.a libcrocos library after compilation
| (defines system calls)
+ src/
| + crocos/ source files for libcrocos library
| + init/
| | + init.c init task code
| + test/ test programs for CROCOS
| + fork.c, fork.res test for fork + expected output
| + ...
|
+ include/
+ crocos/ include files for user programs
(declare system calls, errno...)
Notes: |
|
• |
In "first phases", the device drivers directory contains code to print messages on the terminal (with the Linux write system call), to shuts the system down (with the Linux _exit system call) and to load the disk image file in memory (with the Linux open, read and close system calls). |
|
• |
The interrupt handler directory contains the code to manage system calls. Indeed, in later phases, system calls will be implemented with a software interruption. |
|
In the above layouts, arch directories are missing. Those directories contain code related to a specific architecture (one directory per architecture). Such directories can be found, for example, in klibc/include/klibc/arch or crocos/include/process/arch. Porting CROCOS to a new architecture should only require changes in those arch directories. Basically, all the functions/macros defined in an arch directory need to be rewritten for a specific architecture in a dedicated directory. Note that the var.mk file (in the root directory of a phase) also needs to be updated so that the ARCH variable can be defined to a new architecture (see How to build, test and use CROCOS for more informations on the ARCH variable). |