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