summaryrefslogtreecommitdiff
path: root/Kernel
AgeCommit message (Collapse)Author
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
2019-03-20Kernel: 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-20Kernel: 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-20Kernel: 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-20Kernel: 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-20Kernel: DoubleBuffer can return early if read/write is called with !size.Andreas Kling
2019-03-20LibC: 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-19DNSLookupServer: 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-19LibGUI: 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-18LibGUI: 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-18IPv4: Add simple pseudorandom ephemeral port allocators for TCP and UDP.Andreas Kling
2019-03-17AK: 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-16Kernel: 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-16Move Lock from AK to Kernel, since it only works inside the kernel.Andreas Kling
2019-03-16AK: 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-15IRCClient: 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-14TCP: Correct checksum for packets with odd number of bytes.Andreas Kling
2019-03-14TCP: Collect the payload if present in a packet with FIN set.Andreas Kling
2019-03-14TCP: Start working on auto-closing connections when we get FIN.Andreas Kling
2019-03-14Kernel: Handle unaligned ELF segments gracefully in the executable loader.Andreas Kling
2019-03-14Kernel: Remove leftover debug spam when returning from mkdir() syscall.Andreas Kling
2019-03-14IPv4: Factor out UDP parts of IPv4Socket into a UDPSocket class.Andreas Kling