ladybird/Kernel
Andreas Kling 60d25f0f4a Kernel: Introduce threads, and refactor everything in support of it.
The scheduler now operates on threads, rather than on processes.
Each process has a main thread, and can have any number of additional
threads. The process exits when the main thread exits.

This patch doesn't actually spawn any additional threads, it merely
does all the plumbing needed to make it possible. :^)
2019-03-23 22:03:17 +01:00
..
Boot Bootloader: Bump sector count once again. 2019-02-12 12:09:50 +01:00
_start.cpp Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
.bochsrc Kernel: Start adding support for E1000 network adapters. 2019-03-10 15:25:33 +01:00
.gitignore Kernel: Bring up enough networking code that we can respond to ARP requests. 2019-03-11 23:21:38 +01:00
Alarm.h Kernel: Oops, forgot to add Alarm.h earlier. Here it is. 2019-03-20 18:16:15 +01:00
ARP.h Kernel: Collect IPv4 stuff in IPv4.h and ARP stuff in ARP.h. 2019-03-12 12:49:01 +01:00
Assertions.h Add a simple IDEDiskDevice class that implements DiskDevice from VFS. 2018-10-16 14:17:43 +02:00
BlockDevice.cpp Kernel: Add empty BlockDevice class. 2019-02-16 00:52:58 +01:00
BlockDevice.h Kernel: Make BochsVGADevice a BlockDevice and support mmapping it. 2019-02-16 09:57:42 +01:00
BXVGADevice.cpp Kernel: Minor tidying in BXVGADevice. 2019-03-08 02:54:39 +01:00
BXVGADevice.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
CharacterDevice.cpp Kernel: Add empty BlockDevice class. 2019-02-16 00:52:58 +01:00
CharacterDevice.h Kernel: Make BochsVGADevice a BlockDevice and support mmapping it. 2019-02-16 09:57:42 +01:00
CMOS.cpp Make bash-2.05b build with minimal changes. 2018-11-17 00:14:07 +01:00
CMOS.h Make bash-2.05b build with minimal changes. 2018-11-17 00:14:07 +01:00
Console.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
Console.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
Device.cpp Kernel: Port more code to KResult and KResultOr<T>. 2019-03-06 22:14:31 +01:00
Device.h Kernel: Port more code to KResult and KResultOr<T>. 2019-03-06 22:14:31 +01:00
DevPtsFS.cpp AK: Add Retained<T>, like RetainPtr, but never null. 2019-02-25 12:43:52 +01:00
DevPtsFS.h AK: Add Retained<T>, like RetainPtr, but never null. 2019-02-25 12:43:52 +01:00
DiskBackedFileSystem.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
DiskBackedFileSystem.h More moving towards using signed types. 2019-02-25 22:06:55 +01:00
DiskDevice.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
DiskDevice.h Move VFS sources into Kernel/. 2019-01-23 05:14:00 +01:00
DoubleBuffer.cpp Kernel: DoubleBuffer can return early if read/write is called with !size. 2019-03-20 02:12:40 +01:00
DoubleBuffer.h Move Lock from AK to Kernel, since it only works inside the kernel. 2019-03-16 13:18:22 +01:00
E1000NetworkAdapter.cpp Kernel: Bring up enough networking code that we can respond to ARP requests. 2019-03-11 23:21:38 +01:00
E1000NetworkAdapter.h Kernel: Bring up enough networking code that we can respond to ARP requests. 2019-03-11 23:21:38 +01:00
elf.h Make it possible to build the Kernel on a macOS host. 2018-12-02 23:34:50 +01:00
ELFImage.cpp Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
ELFImage.h Kernel: Simplify ELF loading a bit. 2019-02-26 15:52:06 +01:00
ELFLoader.cpp Kernel: Simplify ELF loading a bit. 2019-02-26 15:52:06 +01:00
ELFLoader.h Use the entry point address from the ELF header instead of looking up _start. 2018-12-29 03:28:55 +01:00
EthernetFrameHeader.h Kernel: More work on the ICMP and IPv4 support. 2019-03-12 12:43:30 +01:00
EtherType.h Kernel: Bring up enough networking code that we can respond to ARP requests. 2019-03-11 23:21:38 +01:00
ext2_fs.h Move VFS sources into Kernel/. 2019-01-23 05:14:00 +01:00
ext2_types.h Move VFS sources into Kernel/. 2019-01-23 05:14:00 +01:00
Ext2FileSystem.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
Ext2FileSystem.h AK: Remove Buffer<T> since it was only ever instantiated with T=byte. 2019-03-16 13:12:13 +01:00
FIFO.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
FIFO.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
FileBackedDiskDevice.cpp Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
FileBackedDiskDevice.h Move VFS sources into Kernel/. 2019-01-23 05:14:00 +01:00
FileDescriptor.cpp Kernel+LibC: Don't crash upon traversal of large directories. 2019-03-20 18:31:12 +01:00
FileDescriptor.h Kernel: connect() should fail with EISCONN for already-connected sockets. 2019-03-20 02:38:36 +01:00
FileSystem.cpp Kernel: Oops, fix Vector assertion in FS::Sync. 2019-02-28 22:33:00 +01:00
FileSystem.h Move Lock from AK to Kernel, since it only works inside the kernel. 2019-03-16 13:18:22 +01:00
FullDevice.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
FullDevice.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
i386.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
i386.h Use 64-bit integers inside Stopwatch to enable longer timings. 2019-03-21 13:41:36 +01:00
i8253.cpp Clean up some uninteresting log spam. 2019-02-06 11:32:23 +01:00
i8253.h Implement event loop timers. 2019-02-01 03:50:06 +01:00
ICMP.h Kernel: Collect IPv4 stuff in IPv4.h and ARP stuff in ARP.h. 2019-03-12 12:49:01 +01:00
IDEDiskDevice.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
IDEDiskDevice.h Move Lock from AK to Kernel, since it only works inside the kernel. 2019-03-16 13:18:22 +01:00
init.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
InodeIdentifier.h Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
InodeMetadata.h Kernel: Allow uid 0 to read/write/execute any file. 2019-02-27 17:08:13 +01:00
IO.h Kernel: Much improved BochsVGA (BXVGA) support. 2019-02-06 10:17:26 +01:00
IPv4.h LibGUI: Add GTCPSocket and base class GSocket (inherits from GIODevice.) 2019-03-18 14:09:58 +01:00
IPv4Socket.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
IPv4Socket.h IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
IRQHandler.cpp More coding style changes. 2018-12-03 00:39:25 +01:00
IRQHandler.h More coding style changes. 2018-12-03 00:39:25 +01:00
kassert.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
KeyboardDevice.cpp Kernel: Detect the Delete key. 2019-03-07 16:20:00 +01:00
KeyboardDevice.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
KeyCode.h Detect the "Logo" (Windows/Apple/whatever) key and use it for window resize. 2019-03-03 12:56:48 +01:00
kmalloc.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
kmalloc.h Use modern C++ attributes instead of __attribute__ voodoo. 2019-02-15 12:30:48 +01:00
kprintf.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
kprintf.h Use modern C++ attributes instead of __attribute__ voodoo. 2019-02-15 12:30:48 +01:00
KResult.h Kernel: Port more code to KResult and KResultOr<T>. 2019-03-06 22:14:31 +01:00
kstdio.h Fix Userland build. 2019-01-13 04:31:16 +01:00
KSyms.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
KSyms.h Kernel: Make dump_backtrace() kinda sorta work. 2019-02-24 14:51:48 +01:00
ktime.h Fix some minor build warnings. 2018-10-17 16:48:43 +02:00
Limits.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
linker.ld Import the "gerbert" kernel I worked on earlier this year. 2018-10-16 11:02:00 +02:00
LocalSocket.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
LocalSocket.h Kernel: Accepting sockets don't need to retain the client sockets. 2019-03-20 02:48:02 +01:00
Lock.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
MACAddress.h Kernel: Cache MAC<->IP mappings (from ARP responses) seen on the wire. 2019-03-12 00:56:33 +01:00
makeall.sh Move WindowServer into Servers. 2019-03-20 04:34:14 +01:00
Makefile Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
MasterPTY.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
MasterPTY.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
MemoryManager.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
MemoryManager.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
mkmap.sh Omit duplicate lines from the ksyms map. 2018-12-03 02:23:49 +01:00
MousePacket.h Kernel+WindowServer: Move mouse input signal parsing to kernel driver. 2019-03-05 14:01:03 +01:00
NetworkAdapter.cpp Kernel: Snooze the NetworkTask until there are incoming packets to process. 2019-03-20 17:09:46 +01:00
NetworkAdapter.h Kernel: Snooze the NetworkTask until there are incoming packets to process. 2019-03-20 17:09:46 +01:00
NetworkOrdered.h IPv4: More hacking on bringing up TCP support. 2019-03-13 23:14:30 +01:00
NetworkTask.cpp Kernel: Snooze the NetworkTask until there are incoming packets to process. 2019-03-20 17:09:46 +01:00
NetworkTask.h Kernel: Add a NetworkTask and a received network packet queue. 2019-03-11 12:43:45 +01:00
NullDevice.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
NullDevice.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
PCI.cpp Kernel: More work on bringing up E1000 support. 2019-03-11 11:11:29 +01:00
PCI.h Kernel: More work on bringing up E1000 support. 2019-03-11 11:11:29 +01:00
PIC.cpp Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
PIC.h Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
Process.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
Process.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
ProcFS.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
ProcFS.h Move Lock from AK to Kernel, since it only works inside the kernel. 2019-03-16 13:18:22 +01:00
PS2MouseDevice.cpp Kernel+WindowServer: Move mouse input signal parsing to kernel driver. 2019-03-05 14:01:03 +01:00
PS2MouseDevice.h Kernel+WindowServer: Move mouse input signal parsing to kernel driver. 2019-03-05 14:01:03 +01:00
PTYMultiplexer.cpp Kernel: Port more code to KResult and KResultOr<T>. 2019-03-06 22:14:31 +01:00
PTYMultiplexer.h Move Lock from AK to Kernel, since it only works inside the kernel. 2019-03-16 13:18:22 +01:00
Queue.h Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
RandomDevice.cpp IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
RandomDevice.h IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
RTC.cpp Kernel: Fix wrong calculation of current Unix timestamp. 2019-02-19 02:39:18 +01:00
RTC.h WindowServer: Put a clock in the top right corner of the screen. 2019-02-13 09:27:08 +01:00
run IPv4: Begin fleshing out TCP support. 2019-03-13 17:17:07 +01:00
Scheduler.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
Scheduler.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
SlavePTY.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
SlavePTY.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
Socket.cpp Kernel: Accepting sockets don't need to retain the client sockets. 2019-03-20 02:48:02 +01:00
Socket.h Kernel: Accepting sockets don't need to retain the client sockets. 2019-03-20 02:48:02 +01:00
StdLib.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
StdLib.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
sync.sh SharedGraphics: Implement a simple PNG decoder. 2019-03-21 03:57:42 +01:00
SyntheticFileSystem.cpp Kernel: Make a copy of the dirty inode list before iterating in sync(). 2019-02-28 21:51:59 +01:00
SyntheticFileSystem.h Kernel: Make a copy of the dirty inode list before iterating in sync(). 2019-02-28 21:51:59 +01:00
Syscall.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
Syscall.h Kernel: recvfrom() should treat the address arguments as outparams. 2019-03-13 14:47:21 +01:00
system.h The syncd loop can just be a lambda. 2018-12-24 23:10:48 +01:00
TCP.h TCP: Start working on auto-closing connections when we get FIN. 2019-03-14 15:23:32 +01:00
TCPSocket.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
TCPSocket.h IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
Thread.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
Thread.h Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
TSS.h Use modern C++ attributes instead of __attribute__ voodoo. 2019-02-15 12:30:48 +01:00
TTY.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
TTY.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
types.h More work on IPv4 sockets and /bin/ping. 2019-03-13 03:26:01 +01:00
UDP.h Kernel: Start fleshing out an UDP implementation. 2019-03-13 14:22:27 +01:00
UDPSocket.cpp IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
UDPSocket.h IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. 2019-03-18 04:03:44 +01:00
UnixTypes.h Kernel: Start fleshing out an UDP implementation. 2019-03-13 14:22:27 +01:00
VirtualConsole.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
VirtualConsole.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
VirtualFileSystem.cpp Kernel: Introduce threads, and refactor everything in support of it. 2019-03-23 22:03:17 +01:00
VirtualFileSystem.h Kernel: And some more KResult/KResultOr<T> porting work. 2019-03-06 22:30:13 +01:00
ZeroDevice.cpp Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00
ZeroDevice.h Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t. 2019-02-25 21:21:12 +01:00