summaryrefslogtreecommitdiff
path: root/Kernel
AgeCommit message (Collapse)Author
2019-04-03Kernel: Remove unused Queue.h.Andreas Kling
2019-04-03Kernel: Remove Limits.hAndreas Kling
2019-04-03Kernel: Remove ancient nprocess and nblocked globals.Andreas Kling
These were not in sync with reality, and not used anywhere anyway.
2019-04-03Kernel: Remove unneeded kassert.h.Andreas Kling
2019-04-03Kernel: Remove now-unused _start.cppAndreas Kling
2019-04-03Kernel: Move devices into Kernel/Devices/.Andreas Kling
2019-04-03Kernel: Move ELF-related files into Kernel/ELF/.Andreas Kling
2019-04-03Kernel: Move TTY-related files into Kernel/TTY/.Andreas Kling
2019-04-03Kernel: Move FS-related files into Kernel/FileSystem/Andreas Kling
2019-04-03Kernel: Make LoopbackAdapter eternally allocated.Andreas Kling
2019-04-03AK: Remove useless ktime.hAndreas Kling
2019-04-03AK: Clean up some of the confusion that is AK/kmalloc.{cpp,h}Andreas Kling
2019-04-03Kernel: Get rid of the GPL elf.h and import exec_elf.h from OpenBSD.Andreas Kling
2019-04-02Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace.Andreas Kling
2019-04-02Kernel: Move networking related files into Kernel/Net/.Andreas Kling
2019-04-02Kernel: Add a LoopbackAdapter for talking to yourself via 127.0.0.1.Andreas Kling
Choosing adapter for transmit is done by adapter_for_route_to(IPv4Address). This is just hard-coded logic right now but can be expanded to support a proper routing table. Also start moving kernel networking code into Kernel/Net/.
2019-04-01Kernel: Spawn the Launcher by default.Andreas Kling
2019-04-01Kernel: Use a multiboot header instead of a convoluted two-part bootloader.Andreas Kling
The old bootloader was hilariously complicated, requiring a floppy disk with the kernel on it, and a hard drive with the file system. This patch removes the floppy disk from the equation and replaces it with a multiboot header. This means the kernel can now be booted with qemu-system-i386 -kernel kernel
2019-04-01Kernel: Add a blunt big process lock.Andreas Kling
We can't have multiple threads in the same process running in the kernel at the same time, so let's have a per-process lock that threads have to acquire on syscall entry/exit (and yield while blocked.)
2019-03-30Kernel: Add a bit of debug output in do_exec() to learn about thread counts.Andreas Kling
2019-03-30Stopwatch: Print the result in decimal instead of hexadecimal.Andreas Kling
2019-03-27Kernel: Add Inode::truncate(size).Andreas Kling
- Use this to implement the O_TRUNC open flag. - Fix creat() to pass O_CREAT | O_TRUNC | O_WRONLY. - Make sure we truncate wherever appropriate.
2019-03-27Kernel: Save/restore the SSE context on context switch.Andreas Kling
2019-03-27Kernel: Put a bunch of debug spam behind #ifdefs.Andreas Kling
2019-03-27Kernel: Don't disable interrupts during Process destruction.Andreas Kling
2019-03-27Kernel: Don't disable interrupts during Thread destruction.Andreas Kling
2019-03-27Ext2FS: Avoid a lot of redundant writes to inode block arrays.Andreas Kling
2019-03-27Kernel: Initialize the CPU to allow SSE on startup.Andreas Kling
I still need to add support for SSE to the context switching code, but now at least one process can use it.
2019-03-27Give the emulator testing environments 128 MB of RAM.Andreas Kling
I'm working on porting GCC and it needs a fair bit of memory to run.
2019-03-27LibC: Run constructors on process startup.Andreas Kling
Cooperate with the compiler to generate and execute the _init_array list of constructor functions on userspace program statup. This took two days to get working, my goodness. :^)
2019-03-27Kernel: Load ELF executable pages lazily when possible.Andreas Kling
This currently only works for "normal" processes created by fork(). It does not work for create_user_process() processes spawned by the kernel, as those are a bit special during construction.
2019-03-27Kernel: Print an error when trying to load an incompatible ELF image.Andreas Kling
2019-03-25LibGUI+Kernel: Add a GLock class (userspace mutex.)Andreas Kling
It's basically a userspace port of the kernel's Lock class. Added gettid() and donate() syscalls to support the timeslice donation feature we already enjoyed in the kernel.
2019-03-25Kernel: Do timekeeping manually instead of asking the RTC all the time.Andreas Kling
This introduces a tiny amount of timer drift which I will have to fix somehow eventually, but it's a huge improvement in timing consistency as we no longer suddenly jump from e.g 10:45:49.123 to 10:45:50.000.
2019-03-24Kernel: Don't hang the system on unrecoverable page fault.Andreas Kling
I needed this while debugging threads and now they basically work pretty well so we can remove this. :^)
2019-03-24Kernel: Make block() and yield() automatically call Scheduler::yield().Andreas Kling
This exposed some places we were accidentally doing a double yield().
2019-03-24Kernel: Fix broken destruction order for Process/Thread.Andreas Kling
2019-03-23Kernel: Add a Thread::all_threads() helper.Andreas Kling
2019-03-23Kernel+LibC: Add a simple create_thread() syscall.Andreas Kling
It takes two parameters, a function pointer for the entry function, and a void* argument to be passed to that function on the new thread.
2019-03-23Kernel: Set the colonel task to low priority.Andreas Kling
This gives it a smaller time slice, improving responsiveness.
2019-03-23Kernel: Don't add the colonel process' main thread to g_threads.Andreas Kling
This was causing the colonel to get scheduled when he wasn't needed.
2019-03-23Kernel: Introduce threads, and refactor everything in support of it.Andreas Kling
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-21Use 64-bit integers inside Stopwatch to enable longer timings.Andreas Kling
2019-03-21SharedGraphics: Implement a simple PNG decoder.Andreas Kling
This is extremely unoptimized, but it does successfully load "folder32.png" so it must be at least somewhat correct. :^)
2019-03-20Kernel+LibC: Don't crash upon traversal of large directories.Andreas Kling
2019-03-20Kernel: Oops, forgot to add Alarm.h earlier. Here it is.Andreas Kling
2019-03-20Kernel: Remove ioctl for getting a socket peer's PID.Andreas Kling
Now that everything is nice and mature, the WindowServer can just use the client PID it receives in the Greeting message, and we can get rid of this hacky ioctl. :^)
2019-03-20Kernel: Snooze the NetworkTask until there are incoming packets to process.Andreas Kling
This is accomplished using a new Alarm class and a BlockedSnoozing state. Basically, you call Process::snooze_until(some_alarm) and then the scheduler won't wake up the process until some_alarm.is_ringing() returns true.
2019-03-20Move WindowServer into Servers.Andreas Kling
2019-03-20Rename DNSLookupServer => LookupServer.Andreas Kling