Commit Graph
100 Commits
Author SHA1 Message Date
Bananymous a84fb57e32 ports: Add binutils port 2025-01-25 18:40:16 +02:00
Bananymous 7314d2b577 ports: Add mpc port
This will be used by gcc
2025-01-25 18:40:16 +02:00
Bananymous ba83ede0d1 ports: Add mpfr port
This will be used by gcc
2025-01-25 18:40:08 +02:00
Bananymous 42500ce043 ports: Add gmp port
This will be used by gcc
2025-01-25 18:40:04 +02:00
Bananymous caa8c1da90 LibC: Add stub implementations for set{rlimit,priority} 2025-01-25 18:15:50 +02:00
Bananymous cbcb9f9044 Kernel: Warn on unsupport clock_gettime clock_ids 2025-01-25 17:31:17 +02:00
Bananymous 60bffb5f49 LibC: Implement clock in terms of clock_gettime
This allows clock to "just work" after I update clock_gettime to support
CLOCK_PROCESS_CPUTIME_ID.
2025-01-24 19:58:44 +02:00
Bananymous 2a16a67aed Kernel: Ignore SA_RESTART flag on sigaction
This is a big hack but a lot of ports set this flag. This seems really
annoying to implement properly
2025-01-24 19:34:22 +02:00
Bananymous c6cd185cb5 DynamicLoader: Fix copy relocations
Weak symbols are now actually resolved to the same strong symbol between
shared objects and copy relocations now work!
2025-01-24 19:23:33 +02:00
Bananymous 58cdcf754c ports: Update curl port
This patch updates curl to version 8.11.1 and adds support for dynamic
libraries
2025-01-24 19:23:33 +02:00
Bananymous d969f5df7b ports: Add zstd port 2025-01-24 19:23:33 +02:00
Bananymous b6455e0661 LibC: Implement stub for clock 2025-01-24 19:23:33 +02:00
Bananymous 15021b442c LibC: Fix memchr and memcmp assembly implementations
These functions did not work with size 0 :D
2025-01-23 21:55:26 +02:00
Bananymous ee078fc638 Kernel: Fix fd status/descriptor flag handling
I was not sharing status and offset on fork and I was sharing descriptor
flags on dup/dup2
2025-01-17 20:12:04 +02:00
Bananymous 9893c90e74 Kernel: Remove SYS_DUP and implement it using fcntl F_DUPFD 2025-01-17 19:29:47 +02:00
Bananymous 82978da5e3 Kernel: Cleanup AML code 2025-01-17 16:20:00 +02:00
Bananymous 80ce9d546a Kernel: Don't error out on SYS_WAIT with W{CONTINUED,UNTRACED}
As I don't support stopping and continuing processes these flags are
effecively no-ops
2025-01-17 16:14:52 +02:00
Bananymous 34775633b2 Kernel: Clear DF on every interrupt handler
I was missing this and it lead to UB with my new mem* functions that
were implemented with `rep`
2025-01-17 16:11:13 +02:00
Bananymous 03b5c8e76e Kernel: Fix disk caching when readonly is specified 2025-01-16 16:16:38 +02:00
Bananymous 766b8cd62e LibC: Fix stdio FILE operations
Mixing read/write/ungetc was broken. This mostly fixes everything. There
might still be some problems that have to be fixed
2025-01-16 14:57:58 +02:00
Bananymous 609067cefa Kernel: Cleanup internal CPUID functions declarations 2025-01-14 22:57:44 +02:00
Bananymous 9d497ad311 Kernel: Cleanup interrupt stub definitions 2025-01-14 22:55:06 +02:00
Bananymous 72059a9441 LibC: Redefine SEEK_* macros to match common systems
some ports written in assembly seem to depend on this
2025-01-14 22:52:13 +02:00
Bananymous ebecbb69ec LibC: Implement some mem* and str* functions in assembly
This made them a lot faster on modern cpus with optimized rep stos and
rep movs
2025-01-14 22:50:46 +02:00
Bananymous b129bab81a Kernel: Make mem* and str* functions weak symbols 2025-01-14 19:08:03 +02:00
Bananymous 14c70c5cc8 LibC: Make mem* and str* functions weak symbols
This allows adding architecture dependent implementations while still
providing an general implementation
2025-01-14 18:36:54 +02:00
Bananymous d62a67502e LibC: Remove global -fno-tree-loop-distribute-patterns flag
This is only really needed for string.cpp where mem* and str* functions
are defined
2025-01-14 18:35:33 +02:00
Bananymous 4b2c303873 LibC: Add weak_alias header that defines a weak_alias macro 2025-01-14 18:33:57 +02:00
Bananymous d189f00f38 Kernel: Null terminate tmpfs directory entries 2025-01-12 16:03:09 +02:00
Bananymous a5cf92b2ff Kernel: Use uint64_t instead of size_t for AML node conversion
This allows 32 bit to compile again :)
2024-12-30 06:27:49 +02:00
Bananymous 8c45249c06 LibC: Remove stdint.h as toolchain provides one
I have no idea why i even had this written, it was just containing
compiler macros
2024-12-30 06:26:17 +02:00
Bananymous 55c8a15983 aoc2024: Implement day25 solution
This was a nice AOC season. First time I fully completed it! I may still
optimize my solutions as some of them are a bit slow...
2024-12-25 18:13:57 +02:00
Bananymous 3607e2e759 aoc2024: Implement day24 solution
This is kinda weird and specific to my input but it works xD
2024-12-25 18:13:20 +02:00
Bananymous d035068982 aoc2024: Implement day23 solution
I'm not proud of my implementation to last 2 days, but they work in a
reasonable time. I might optimize them later...

