Commit Graph

1651 Commits

Author SHA1 Message Date
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
4275d2ce48 Kernel: Add framebuffer device to devfs 2023-11-28 23:51:28 +02:00
4a87d6052b Kernel: Add API for implementing mmappable devices 2023-11-28 23:50:49 +02:00
d86ecf4f61 Kernel: Reading from negative offset in fb dev gives out info 2023-11-28 23:50:11 +02:00
09b7cb2f33 Kernel/LibC: Implement pread() 2023-11-28 23:47:30 +02:00
4c3da66c92 mmap-shared-test: Add test case for msync 2023-11-22 22:45:16 +02:00
60e755210c Kernel/LibC: Implement very basic msync 2023-11-22 22:44:06 +02:00
ab9954fe73 Kernel: Delete the now obsolete VesaTerminalDriver 2023-11-22 21:59:11 +02:00
fd18071975 Kernel: Implement TerminalDriver for Framebuffer device
Use this new FramebufferTerminalDriver for terminal instead of the
old VesaTerminalDriver. Only drawback with this is that framebuffer
device can only be intialized after DevFS is initialized.
2023-11-22 21:57:17 +02:00
b88a7e0c6b Kernel: Add more APIs to FramebufferDevice 2023-11-22 21:56:27 +02:00
cdf53f33f6 Kernel: Implement basic framebuffer device
This allows exposing framebuffer to userspace
2023-11-22 20:34:41 +02:00