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
Bananymous
35999a5ecc
AOC2023: implement day4
2023-12-04 17:51:27 +02:00
Bananymous
b0ac571abe
AOC2023: implement day3
...
Solution to second puzzle is not optimal, it definately should be
O(1) space, but I didn't want to think about it.
2023-12-03 17:07:09 +02:00
Bananymous
ba0981c0e3
AOC2023: implement day2
2023-12-02 16:10:37 +02:00
Bananymous
24c79d72cd
AOC2023: Cleanup day1 code
2023-12-01 13:31:55 +02:00
Bananymous
6dcab1491e
AOC2023: implement day1
2023-12-01 12:38:01 +02:00
Bananymous
8f3659dcb9
AOC2023: update buildsystem
2023-12-01 12:38:01 +02:00
Bananymous
f1c2284512
Kernel: Fix keyboard layout for underscore
2023-12-01 12:31:16 +02:00
Bananymous
2188dc2e1c
Userspace: Prepare aoc2023 environment :)
2023-12-01 01:22:53 +02:00
Bananymous
ff83c52c89
init: set default termios on every username prompt
...
Before if e.g. Shell crashed init would have broken termios
2023-12-01 01:22:53 +02:00
Bananymous
1cfab4ae04
BuildSystem/Kernel: Enable -Wextra and -Werror in kernel
...
Only needed to fix some unused variable bugs
2023-12-01 01:22:53 +02:00
Bananymous
2ac28cba6e
BuildSystem: Don't build lai with -Wstack-usage
...
Lai has two functions that trigger warnings on gcc. There isn't
really anything I can do about it, so just disable the warning
2023-12-01 01:22:53 +02:00
Bananymous
547aeb0170
image: Remove inheritance from Netbpm
...
This inheritance made no sense
2023-11-29 20:56:05 +02:00