Problem is largely with my hash structures. Preallocating a lot of
elements before running day22 makes it run in less than half of the
current time.
2024-12-23 21:20:47 +02:00
Bananymous af8156f310 aoc2024: Implement day22 solution 2024-12-23 01:47:27 +02:00
Bananymous 47b995a2a3 aoc2024: Implement day21 solution 2024-12-22 21:39:28 +02:00
Bananymous 6f8f99f42c Terminal: Set terminal size with TIOCSWINSZ when starting
This actually fixes the very broken vim port
2024-12-21 03:23:21 +02:00
Bananymous 69137cddab Kernel: Implement TIOCSWINSZ for pseudo terminals
I have no idea how I had forgotten this
2024-12-21 03:22:48 +02:00
Bananymous 9caa3030ea aoc2024: Implement day20 solution 2024-12-20 21:31:10 +02:00
Bananymous 3e9826acf5 aoc2024: Implement day19 solution 2024-12-19 12:57:28 +02:00
Bananymous d7b4f54983 Kernel: Check Control Method Battery _STA bit 4
This bit indicates wheter the battery is actually present.
2024-12-19 02:35:09 +02:00
Bananymous 00b0dcd306 Kernel: Reorder ACPI initialization method calls 2024-12-19 02:35:09 +02:00
Bananymous 53c356a940 Kernel: Implement AML MatchOp 2024-12-18 19:26:19 +02:00
Bananymous a7f3351c0e TaskBar: Prevent possible division by zero
If battery reports its full capacity as zero, battery percentage
calculation did a division by zero crashing the TaskBar :)
2024-12-18 18:36:26 +02:00
Bananymous 3a6cdfff45 Kernel: Fix ACPI namespace initialization
Now _REG, _STA, _INI are called in the order my laptop expects them to
be called. This was kinda weird because what uACPI was doing did not
work.

\_SB_.PCI0.LPC0.EC0_.BAT0._STA required \_SB_.PCI0.LPC0.EC0_._REG to be
called
\_SB_.PCI0.LPC0.EC0_._REG required \_SB_.PCI0._STA to be called

