Commit Graph

1611 Commits

Author SHA1 Message Date
7c25e4ce5a 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
669d55707e AOC2023: Use quick sort in solution 2023-12-07 11:55:28 +02:00
6caa9b6f95 BAN: implement quick sort and test for it 2023-12-07 11:55:28 +02:00
59ad639fa8 BAN: Fix simple iterator operator--() 2023-12-07 11:55:28 +02:00
43458cc74f BAN: implement exchange sort and test for it 2023-12-07 11:55:28 +02:00
e935a33a4d BAN: add value_type to iterators 2023-12-07 10:15:18 +02:00
536bb74d53 AOC2023: optimize hand score calculation 2023-12-07 09:26:17 +02:00
a872efdef2 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
efd8be8207 AOC2023: implement day7 2023-12-07 07:56:56 +02:00
06a84da844 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
24b71d1170 Kernel: Appreciate setuid and setgid bits executables 2023-12-06 18:14:27 +02:00
0dc168a8c0 LibC: Implement basic execvp 2023-12-06 18:14:00 +02:00
76049b2e13 LibC: Implement and fix some string.h functions 2023-12-06 18:13:34 +02:00
393ac33e3c Kernel: Make sys_nanosleep interruptable by signals 2023-12-06 16:22:24 +02:00
deeb6d2756 Kernel: Cleanup sys_sleep() and TTY::read_impl 2023-12-06 16:21:22 +02:00
1ac831d4b1 Kernel: Add API to block on semaphore until unblock or EINTR 2023-12-06 16:13:07 +02:00
534969df32 Kernel: Scheduler::unblock_thread() wakes sleeping threads 2023-12-06 16:12:37 +02:00
976ae64f88 LibC: make sleep() set errno if sleep woke up early 2023-12-06 13:13:43 +02:00
a12ffaa8a2 Kernel: Make sleep syscall interruptable 2023-12-06 13:13:37 +02:00
ff8b3be8dc Userspace: implement basic sleep command 2023-12-06 13:05:53 +02:00
56008869d6 Shell: Handle keyboard input that was interrupted by signal 2023-12-06 13:04:33 +02:00
1c78671078 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
cdcc36efde Kernel: Remove unnecessary raise syscall 2023-12-06 13:00:45 +02:00
336daa2cc5 Kernel: Add helper for checking whether segment is from userspace 2023-12-06 12:57:13 +02:00
531211e09d AOC2023: implement day6 2023-12-06 07:27:25 +02:00
894065a67e 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
82cb2ea20b AOC2023: implement day5 2023-12-05 09:13:13 +02:00
95fc894303 LibC: fix fgets when reading empty line 2023-12-05 07:46:14 +02:00
622007f2ee 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
cf76d2e7d9 AOC2023: remove unnecessary loop 2023-12-04 17:54:10 +02:00
41f8974080 AOC2023: implement day4 2023-12-04 17:51:27 +02:00
3ed25425a3 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
49f8c4268f AOC2023: implement day2 2023-12-02 16:10:37 +02:00
70c224d8ea AOC2023: Cleanup day1 code 2023-12-01 13:31:55 +02:00
6a7335e5c9 AOC2023: implement day1 2023-12-01 12:38:01 +02:00
3aaa755c51 AOC2023: update buildsystem 2023-12-01 12:38:01 +02:00
c140dd2a65 Kernel: Fix keyboard layout for underscore 2023-12-01 12:31:16 +02:00
dabd79afa7 Userspace: Prepare aoc2023 environment :) 2023-12-01 01:22:53 +02:00
6ccb1bbbf9 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
9b841cb823 BuildSystem/Kernel: Enable -Wextra and -Werror in kernel
Only needed to fix some unused variable bugs
2023-12-01 01:22:53 +02:00
c1cac43f28 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
8564b59e14 image: Remove inheritance from Netbpm
This inheritance made no sense
2023-11-29 20:56:05 +02:00
fdb6dc94ba Kernel: cast between inheritance with static_cast
using reinterpret_cast is not a good idea. preferably we would use
dynamic_cast, but that is not possible since kernel is compiled with
-fno-rtti.
2023-11-29 20:50:57 +02:00
327b330338 Kernel: Make internal framebuffer bpp constexpr defined in libc 2023-11-29 20:07:33 +02:00
7090388c70 cp: allow copying all files except directories
The old condition seemed odd. This allows taking screen shots by
copying the /dev/fb0.
2023-11-29 16:13:40 +02:00
ff550785a7 Userspace: Implement basic image rendering for Netbpm
You can now render Netbpm (P6) format image to framebuffer using
`image` command. I added basic test image to
/usr/share/images/sample.ppm
2023-11-29 16:11:35 +02:00
d7a3aca5d4 Kernel: Use the correct bpp when writing to framebuffer 2023-11-29 00:31:24 +02:00
056586486d Shell: make clear use \e[2J instead of \e[J
This makes kernel to actually clear the full screen. If framebuffer
did not fit font exactly last row would be left partially uncleared
2023-11-28 23:55:37 +02:00
42a1d26d5b Userspace: Implement basic test for framebuffer mmap 2023-11-28 23:52:22 +02:00
cc572af390 Kernel: Implement mmaping for framebuffer device 2023-11-28 23:51:56 +02:00