ladybird/Kernel
Andreas Kling 8accc92c3c Implement fork()!
This is quite cool! The syscall entry point plumbs the register dump
down to sys$fork(), which uses it to set up the child process's TSS
in order to resume execution right after the int 0x80 fork() call. :^)

This works pretty well, although there is some problem with the kernel
alias mappings used to clone the parent process's regions. If I disable
the MM::release_page_directory() code, there's no problem. Probably there's
a premature freeing of a physical page somehow.
2018-11-02 20:41:58 +01:00
..
Boot Enable A20 line at boot. 2018-10-27 14:09:33 +02:00
_fs_contents.stock Stop committing changes to _fs_contents and generate it in the sync script. 2018-10-28 01:21:15 +02:00
_hello.cpp ELFLoader works inside the kernel! 2018-10-18 15:46:08 +02:00
_start.cpp Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
_test.cpp Tweak _test.o to use the putch() syscall. 2018-10-22 11:53:59 +02:00
.bochsrc Add gettimeofday() syscall and LibC wrappers gettimeofday() and time(). 2018-10-25 17:36:18 +02:00
.gitignore Stop committing changes to _fs_contents and generate it in the sync script. 2018-10-28 01:21:15 +02:00
Assertions.h Add a simple IDEDiskDevice class that implements DiskDevice from VFS. 2018-10-16 14:17:43 +02:00
CMOS.cpp Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
CMOS.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
Console.cpp Fix bug where Console::the() was initialized too late. 2018-10-30 23:02:06 +01:00
Console.h Add a kmalloc_eternal() for things that will never be destroyed. 2018-10-31 23:19:15 +01:00
Disk.cpp Process now maps regions immediately when they are allocated. 2018-11-01 13:15:46 +01:00
Disk.h Remove old DatBuffer class. 2018-10-25 10:50:30 +02:00
errno.h Add basic symlink support. 2018-10-28 14:11:51 +01:00
ext2fs.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
i386.cpp Add a simple /proc/cpuinfo that includes some info from CPUID. 2018-11-02 10:14:21 +01:00
i386.h Add a simple /proc/cpuinfo that includes some info from CPUID. 2018-11-02 10:14:21 +01:00
i8253.cpp Process now maps regions immediately when they are allocated. 2018-11-01 13:15:46 +01:00
i8253.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
IDEDiskDevice.cpp Snazz up the kprintf() output a bit by giving it its own color. 2018-10-31 20:14:23 +01:00
IDEDiskDevice.h Add a simple IDEDiskDevice class that implements DiskDevice from VFS. 2018-10-16 14:17:43 +02:00
init.cpp Free physical pages allocated for a process's page directory on exit. 2018-11-01 23:08:10 +01:00
InlineLinkedList.h Generate a basic /proc/summary file with some info about all tasks. 2018-10-23 12:44:46 +02:00
IO.h Make IO helpers inline and use immediate-encoded ports when possible. 2018-11-02 10:14:26 +01:00
IRQHandler.cpp Add IRQHandler class that can be subclasses to handle an IRQ. 2018-10-22 12:58:29 +02:00
IRQHandler.h Add IRQHandler class that can be subclasses to handle an IRQ. 2018-10-22 12:58:29 +02:00
kassert.h Fix broken SpinLock. 2018-10-29 22:04:26 +01:00
Keyboard.cpp Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00
Keyboard.h Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00
kmalloc.cpp Implement fork()! 2018-11-02 20:41:58 +01:00
kmalloc.h Give each task its own page directory. 2018-11-01 09:01:51 +01:00
kprintf.cpp Fix broken SpinLock. 2018-10-29 22:04:26 +01:00
kprintf.h Fix broken SpinLock. 2018-10-29 22:04:26 +01:00
kstdio.h Move kprintf to its own file. It has nothing to do with VGA anymore. 2018-10-22 13:20:35 +02:00
ktime.h Fix some minor build warnings. 2018-10-17 16:48:43 +02:00
linker.ld Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
Makefile Make IO helpers inline and use immediate-encoded ports when possible. 2018-11-02 10:14:26 +01:00
MemoryManager.cpp Implement fork()! 2018-11-02 20:41:58 +01:00
MemoryManager.h Implement fork()! 2018-11-02 20:41:58 +01:00
mkmap.sh Add a very hackish /proc/PID/stack. 2018-10-26 22:33:15 +02:00
PIC.cpp A lot of hacking: 2018-10-22 11:15:16 +02:00
PIC.h Add a PIC::getISR() helper. 2018-10-17 16:54:49 +02:00
Process.cpp Implement fork()! 2018-11-02 20:41:58 +01:00
Process.h Implement fork()! 2018-11-02 20:41:58 +01:00
ProcFileSystem.cpp Add tcsetpgrp()+tcgetpgrp(). 2018-11-02 13:14:25 +01:00
ProcFileSystem.h Process now maps regions immediately when they are allocated. 2018-11-01 13:15:46 +01:00
Queue.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
RefCounted.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
RefPtr.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
RTC.cpp Add assertion that RTC year is >= 2018. 2018-10-31 00:27:28 +01:00
RTC.h Add gettimeofday() syscall and LibC wrappers gettimeofday() and time(). 2018-10-25 17:36:18 +02:00
run Allow running in QEMU with "./run q" 2018-10-17 16:58:35 +02:00
StdLib.cpp Fix busted display of tty names in /proc/summary. 2018-10-31 22:43:49 +01:00
StdLib.h Fix busted display of tty names in /proc/summary. 2018-10-31 22:43:49 +01:00
sync-local.sh Enough compatibility work to make figlet build and run! 2018-10-31 17:52:59 +01:00
sync.sh Implement fork()! 2018-11-02 20:41:58 +01:00
Syscall.cpp Implement fork()! 2018-11-02 20:41:58 +01:00
Syscall.h Implement fork()! 2018-11-02 20:41:58 +01:00
system.h Add a kmalloc_eternal() for things that will never be destroyed. 2018-10-31 23:19:15 +01:00
TSS.h Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
TTY.cpp Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00
TTY.h Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00
types.h Free physical pages allocated for a process's page directory on exit. 2018-11-01 23:08:10 +01:00
VGA.cpp Process now maps regions immediately when they are allocated. 2018-11-01 13:15:46 +01:00
VGA.h Virtual consoles kinda work! 2018-10-30 15:33:37 +01:00
VirtualConsole.cpp Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00
VirtualConsole.h Basic ^C interrupt implementation. 2018-11-02 14:06:48 +01:00