Now I call all the _REG methods of a device after calling _STA/_INI and
after performing the whole _STA/_INI sequence i call rest of missing
_REG functions
2024-12-18 18:30:45 +02:00
Bananymous c26e347e91 Kernel: Fix AML FieldUnit conversion and NameString construction 2024-12-18 18:29:04 +02:00
Bananymous 1b94957b07 Kernel: Copy AML NameString base when moving it :) 2024-12-18 18:28:16 +02:00
Bananymous 2e39668605 aoc2024: Implement day18 solution 2024-12-18 14:06:32 +02:00
Bananymous 0642c569b4 TaskBar: Show battery percentage if available 2024-12-18 14:06:32 +02:00
Bananymous 4e364bd2f6 Kernel: Add support for ACPI Control Method Batteries
The implementation is kinda weird but it exposes some battery
information to userspace!
2024-12-18 14:06:32 +02:00
Bananymous b9fe564d78 Kernel: Check for GCC when ignoring Wmaybe-uninitialized 2024-12-18 01:45:36 +02:00
Bananymous 437fa45ca2 Kernel: Add helper to find ACPI devices with EISA id 2024-12-18 01:45:00 +02:00
Bananymous 85e215650c Kernel: Implement AML ToStringOp 2024-12-18 01:44:33 +02:00
Bananymous 7eb186dad4 Kernel: Add to_sv() helper for AML String 2024-12-18 01:43:46 +02:00
Bananymous 2259614640 Kernel: Remove unused function from ACPI namespace 2024-12-18 01:43:04 +02:00
Bananymous a584e1a4ec aoc2024: Implement day17 solution 2024-12-17 23:30:37 +02:00
Bananymous 869f4011a1 Kernel: Replace the old AML interpreter by a new, better one
The old AML interpreter was trash and did not follow value/reference
semantics at all. It was also super slow, one of my machines taking over
7 seconds to parse ACPI namespace and call _INI and _STA.
2024-12-17 03:36:33 +02:00
Bananymous 463bb72d24 aoc2024: Implement day16 solution 2024-12-16 17:23:08 +02:00
Bananymous 8b312a47e6 BAN: Allow MUST and TRY to contain commas 2024-12-16 17:22:40 +02:00
Bananymous 46d4e32510 Kenrel: Validate inode open mode on read/write syscalls 2024-12-15 20:49:12 +02:00
Bananymous 1815a913c3 Kernel: Remove unnecessary hash map lookups 2024-12-15 20:47:40 +02:00
Bananymous a7e06715ba aoc2024: Implement day15 solution 2024-12-15 20:45:57 +02:00
Bananymous a89fd95864 aoc2024: Implement day14 solution 2024-12-14 23:52:22 +02:00
Bananymous 9ba9469bb1 aoc2024: Optimize day12
There is actually no need for hash maps
2024-12-14 03:58:11 +02:00
Bananymous 4dbf173ed4 aoc2024: Implement day13 solution 2024-12-14 03:17:55 +02:00
Bananymous 8936cca9cf aoc2024: Implement day12 solution 2024-12-12 17:03:31 +02:00
Bananymous 1c704680a8 aoc2024: Implement day11 solution
Finally we got a problem where trivial solution does not work
2024-12-11 09:05:52 +02:00
Bananymous 3e36834751 aoc2024: Implement day10 solution 2024-12-10 17:26:39 +02:00
Bananymous 581caff638 BuildSystem: Install base sysroot only once
Base sysroot is not only installed when creating the syroot directory
for the first time. To get it installed again, you have to either delete
the old sysroot diretory or run clean target

