Commit Graph

1352 Commits

Author SHA1 Message Date
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
Bananymous ebe465e81e 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
Bananymous c10dffd719 Kernel: Make internal framebuffer bpp constexpr defined in libc 2023-11-29 20:07:33 +02:00
Bananymous 21392e34cb 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
Bananymous ea4a45aef2 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
Bananymous 45d8d76e87 Kernel: Use the correct bpp when writing to framebuffer 2023-11-29 00:31:24 +02:00
Bananymous e3890fa7c4 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
Bananymous eeadf5fff1 Userspace: Implement basic test for framebuffer mmap 2023-11-28 23:52:22 +02:00
Bananymous 58be87ba3c Kernel: Implement mmaping for framebuffer device 2023-11-28 23:51:56 +02:00
Bananymous 6d7e61225b Kernel: Add framebuffer device to devfs 2023-11-28 23:51:28 +02:00
Bananymous eb69fc477b Kernel: Add API for implementing mmappable devices 2023-11-28 23:50:49 +02:00
Bananymous 74b3fc2e7c Kernel: Reading from negative offset in fb dev gives out info 2023-11-28 23:50:11 +02:00
Bananymous 4a0bfd08e0 Kernel/LibC: Implement pread() 2023-11-28 23:47:30 +02:00
Bananymous 816f8091a9 mmap-shared-test: Add test case for msync 2023-11-22 22:45:16 +02:00
Bananymous 46ad4f2818 Kernel/LibC: Implement very basic msync 2023-11-22 22:44:06 +02:00
Bananymous 0adb28e23f Kernel: Delete the now obsolete VesaTerminalDriver 2023-11-22 21:59:11 +02:00
Bananymous d4aa33b18b 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
Bananymous 4ba3a17af3 Kernel: Add more APIs to FramebufferDevice 2023-11-22 21:56:27 +02:00