summaryrefslogtreecommitdiff
path: root/Kernel/Process.h
AgeCommit message (Collapse)Author
2019-04-20Kernel: Make the colonel run at "Idle" priority (the lowest possible.)Andreas Kling
This means it won't hog the CPU for more than a single timeslice. :^)
2019-04-17Kernel+ProcessManager: Show per-process syscall counts.Andreas Kling
Added a simple syscall counter to the /proc/all contents. :^)
2019-04-09Kernel: More work towards POSIX SHM, also add ftruncate().Andreas Kling
2019-04-08Kernel+LibC: Add stubs for POSIX shared memory API.Andreas Kling
Specifically shm_open() and shm_unlink(). This patch just adds stubs.
2019-04-07Kernel+Userland: Add the rename() syscall along with a basic /bin/mv.Andreas Kling
2019-04-06Kernel: Use alloc_fd() more instead of walking fd list manually.Andreas Kling
2019-04-06Kernel: Get rid of Kernel/types.h, separate LinearAddress/PhysicalAddress.Andreas Kling
2019-04-03Kernel: Bump per-process file descriptor limit to 128.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-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-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-24Kernel: Fix broken destruction order for Process/Thread.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: 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-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-16Move Lock from AK to Kernel, since it only works inside the kernel.Andreas Kling
2019-03-14IPv4: More work on the TCP implementation.Andreas Kling
I can now establish a connection to my little test server on the host.
2019-03-13Add support for socket send/receive timeouts.Andreas Kling
Only the receive timeout is hooked up yet. You can change the timeout by calling setsockopt(..., SOL_SOCKET, SO_RCVTIMEO, ...). Use this mechanism to make /bin/ping report timeouts.
2019-03-12Kernel+LibC+Userland: Yet more networking bringup hacking.Andreas Kling
All ICMP sockets now receive all ICMP packets. All this buffering is gonna need some limits and such.
2019-03-12Kernel+LibC+Userland: Start working on an IPv4 socket backend.Andreas Kling
The first userland networking program will be "ping" :^)
2019-03-08Add a C++ helper class for working with shared buffers.Andreas Kling
This is a bit more comfortable than passing the shared buffer ID manually everywhere and keeping track of size etc.
2019-03-06Kernel: And some more KResult/KResultOr<T> porting work.Andreas Kling
2019-03-06Kernel: Port more code to KResult and KResultOr<T>.Andreas Kling
2019-03-05Kernel: Remove "requested wakeups" feature.Andreas Kling
I only needed this to support the WindowServer living inside the kernel. Now that it's been migrated to userspace, this can go. :^)
2019-03-05Kernel: More signal handling improvements.Andreas Kling
Finally fixed the weird flaky crashing when resizing Terminal windows. It was because we were dispatching a signal to "current" from the scheduler. Yet another thing I dislike about even having a "current" process while we're in the scheduler. Not sure yet how to fix this. Let the signal handler's kernel stack be a kmalloc() allocation for now. Once we can do allocation of consecutive physical pages in the supervisor memory region, we can use that for all types of kernel stacks.
2019-03-05Kernel: Block a signal from being dispatched again until handler returns.Andreas Kling
We don't handle nesting yet, but this is a step in the right direction.
2019-03-02Kernel+Userland: Add symlink() syscall and add "-s" flag to /bin/ln.Andreas Kling
It's now possible to create symbolic links! :^) This exposed an issue in Ext2FS where we'd write uninitialized data past the end of an inode's content. Fix this by zeroing out the tail end of the last block in a file.
2019-03-01Kernel+Userland: Implement fchmod() syscall and use it to improve /bin/cp.Andreas Kling
/bin/cp will now copy the permission bits from source to destination. :^)
2019-02-28Kernel: Implement basic SIGSTOP and SIGCONT support.Andreas Kling
2019-02-27Add chown() syscall and a simple /bin/chown program.Andreas Kling
2019-02-27More compat work towards porting vim.Andreas Kling
It now builds and runs in the small-featureset configuration. :^)
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t.Andreas Kling
Dealing with the unsigned overflow propagation here just seems unreasonably error prone. Let's limit ourselves to 2GB buffer sizes instead.
2019-02-25Convert more RetainPtr use to Retained.Andreas Kling
2019-02-22Kernel: Respect the process umask in open() and mkdir().Andreas Kling
2019-02-22Kernel: Pass process arguments directly on the stack.Andreas Kling
Get rid of the convoluted get_arguments and get_environment syscalls. This patch also adds a simple /bin/env that just prints its environment.
2019-02-22Kernel: Don't allocate and discard an extra stack for every process.Andreas Kling
2019-02-21Kernel+Userland: Implement setuid() and setgid() and add /bin/suAndreas Kling
Also show setuid and setgid bits in "ls -l" output. :^)
2019-02-21Kernel: Process::cwd_inode() should return a reference.Andreas Kling
There's always a current working directory inode.
2019-02-21Kernel: Start adding various file system permission checks.Andreas Kling
Fail with EACCES in various situations. Fix userland bugs that were exposed.
2019-02-21Kernel: Add link() syscall to create hard links.Andreas Kling
This accidentally grew into a little bit of VFS cleanup as well. Also add a simple /bin/ln implementation to exercise it.
2019-02-17Kernel: Fix String leaks in exec().Andreas Kling
When the kernel performs a successful exec(), whatever was on the kernel stack for that process before goes away. For this reason, we need to make sure we don't have any stack objects holding onto kmalloc memory.
2019-02-17Kernel: Remove Process::gui_client_id().Andreas Kling
2019-02-17Kernel: Remove tracking of bitmap memory.Andreas Kling
There are no more kernel bitmaps. It's much better this way.
2019-02-17Move WindowServer to userspace.Andreas Kling
This is a monster patch that required changing a whole bunch of things. There are performance and stability issues all over the place, but it works. Pretty cool, I have to admit :^)
2019-02-16Kernel: Add a simple shared memory API for two processes only.Andreas Kling
And use this to implement shared bitmaps between WindowServer and clients.
2019-02-16Kernel: Remove knowledge about BochsVGADevice from Process.Andreas Kling
2019-02-16Kernel: Make BochsVGADevice a BlockDevice and support mmapping it.Andreas Kling
Currently you can only mmap the entire framebuffer. Using this when starting up the WindowServer gets us yet another step closer towards it moving into userspace. :^)
2019-02-15Use modern C++ attributes instead of __attribute__ voodoo.Andreas Kling
This is quite nice, although I wish [[gnu::always_inline]] implied inline. Also "gnu::" is kind of a wart, but whatcha gonna do.