summaryrefslogtreecommitdiff
path: root/Kernel/Thread.h
AgeCommit message (Collapse)Author
2019-05-28Add clang-format fileRobin Burchell
Also run it across the whole tree to get everything using the One True Style. We don't yet run this in an automated fashion as it's a little slow, but there is a snippet to do so in makeall.sh.
2019-05-18Kernel: Add a Thread::set_thread_list() helper to keep logic in one place.Andreas Kling
2019-05-18Kernel: Refactor thread scheduling a bit, breaking it into multiple lists.Andreas Kling
There are now two thread lists, one for runnable threads and one for non- runnable threads. Thread::set_state() is responsible for moving threads between the lists. Each thread also has a back-pointer to the list it's currently in.
2019-05-17Kernel: Make Thread::kernel_stack_base() work for kernel processes.Andreas Kling
2019-05-14Kernel: Signal stacks are lazily allocated so don't crash in getter.Andreas Kling
2019-05-14Kernel: Allocate kernel signal stacks using the region allocator as well.Andreas Kling
2019-05-14Kernel: Allocate kernel stacks for threads using the region allocator.Andreas Kling
This patch moves away from using kmalloc memory for thread kernel stacks. This reduces pressure on kmalloc (16 KB per thread adds up fast) and prevents kernel stack overflow from scribbling all over random unrelated kernel memory.
2019-05-03Kernel: Prepare Socket for becoming a File.Andreas Kling
Make the Socket functions take a FileDescriptor& rather than a socket role throughout the code. Also change threads to block on a FileDescriptor, rather than either an fd index or a Socket.
2019-04-29Kernel: Make FIFO inherit from File.Andreas Kling
2019-04-20Kernel: Remove "restorer" field from SignalActionData.Andreas Kling
I was originally implementing signals by looking at some man page about sigaction() to see how it works. It seems like the restorer thingy is system-specific and not required by POSIX, so let's get rid of it.
2019-04-20Kernel: Remove some more unnecessary Thread members.Andreas Kling
2019-04-20Kernel: Shrink Thread by making kernel resume TSS heap-allocated.Andreas Kling
2019-04-17Kernel: Scheduler donations need to verify that the beneficiary is valid.Andreas Kling
Add a Thread::is_thread(void*) helper that we can use to check that the incoming donation beneficiary is a valid thread. The O(n) here is a bit sad and we should eventually rethink the process/thread table data structures.
2019-04-14Kernel: Merge TSS.h into i386.h.Andreas Kling
2019-04-14Kernel: Remove system.h and make the uptime global a qword.Andreas Kling
2019-04-06Kernel: Get rid of Kernel/types.h, separate LinearAddress/PhysicalAddress.Andreas Kling
2019-03-27Kernel: Save/restore the SSE context on context switch.Andreas Kling
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-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: 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. :^)