Commit Graph

1904 Commits

Author SHA1 Message Date
600bd7ee0f LibC: Implement rmdir in unistd.h 2023-12-14 11:02:56 +02:00
adf1e54605 LibC: Implement more functions to string.h 2023-12-14 11:02:30 +02:00
a3de64f5fa LibC: Implement basic version of system() this assumes Shell exists 2023-12-14 11:00:40 +02:00
8216d09e06 LibC: Implement non-locale specific functions from strings.h 2023-12-14 10:59:39 +02:00
694cda6e40 LibC: Implement remove for stdio 2023-12-14 10:58:50 +02:00
e227a87140 Kernel: Allow creating directories if path ends with '/'
Also create and create_dir will now fail with EEXISTS if file exists
2023-12-14 10:56:53 +02:00
6cd5763361 Kernel: Allow cloning of mmapped framebuffer regions 2023-12-14 10:54:06 +02:00
0f1c740fe8 Kernel: Implement two missing ubsan handlers needed by lai 2023-12-14 10:53:36 +02:00
3f3e81fcf2 Bootloader: Align boot information passed to kernel
UBSAN found this bug
2023-12-14 10:52:51 +02:00
862993398d AOC2023: Implement day12
There seems to be a problem with my malloc so the hash map is not
working. This code worked fine on my linux with actually working
malloc :D
2023-12-14 10:51:48 +02:00
225c7c6ab4 AOC2023: Implement day11 2023-12-11 14:36:33 +02:00
58633ca373 AOC2023: Remove unnecessary loop 2023-12-10 20:18:59 +02:00
00d57d783e LibC+userspace: Make everything compile with -Wall -Wextra -Werror
I added -Wall -Wextra -Werror as public compile flags to libc. Now
everything in userspace in compiled using these flags. I made all
necessary changes to allow compilation to work.

Only exception is execvp which has a large stack usage. Maybe it
should use malloc for the buffer but posix allows ENOMEM only when
kernel is out of memory... This can be fixed when fexecve is
implemented and there is no need for absolute path.
2023-12-10 19:20:14 +02:00
f077e17b2a AOC2023: Implement day10 2023-12-10 18:28:04 +02:00
2f8759d2d3 Kernel: Make ext2 fs work with block sizes != 1024 2023-12-10 01:32:30 +02:00
a6bfbbf655 ls: Rewrite whole program for cleaner output
ls -l now sorts elements and aligns them by columns.
2023-12-10 01:05:12 +02:00
9d8c9baa3f LibC: Remove unnecessary RWX mask definition 2023-12-09 19:43:49 +02:00
c273bf98c9 ls+stat: show setuid, setgid and sticky bits 2023-12-09 19:43:25 +02:00
99a5b6e2ef AOC2023: Cleanup day9 code
Move tree building to its own function. Both parts can use the same
tree. This also decreaseas memory usage by one element by row :D
2023-12-09 19:08:13 +02:00
284a012509 Kernel: Add framebuffer information to kernel image 2023-12-09 17:33:58 +02:00
abc69fa3d5 Bootloader: Search framebuffer information from kernel memory
Framebuffer information is no longer hard coded into bootloader.
Kernel can define framebuffer info structure in its memory which is
used for finding proper video mode.
2023-12-09 17:32:10 +02:00
8b01e2d4a2 Bootloader: Generalize framebuffer video mode search
Framebuffer size is now taken as arguments to vesa_find_video_mode
2023-12-09 16:48:04 +02:00
0c3e5980d6 AOC2023: Implement day9 2023-12-09 16:22:43 +02:00
951873098e BAN: Rewrite heap sort
Heap sort is now more close to gnulibc++ version. This is just more
simplified version.
2023-12-08 22:45:55 +02:00
2b927b9729 BAN: Restructure sort functions and namespaces 2023-12-08 18:58:47 +02:00
b523ccb893 AOC2023: Implement day8
Second part was kinda weird. You are supposted to assume something
of the input, which necessarily is not true.
2023-12-08 17:13:20 +02:00
7bb3172591 AOC2023: Use the default sort algorithm 2023-12-08 00:10:59 +02:00
be657b9b18 BAN: Add default sort. This is wrapper around sort_intro 2023-12-08 00:10:09 +02:00
94e6b9fa65 BAN: Implement intro sort 2023-12-07 23:56:11 +02:00
d8ea0eeba3 BAN: Add less than operator for iterator 2023-12-07 23:55:41 +02:00
6873244169 BAN: Move placement new to New.h
I have no idea why they were defined in Move.h
2023-12-07 23:52:57 +02:00
805b4096e9 BAN: Remove empty else. Builds with -Wall -Wextra 2023-12-07 23:50:35 +02:00
0f74e123b8 BAN: Implement ilog2 for unsigned integers 2023-12-07 23:50:04 +02:00
7f212106db BAN: Implement heap sort 2023-12-07 23:18:49 +02:00
46c3da71b6 BAN: Cleanup sorting code 2023-12-07 23:18:49 +02:00
e5cab047d6 BAN: Implement more methods for iterators 2023-12-07 23:18:49 +02:00
bf3e9eabd5 BAN: Implement distance() for iterators 2023-12-07 23:18:49 +02:00
19604015de BAN: Implement quick sort 2023-12-07 19:28:31 +02:00
08bc0a2815 BAN: Implement next() and prev() for iterators and use them in sorts 2023-12-07 19:28:05 +02:00
3bc7113cc5 sudo: fix some typos 2023-12-07 14:05:17 +02:00
24243268a6 Shell: do path resolution only if command doesn't contain '/' 2023-12-07 13:34:46 +02:00
2e858fddb5 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
12474addda 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
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