MushOS  0.1
A UNIX-like OS prototype, written from scratch
Loading...
Searching...
No Matches
kernel.c File Reference

Kernel entry point. More...

#include "kernel.h"
#include "../../lib/base/generic.h"
#include "../../lib/base/heap.h"
#include "../../lib/base/stdio.h"
#include "../../lib/base/exceptions.h"
#include "../../lib/base/string.h"
#include "../drivers/screen.h"
#include "../drivers/keyboard.h"
#include "interruption_tables.h"
#include "timer.h"
#include "pages.h"
#include "task.h"
#include "modules.h"
Include dependency graph for kernel.c:

Go to the source code of this file.

Functions

void _start ()
 

Detailed Description

Kernel entry point.

Definition in file kernel.c.

Function Documentation

◆ _start()

void _start ( )

Make kernel constants:

Divide boot loader into: loader, functions, GDT.

First man: https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf Second man: https://web.archive.org/web/20160324232118/http://jamesmolloy.co.uk/tutorial_html/ Third man: https://github.com/cfenollosa/os-tutorial

Documentation! For each stage!

  1. Kernel constants (root CS and root DS (passed from loader), booting device, kernel size, max RAM) -> define RAM positions everywhere (loader, interruptions).
  2. Memory map -> positioning of kernel / stack + kernel loading size (written in boot sector, defined after compilation).
  3. Shell + audio drivers.
  4. File system + initrd.
  5. Multitasking.
  6. User mode.
  7. Video mode.
  8. Sample apps.
  9. Und so weiter... Extra! Add testing in Travis CI with special QEMU target in console mode.

Definition at line 59 of file kernel.c.

References initialize_heap().