Ghost Kernel

PCI device scanning, introducing 'kernquery' 2016/03/12, 03:55:25

Working on PCI, needed for using the ATA controller. One of the next bigger goals is hard drive support. PCI busses are now being scanned and the kernel stores information for all existing devices for later use.

I added interface named kernquery to the kernel. There are a lot of places in the system where various information from the kernel is needed. Creating a syscall for each one felt too bloaty, so I decided to add a kind of sub-interface that can be extended more easy and isn't that strict. It will be used for loading process information, process lists, get PCI device information and more.

Also implemented a small utility program kern which uses the new kernquery interface to print information. Here's a fancy listing of the PCI devices in the system:

(The little smiley on the bottom right is a bug lol)

2 comments

Rendering improvements and a calculator 2016/01/23, 20:15:43

I wrote a small calculator to test the UI interface of the window server. The application is all implemented in client side, using the API that the server provides.

It only does integer calculation at the moment though, because I was too lazy to implement strtod. :D Here's a little video of it in action. See the source code on GitHub to get an idea of how the UI API is used here.

The latest changes overall are a lot of improvements in the client-windowserver protocol, a login screen and some cleaning up in the terminal (occasional deadlocks fixed). Currently working on making the ramdisk filesystem writable to have a temporary storage, fixing the new scheduler implementation on multi-core systems (has some bugs), and then implementing a desktop application with nice little icons.

7 comments

Merry christmas! And some SSL for ghostkernel.org 2015/12/16, 19:52:42

Merry christmas everyone! I'm not too busy developing during christmas time. Wish all of you nice holidays and a good slide into the new year. :-)

I added a nice little SSL certificate to the site, thanks to letsencrypt.org. Great project!

At the moment I'm still (re)working the window server. There are some issues with memory allocation in multithreaded applications of which I need to find the cause (this kind of sucked up my development time for quite some time now). Will post more updates when I have details.

0 comments

0.5.0 - New scheduler & window server 2015/10/25, 19:25:09

Wohoo! The update is done. Took quite some time: it introduces changes in the kernel, a new scheduler, and also a rewrite of the window server. These had to be revised a lot - yet there are still some bugs (which are already being hounded). :-)

The new scheduler implementation is based on wait and run queues. The internal system call handler interface was refurbished and the handling cleaned up. Changing the scheduler required modifying some of the handlers, as they were implemented based on the assumption that the "current thread" given by the tasking facilities is consistent; with the new queue implementation, a task that is told to wait is immediately moved to the wait queue, thus being no more the current thread. A system call handler now gets the last executed thread passed as a parameter and can use it immediately (without asking the schedulers for the current thread). This will also help improve performance of some interprocess functions and made it possible to improve the idling of the scheduler.

The window server was completely rewritten and cleansed from the obsolete interface, and a new (variable-sized-messages) based interface was introduced. This simplifies communication a lot. The old windowmanager application is now obsolete.

Next things to do will be fixing a bug that freezes the window server for some reason and then extending the UI interface to make it possible to implement the first applications that actually have a working user interface.

  • major kernel update
  • new, cleaned up window server implementation
  • example filesystem driver updated
  • PS/2 driver toggleable for IRQ or polling mode
  • interface for process configuration (tasks now know their executable source path)
  • new utils "lines" and "read"
  • tests cleaned up
  • read-directory fixed
  • 0 comments