Architecture
============

This document seeks to provide a brief overview of Bluejay architecture. This
should be a good starting point for understanding the code.

Bluejay is exclusively a multiboot kernel, it neither provides nor supports
alternative bootloaders.

The bootloader (probably GRUB) will initially run the code in ``boot.s``. This
is where it all begins. This code sets up segmentation and paging and maps the
higher-half of virtual memory (everything above ``0xC0000000``) to the kernel. 
At first it only maps 8 megabytes, more memory can be mapped on request.

After moving to high memory the kernel jumps to C code and enters ``kmain`` in
``main.c``. This is the highest level procedure in the kernel, which sets up
kernel services and drivers one at a time.

This includes VGA, keyboard, and PCI drivers, as well as paging and preemptive
multi tasking.

Multi tasking
-------------

Multi tasking is handled by code in ``task.c``. It is first initialized in
``init_tasks``, which sets up the initial task. Once this is called kernel
threads can be spawned at will.

Every clock tick an interrupt is triggered (see ``clock.c`` for timing) which
causes a task switch to occur. Bluejay uses a simple round-robin scheduler, and
there is no way for tasks to voluntarily give up their processing time (even in
the case of blocking IO operations). ``task.c`` contains the implementation of
the scheduler.

Drivers
-------

So far drivers must be written either using plain ``in`` and ``out``
instructions or on top of the existing PCI driver.

PCI Device Drivers
~~~~~~~~~~~~~~~~~~

PCI device drivers must register a ``struct pci_device_driver`` in order to
interface with a certain device (or class of devices). See
``include/kernel/dri/pci/pci.h`` for details.

A PCI device driver must pass an instance of this structure to
``pci_register_device_driver`` (in ``include/kernel/dri/pci/pci.h``. If
``supports`` returns true, (for example, if the class and subclass of the
``struct pci_device`` are supported by teh driver) ``init`` will be called. At
this point the driver may do whatever it wishes with the PCI device, although
all blocking operations should be done in another thread (using ``spawn_thread``
in ``include/kernel/task.h`` for example).