This makes it so its actually possible to edit files specified in the
base sysroot without random hacks.
2024-12-10 16:44:59 +02:00
Bananymous 8b612ba547 aoc2024: Implement day9 solution
part2 is kinda unoptimized, it should not use expanded input, but I did
not feel like rewriting my parsing code :)
2024-12-09 16:20:21 +02:00
Bananymous 90820f24a4 BAN: Make HashMap::{insert,emplace}{,_or_assign} return an iterator
This reduces the number of lookups done into the hash map :)
2024-12-09 03:37:13 +02:00
Bananymous 12a37500b0 Kernel: Fix triple-fault in vitual tty
This was happening when printing non-utf8 data while having virtual tty
as the debug console.
2024-12-09 03:35:51 +02:00
Bananymous 3ae6ffdb01 ports/tcc: Create usr/include/sys/ucontext.h
This file does not have to contain anything, tcc just requires that it
exists.
2024-12-08 20:42:04 +02:00
Bananymous c4e76b391e aoc2024: Implement day8 solution
I did not feel like optimizing this one, so its a O(n^2) looking over
every cell in the grid. Performs way faster than my optimized day6
solution tho :DD
2024-12-08 16:14:39 +02:00
Bananymous cf9ba737f0 aoc2024: Implement day7 solution 2024-12-07 07:34:21 +02:00
Bananymous 2d0690ae2d Kernel: Cleanup most of syscalls dealing with files 2024-12-07 05:33:04 +02:00
Bananymous 71a2d0971f Kernel: Remove unnecessary reverse from VFS file search 2024-12-07 01:41:23 +02:00
Bananymous 3bf57e0748 Kernel: Add . and .. entries to /proc/<pid> directories
This allows to run `cd ..` in one of these directories
2024-12-07 01:37:40 +02:00
Bananymous fbc0319cb6 aoc2024: Implement day6 solution 2024-12-07 01:08:08 +02:00
Bananymous e8bc3c2d80 General: Add intructions to run doom to README 2024-12-06 20:25:09 +02:00
Bananymous fe192e07fb General: Update README feature list 2024-12-05 19:49:38 +02:00
Bananymous 51b6329c86 Kernel: Make backspace \b and delete 0x7F
This is what `vim` seems to expect and imo makes way more sense.
2024-12-05 17:34:37 +02:00
Bananymous 72d9e4c1e7 Kernel: Remove accidental debug prints from fcntl syscall 2024-12-05 17:34:32 +02:00
Bananymous cb7d5c9d09 userspace: Implement dirname utility 2024-12-05 08:30:30 +02:00
Bananymous 097ab82529 userspace: Implement basename utility 2024-12-05 08:30:06 +02:00
Bananymous ccb603d77f aoc2024: Implement day5 solution 2024-12-05 08:16:34 +02:00
Bananymous d7b02db832 aoc2024: Implement day4 solution 2024-12-05 08:16:12 +02:00
Bananymous 56cc5da9fb userspace: Implement ln utility 2024-12-05 08:14:45 +02:00
Bananymous 1903079f96 LibC: Fix popen to return correct return value instead of -1 2024-12-05 06:47:10 +02:00
Bananymous b6d0950ee9 LibC: Fix strftime implementation
This implementation now passes every musl-libc test :)
2024-12-05 06:46:31 +02:00
Bananymous c1a32a4041 LibC: Implement mktime 2024-12-05 06:43:35 +02:00
Bananymous 8fa443879c ports: Add working tcc port!
You can actually now compile programs within banan-os!!
2024-12-04 21:23:09 +02:00
Bananymous 3a465cb94f DynamicLoader: Don't write to pltgot if it does not exist
This makes `tcc` compile runnable executables
2024-12-04 21:11:43 +02:00
Bananymous 49133dce48 Kernel: Make pipe check data every 100ms
This prevents dead lock if read-end does not detect data before blocking
why write-end already notified.
2024-12-03 21:54:27 +02:00
Bananymous 3b7b6beca5 ports: Allow using banan-os cmake toolchain file for ports 2024-12-03 20:29:38 +02:00
Bananymous 0dd81328ff ports: Unconditionally compile banan-os before building ports
This allows ports to use any banan-os library cleanly. Ninja is fast on
when everything is already compiled, so it doesn't add too much
overhead.
2024-12-03 20:29:38 +02:00
Bananymous a668593e6b ports: Don't update ports on every build
This makes using ports much less painful :)
2024-12-03 20:29:38 +02:00
Bananymous 3a5a22511a aoc2024: Implement day3 solution 2024-12-03 20:29:38 +02:00
Bananymous 86859267f0 ports/curl: remove libcurl.la file and use /dev/urandom 2024-12-03 20:29:38 +02:00
Bananymous 88c9f6d233 LibC: Make environ a weak alias
If user program defines its own global `environ` variable it will still
work :)
2024-12-03 20:29:38 +02:00