Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | |
2019-03-20 | Kernel: Don't panic if a call redirected to Device::open() has an error. | Andreas Kling | |
Just pass the error to the user. I hit this when opening so many Terminal windows that PTYMultiplexer::open() ran out of master/slave pairs. | |||
2019-03-20 | Kernel: Accepting sockets don't need to retain the client sockets. | Andreas Kling | |
This is all taken care of by the respective FileDescriptors. Before this patch, we were leaking every single socket, not great! | |||
2019-03-20 | Kernel: connect() should fail with EISCONN for already-connected sockets. | Andreas Kling | |
Also make sure to reset the socket role if Socket::connect() fails. | |||
2019-03-20 | Kernel: Fix race between accept() and connect(). | Andreas Kling | |
We had a bug where an accepted socket would appear to be EOF/disconnected on the accepting side until the connecting side had called attach_fd(). Fix this by adding a new SocketRole::Connecting state. | |||
2019-03-20 | Kernel: DoubleBuffer can return early if read/write is called with !size. | Andreas Kling | |
2019-03-20 | LibC: Implement gethostbyname() by talking to the DNSLookupServer. | Andreas Kling | |
We now talk to the lookup server over a local socket and it does the lookup on our behalf. Including some retry logic, which is nice, because it seems like DNS requests disappear in the ether pretty damn often where I am. | |||
2019-03-19 | DNSLookupServer: Start working on a userspace DNS resolver. | Andreas Kling | |
This doesn't have any server functionality just yet, but it does post decent-looking DNS queries and parse the responses. | |||
2019-03-19 | LibGUI: Implement nested event loops to support dialog boxes. | Andreas Kling | |
This patch adds a simple GMessageBox that can run in a nested event loop. Here's how you use it: GMessageBox box("Message text here", "Message window title"); int result = box.exec(); The next step is to make the WindowServer respect the modality flag of these windows and prevent interaction with other windows in the same process until the modal window has been closed. | |||
2019-03-18 | LibGUI: Add GTCPSocket and base class GSocket (inherits from GIODevice.) | Andreas Kling | |
And use these to do the line-by-line reading automagically instead of having that logic in IRCClient. This will definitely come in handy. | |||
2019-03-18 | IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP. | Andreas Kling | |
2019-03-17 | AK: Make ByteBuffer's copy() and wrap() take void*. | Andreas Kling | |
This way we don't have to cast whatever we're passing to copy()/wrap(). | |||
2019-03-16 | Kernel: Remove the one client of Vector-with-custom-allocator. | Andreas Kling | |
This was a silly experiment. If I want to save space here, I can do it in one of many other ways. | |||
2019-03-16 | Move Lock from AK to Kernel, since it only works inside the kernel. | Andreas Kling | |
2019-03-16 | AK: Remove Buffer<T> since it was only ever instantiated with T=byte. | Andreas Kling | |
Instead make a specialized AK::ByteBufferImpl class for the backing store of AK::ByteBuffer. This reduces template bloat. | |||
2019-03-15 | IRCClient: Start working on a simple graphical IRC client. | Andreas Kling | |
This will be a nice way to exercise both LibGUI and the TCP/IP support. :^) | |||
2019-03-14 | TCP: Correct checksum for packets with odd number of bytes. | Andreas Kling | |
2019-03-14 | TCP: Collect the payload if present in a packet with FIN set. | Andreas Kling | |
2019-03-14 | TCP: Start working on auto-closing connections when we get FIN. | Andreas Kling | |
2019-03-14 | Kernel: Handle unaligned ELF segments gracefully in the executable loader. | Andreas Kling | |
2019-03-14 | Kernel: Remove leftover debug spam when returning from mkdir() syscall. | Andreas Kling | |
2019-03-14 | IPv4: Factor out UDP parts of IPv4Socket into a UDPSocket class. | Andreas Kling | |