Commit Graph

1365 Commits

Author SHA1 Message Date
Bananymous 840cd80994 AOC2023: Implement day14 2023-12-19 02:49:48 +02:00
Bananymous 432a9847a8 AOC2023: Implement day13 2023-12-19 01:25:23 +02:00
Bananymous a8300d7a82 Kernel: Implement hacky non-block read for ps2 keyboard 2023-12-19 00:20:46 +02:00
Bananymous ed54f128bc Kernel: Allow opening files with O_NONBLOCK 2023-12-19 00:20:15 +02:00
Bananymous 0c208fa526 LibC: Fix stpncpy
I had misunderstood and tought that the string is always
null terminated
2023-12-15 00:33:37 +02:00
Bananymous c0ce2fd9a7 LibC: Optimize malloc even further
aoc2023/day12 now runs in 3.5 seconds on my machine. This is way
better than the old almost hour.
2023-12-14 23:49:25 +02:00
Bananymous 57eea81c7b LibC: Compile with -O2 optimizations
I have no idea why libc had no optimizations enabled.

Weird thing is that memcpy optimized to infinite loop if I kept the
__restrict__ attributes in pointers. I don't think there was any ub.
2023-12-14 23:40:08 +02:00
Bananymous 1800f62de4 LibC: Optimize malloc by a lot
I now cache first free node in malloc_pool and whether the node is
last or not. There allow doing less full iterations over the whole
malloc pool.

Malloc is still unbearably slow and I will have to write a proper
fast malloc at some point. With this patch running aoc2023/day12 is
atleast possible. Probabaly will take closer to an hour...
2023-12-14 15:31:00 +02:00
Bananymous 7787042eae LibC: Mark __assert_fail as noreturn 2023-12-14 15:13:54 +02:00
Bananymous dd936f54a4 rm: Use remove instead of unlink for removing files 2023-12-14 11:03:58 +02:00
Bananymous 6655329c5c AOC2023: Fix day3 implementation
I accidently broke my day3 when messing with signed/unsigned integers
2023-12-14 11:03:19 +02:00
Bananymous 081307aea4 LibC: Implement rmdir in unistd.h 2023-12-14 11:02:56 +02:00
Bananymous 71e4f08397 LibC: Implement more functions to string.h 2023-12-14 11:02:30 +02:00
Bananymous 7293434350 LibC: Implement basic version of system() this assumes Shell exists 2023-12-14 11:00:40 +02:00
Bananymous 80252f9b6a LibC: Implement non-locale specific functions from strings.h 2023-12-14 10:59:39 +02:00
Bananymous ba85f07b64 LibC: Implement remove for stdio 2023-12-14 10:58:50 +02:00
Bananymous af8db9f350 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
Bananymous f5cb1fb0b2 Kernel: Allow cloning of mmapped framebuffer regions 2023-12-14 10:54:06 +02:00
Bananymous 41d9c70ebe Kernel: Implement two missing ubsan handlers needed by lai 2023-12-14 10:53:36 +02:00
Bananymous 1843c933fe Bootloader: Align boot information passed to kernel
UBSAN found this bug
2023-12-14 10:52:51 +02:00
Bananymous b32049ffde 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
Bananymous 27dfc42d11 AOC2023: Implement day11 2023-12-11 14:36:33 +02:00
Bananymous a3e1d41a03 AOC2023: Remove unnecessary loop 2023-12-10 20:18:59 +02:00
Bananymous 60201ec28a 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
Bananymous 7298e6ba5d AOC2023: Implement day10 2023-12-10 18:28:04 +02:00
Bananymous 773e92fece Kernel: Make ext2 fs work with block sizes != 1024 2023-12-10 01:32:30 +02:00
Bananymous acbded514c 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
Bananymous 343c146c61 LibC: Remove unnecessary RWX mask definition 2023-12-09 19:43:49 +02:00
Bananymous 70f37295ba ls+stat: show setuid, setgid and sticky bits 2023-12-09 19:43:25 +02:00
Bananymous 0648d0d653 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
Bananymous e4ed65b897 Kernel: Add framebuffer information to kernel image 2023-12-09 17:33:58 +02:00
Bananymous 75579f15d4 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
Bananymous fbe75b6d63 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
Bananymous 50b0413483 AOC2023: Implement day9 2023-12-09 16:22:43 +02:00
Bananymous 7ce284f38c 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
Bananymous 1e929ffc9d BAN: Restructure sort functions and namespaces 2023-12-08 18:58:47 +02:00
Bananymous 33b3c8bed0 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
Bananymous 6ebe698218 AOC2023: Use the default sort algorithm 2023-12-08 00:10:59 +02:00
Bananymous d11392c980 BAN: Add default sort. This is wrapper around sort_intro 2023-12-08 00:10:09 +02:00
Bananymous a990143628 BAN: Implement intro sort 2023-12-07 23:56:11 +02:00
Bananymous 66630bd5eb BAN: Add less than operator for iterator 2023-12-07 23:55:41 +02:00
Bananymous 8971c0eb85 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
Bananymous a8c3e6a9e2 BAN: Remove empty else. Builds with -Wall -Wextra 2023-12-07 23:50:35 +02:00
Bananymous 1fcf56f6c6 BAN: Implement ilog2 for unsigned integers 2023-12-07 23:50:04 +02:00
Bananymous 6ee01a1237 BAN: Implement heap sort 2023-12-07 23:18:49 +02:00
Bananymous bbed9a30c6 BAN: Cleanup sorting code 2023-12-07 23:18:49 +02:00
Bananymous 8a0ceb56dc BAN: Implement more methods for iterators 2023-12-07 23:18:49 +02:00
Bananymous ccf1786485 BAN: Implement distance() for iterators 2023-12-07 23:18:49 +02:00
Bananymous 4662068071 BAN: Implement quick sort 2023-12-07 19:28:31 +02:00
Bananymous 9f5bdde29d BAN: Implement next() and prev() for iterators and use them in sorts 2023-12-07 19:28:05 +02:00