Commit Graph

1331 Commits

Author SHA1 Message Date
Bananymous 7ce284f38c BAN: Rewrite heap sort
Heap sort is now more close to gnulibc++ version. This is just more
simplified version.
2023-12-08 22:45:55 +02:00
Bananymous 1e929ffc9d BAN: Restructure sort functions and namespaces 2023-12-08 18:58:47 +02:00
Bananymous 33b3c8bed0 AOC2023: Implement day8
Second part was kinda weird. You are supposted to assume something
of the input, which necessarily is not true.
2023-12-08 17:13:20 +02:00
Bananymous 6ebe698218 AOC2023: Use the default sort algorithm 2023-12-08 00:10:59 +02:00
Bananymous d11392c980 BAN: Add default sort. This is wrapper around sort_intro 2023-12-08 00:10:09 +02:00
Bananymous a990143628 BAN: Implement intro sort 2023-12-07 23:56:11 +02:00
Bananymous 66630bd5eb BAN: Add less than operator for iterator 2023-12-07 23:55:41 +02:00
Bananymous 8971c0eb85 BAN: Move placement new to New.h
I have no idea why they were defined in Move.h
2023-12-07 23:52:57 +02:00
Bananymous a8c3e6a9e2 BAN: Remove empty else. Builds with -Wall -Wextra 2023-12-07 23:50:35 +02:00
Bananymous 1fcf56f6c6 BAN: Implement ilog2 for unsigned integers 2023-12-07 23:50:04 +02:00
Bananymous 6ee01a1237 BAN: Implement heap sort 2023-12-07 23:18:49 +02:00
Bananymous bbed9a30c6 BAN: Cleanup sorting code 2023-12-07 23:18:49 +02:00
Bananymous 8a0ceb56dc BAN: Implement more methods for iterators 2023-12-07 23:18:49 +02:00
Bananymous ccf1786485 BAN: Implement distance() for iterators 2023-12-07 23:18:49 +02:00
Bananymous 4662068071 BAN: Implement quick sort 2023-12-07 19:28:31 +02:00
Bananymous 9f5bdde29d BAN: Implement next() and prev() for iterators and use them in sorts 2023-12-07 19:28:05 +02:00
Bananymous 1aef0f5f0e sudo: fix some typos 2023-12-07 14:05:17 +02:00
Bananymous 918657b658 Shell: do path resolution only if command doesn't contain '/' 2023-12-07 13:34:46 +02:00
Bananymous 9781cc5d16 Kernel: Remove obsolete Scheduler::is_valid_tid()
This function was used when processes could die at any point in time.
Now that processes can only die in known spots, we can be sure they
are not holding any locks. This allows much more performant locking.
2023-12-07 13:26:42 +02:00
Bananymous 6ed6fb6f78 Kernel: Make Inodes use the new lock
Also remove old lock from TTY since it can just use the one Inode
already has.
2023-12-07 13:19:12 +02:00
Bananymous 39170a437e Kernel: Implement RecursivePrioritySpinLock
This locks won't allow locking from userspace thread if there is
kernel thread waiting to lock this.
2023-12-07 13:18:21 +02:00
Bananymous d824449ddb AOC2023: Use quick sort in solution 2023-12-07 11:55:28 +02:00
Bananymous 8aa137bdfe BAN: implement quick sort and test for it 2023-12-07 11:55:28 +02:00
Bananymous d37b59b2df BAN: Fix simple iterator operator--() 2023-12-07 11:55:28 +02:00
Bananymous 412aa05feb BAN: implement exchange sort and test for it 2023-12-07 11:55:28 +02:00
Bananymous 44358a9182 BAN: add value_type to iterators 2023-12-07 10:15:18 +02:00
Bananymous 8516f04467 AOC2023: optimize hand score calculation 2023-12-07 09:26:17 +02:00
Bananymous 045a96009e BAN: implement basic swap
This will be improved, currently just works on general type T and
moves values between arguments.
2023-12-07 09:26:17 +02:00
Bananymous d79703063f AOC2023: implement day7 2023-12-07 07:56:56 +02:00
Bananymous e811fc0be5 Userspace: Implement barebones sudo
This doesn't do any password checking or anything. Just sets uid and
gid before execvp()
2023-12-06 18:15:42 +02:00
Bananymous 0389fbe88d Kernel: Appreciate setuid and setgid bits executables 2023-12-06 18:14:27 +02:00
Bananymous d7e362aef8 LibC: Implement basic execvp 2023-12-06 18:14:00 +02:00
Bananymous 32be14fdb0 LibC: Implement and fix some string.h functions 2023-12-06 18:13:34 +02:00
Bananymous 91ee80ea86 Kernel: Make sys_nanosleep interruptable by signals 2023-12-06 16:22:24 +02:00
Bananymous 5b8adb8418 Kernel: Cleanup sys_sleep() and TTY::read_impl 2023-12-06 16:21:22 +02:00
Bananymous fee9ee0f16 Kernel: Add API to block on semaphore until unblock or EINTR 2023-12-06 16:13:07 +02:00
Bananymous 4a5b38ca07 Kernel: Scheduler::unblock_thread() wakes sleeping threads 2023-12-06 16:12:37 +02:00
Bananymous 094978b8d1 LibC: make sleep() set errno if sleep woke up early 2023-12-06 13:13:43 +02:00
Bananymous d48839cf75 Kernel: Make sleep syscall interruptable 2023-12-06 13:13:37 +02:00
Bananymous 56b6b1685d Userspace: implement basic sleep command 2023-12-06 13:05:53 +02:00
Bananymous e3d15ca905 Shell: Handle keyboard input that was interrupted by signal 2023-12-06 13:04:33 +02:00
Bananymous b334904427 Kernel: Rework all signal code
Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.

Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically.
2023-12-06 13:02:17 +02:00
Bananymous afa1f07fd2 Kernel: Remove unnecessary raise syscall 2023-12-06 13:00:45 +02:00
Bananymous bb831bcdaa Kernel: Add helper for checking whether segment is from userspace 2023-12-06 12:57:13 +02:00
Bananymous acee6af98d AOC2023: implement day6 2023-12-06 07:27:25 +02:00
Bananymous e63820ba7b LibC: cleanup and fix fgets
My quick fix for fgets wrote non-nullterminated newline if size was
one.

POSIX doesn't specify what happens if size == 0, so I do the same as
glibc and return NULL without setting errno.
2023-12-05 10:00:43 +02:00
Bananymous 80cbb56878 AOC2023: implement day5 2023-12-05 09:13:13 +02:00
Bananymous ab44c60d7e LibC: fix fgets when reading empty line 2023-12-05 07:46:14 +02:00
Bananymous 52309413af Shell: Verify that command exists before executing it
This prevents page fault somewhere when executing non-existing
commands.
2023-12-04 22:57:27 +02:00
Bananymous 657debc8c0 AOC2023: remove unnecessary loop 2023-12-04 17:54:10 +02:00