summaryrefslogtreecommitdiffhomepage
path: root/docs/md/SPECIFICATION_KERNEL.md
blob: ae283428d07ac1b7e76b2076ecd4dde1baaa7305 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
===================================

# 0: General Information

===================================

- ABI and Format: PEF/PE32+.
- Kernel architecture: Portable hybrid Kernel.
- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, POWER, RISCV))

===================================

# 1: The Kernel (NeKernel)

===================================

- Drive/Device Abstraction.
- SMP, Preemptive Multi Threading.
- Separation of Files/Devices.
- Networking.
- Hardware Abstraction Layer.
- Native Filesystem support (NeFS, FAT32 and ffs2).
- Program Loaders interfaces.
- TLS (Thread Local Storage) support.
- BinaryMutex, Locks, Timers.
- Canary mechanisms.
- Dynamic Sys.
- Cross Platform.
- Permission Selectors.

===================================

# 2: The Filesystem (NeFS)

===================================

- Catalog object with associated forks.
- Large storage support.
- Long file names.
- UNIX path style.
- Can be formated under 8mb.

==================================

# 3: Common naming conventions:

==================================

- Kernel -> ke_init_x
- RunTime -> rt_copy_mem
- Hal -> hal_foo_bar
- Class methods -> Class::FooBar

===================================

# 4: The Bootloader (BootZ)

===================================

- Capable of booting from a network drive.
- Loads a PE file which is the Kernel.
- Sanity checks, based on the number of sections.
- Handover compliant.
- Does check for a valid partition (useful in the case of recovering)