Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-03 | Kernel: Remove unused Queue.h. | Andreas Kling | |
2019-04-03 | Kernel: Remove Limits.h | Andreas Kling | |
2019-04-03 | Kernel: Remove ancient nprocess and nblocked globals. | Andreas Kling | |
These were not in sync with reality, and not used anywhere anyway. | |||
2019-04-03 | Kernel: Remove unneeded kassert.h. | Andreas Kling | |
2019-04-03 | Kernel: Remove now-unused _start.cpp | Andreas Kling | |
2019-04-03 | Kernel: Move devices into Kernel/Devices/. | Andreas Kling | |
2019-04-03 | Kernel: Move ELF-related files into Kernel/ELF/. | Andreas Kling | |
2019-04-03 | Kernel: Move TTY-related files into Kernel/TTY/. | Andreas Kling | |
2019-04-03 | Kernel: Move FS-related files into Kernel/FileSystem/ | Andreas Kling | |
2019-04-03 | Kernel: Make LoopbackAdapter eternally allocated. | Andreas Kling | |
2019-04-03 | AK: Remove useless ktime.h | Andreas Kling | |
2019-04-03 | AK: Clean up some of the confusion that is AK/kmalloc.{cpp,h} | Andreas Kling | |
2019-04-03 | Kernel: Get rid of the GPL elf.h and import exec_elf.h from OpenBSD. | Andreas Kling | |
2019-04-02 | Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace. | Andreas Kling | |
2019-04-02 | Kernel: Move networking related files into Kernel/Net/. | Andreas Kling | |
2019-04-02 | Kernel: 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-01 | Kernel: Spawn the Launcher by default. | Andreas Kling | |
2019-04-01 | Kernel: 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-01 | Kernel: 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-30 | Kernel: Add a bit of debug output in do_exec() to learn about thread counts. | Andreas Kling | |
2019-03-30 | Stopwatch: Print the result in decimal instead of hexadecimal. | Andreas Kling | |
2019-03-27 | Kernel: 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-27 | Kernel: Save/restore the SSE context on context switch. | Andreas Kling | |
2019-03-27 | Kernel: Put a bunch of debug spam behind #ifdefs. | Andreas Kling | |
2019-03-27 | Kernel: Don't disable interrupts during Process destruction. | Andreas Kling | |
2019-03-27 | Kernel: Don't disable interrupts during Thread destruction. | Andreas Kling | |
2019-03-27 | Ext2FS: Avoid a lot of redundant writes to inode block arrays. | Andreas Kling | |
2019-03-27 | Kernel: 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-27 | Give 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-27 | LibC: 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-27 | Kernel: 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-27 | Kernel: Print an error when trying to load an incompatible ELF image. | Andreas Kling | |
2019-03-25 | LibGUI+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-25 | Kernel: 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-24 | Kernel: 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-24 | Kernel: Make block() and yield() automatically call Scheduler::yield(). | Andreas Kling | |
This exposed some places we were accidentally doing a double yield(). | |||
2019-03-24 | Kernel: Fix broken destruction order for Process/Thread. | Andreas Kling | |
2019-03-23 | Kernel: Add a Thread::all_threads() helper. | Andreas Kling | |
2019-03-23 | Kernel+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-23 | Kernel: Set the colonel task to low priority. | Andreas Kling | |
This gives it a smaller time slice, improving responsiveness. | |||
2019-03-23 | Kernel: 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-23 | Kernel: 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-21 | Use 64-bit integers inside Stopwatch to enable longer timings. | Andreas Kling | |
2019-03-21 | SharedGraphics: 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-20 | Kernel+LibC: Don't crash upon traversal of large directories. | Andreas Kling | |
2019-03-20 | Kernel: Oops, forgot to add Alarm.h earlier. Here it is. | Andreas Kling | |
2019-03-20 | Kernel: 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-20 | Kernel: 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-20 | Move WindowServer into Servers. | Andreas Kling | |
2019-03-20 | Rename DNSLookupServer => LookupServer. | Andreas Kling | |