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
Bananymous
176693dd5a
LibC: Implement wcscmp and wcsncmp
2024-12-03 16:21:54 +02:00
Bananymous
62bee04fc0
LibC: Implement dummy utime that just checks file existance
2024-12-03 16:21:18 +02:00
Bananymous
0a5aacfd87
Kernel: Allow open with O_CREAT bypass file permission checks
...
call to open(path, O_CREAT|O_EXCL|O_RDWR, 0444) should open file as
read-write although file is created as read-only on filesystem.
2024-12-03 16:17:34 +02:00
Bananymous
2dec3a6c95
Kernel: Add some sanity checks for existanse of threads
2024-12-03 16:16:50 +02:00
Bananymous
fcc2814199
Kernel: Remove process from alarm list after it dies
2024-12-03 16:16:08 +02:00
Bananymous
bc93d238dd
LibC: Fix fread argument order in gethostname
2024-12-03 16:15:16 +02:00
Bananymous
79e2c5d48c
LibC: Make FILE* reading buffered
...
There was no reason to perform a syscall for every byte read
2024-12-03 16:13:48 +02:00
Bananymous
0fab7ad63b
Kernel: Fix SYS_FCNTL command handling :)
...
I had misunderstood how these work
2024-12-03 16:12:26 +02:00
Bananymous
e6a2f55a59
Kernel: Closing file backed mmap wont expand the file size
2024-12-03 16:12:26 +02:00
Bananymous
67e9ca56ac
Kernel: Create /dev/urandom -> /dev/random symlink
...
Most software uses urandom instead of random so this allows it work
normally.
2024-12-03 16:12:26 +02:00
Bananymous
713daf6cd3
Kernel/LibC: Add support for creating hardlinks
2024-12-03 16:12:26 +02:00
Bananymous
12abe81c6d
ports/openssl: Add support for shared libraries
2024-12-03 01:46:59 +02:00
Bananymous
fbcf10c86d
LibC: Implement closelog and make syslog print to stddbg
2024-12-03 01:45:54 +02:00
Bananymous
415b20f884
LibC: Remove errno EEXISTS
...
I don't know why I had added this. It doesn't seem to be a thing on
either POSIX or linux. This was literally equivalent to EXIST
2024-12-02 20:13:38 +02:00
Bananymous
d58ca5f37a
Kernel/LibC: Implement symlink{,at}
2024-12-02 20:13:38 +02:00
Bananymous
11b6ee423e
LibC: Define timezone structure
2024-12-02 20:13:37 +02:00
Bananymous
a10ca47657
Kernel/LibC: Implement {,f}statvfs
2024-12-02 20:13:37 +02:00
Bananymous
ad1f175a39
Kernel/LibC: Implement getppid
2024-12-02 20:13:37 +02:00
Bananymous
fd3246113a
LibC: Implement missing execlp and cleanup exec code
2024-12-02 20:13:37 +02:00
Bananymous
b8013c883c
LibC: Implement getpass
2024-12-02 20:13:37 +02:00
Bananymous
ffcc4fd03a
init: Make tty owned by logged in user
2024-12-02 20:13:37 +02:00
Bananymous
9d97964998
LibC: Fix getpwend gid field :)
2024-12-02 20:13:37 +02:00
Bananymous
f0e54cdd51
LibC: Implement {asctime,ctime,gmtime,localtime}_r
...
Old non _r prefixed functions are now just wrappers around these new
functions :)
2024-12-02 20:13:37 +02:00
Bananymous
0360fd1efe
LibC: Implement mk{,d,s}temp
2024-12-02 20:13:37 +02:00
Bananymous
4508e099ff
LibC: Implement getpagesize
2024-12-02 20:13:37 +02:00
Bananymous
6ed1435aeb
Kernel/LibC: Implement tcgetpgrp
2024-12-02 20:13:37 +02:00
Bananymous
6346e288ad
LibC: Implement getrlimit
2024-12-02 20:13:37 +02:00
Bananymous
d2b503910f
userspace: fix aoc2023 and aoc2024 linking
...
This patch makes aoc projects not link against system libc but the cmake
libc target. This allows compilation before libc is installed
2024-12-02 20:13:37 +02:00
Bananymous
747c3b2a4b
Kernel/LibC: Implement fsync
2024-12-02 20:13:37 +02:00
Bananymous
cccb4e6d5e
LibC: Implement basename and dirname
2024-12-02 20:13:37 +02:00
Bananymous
f4c6afbdae
LibC: Add definitions to LibC that are used by some ports
2024-12-02 20:13:37 +02:00
Bananymous
d1ef380e6b
LibC: Add missing definitions for ifreq members
2024-12-02 20:13:37 +02:00
Bananymous
c02de2580d
Kernel: Add support for SIOCGIFNAME ioctl
2024-12-02 20:13:37 +02:00
Bananymous
a231f8587e
aoc2024: Implement day2 solution
2024-12-02 20:13:37 +02:00
Bananymous
4149748766
Kernel: Add missing include in ACPI headers
2024-12-01 21:32:34 +02:00
Bananymous
783627c315
LibC: Fix time.h sigevent defition
2024-12-01 21:31:27 +02:00
Bananymous
1ff6aa1748
aoc2024: cleanup day1 solution
2024-12-01 07:58:40 +02:00
Bananymous
6662dc4a8d
aoc2024: fix full runner search path for solutions
2024-12-01 07:58:40 +02:00
Bananymous
d6b170e274
aoc2024: implement day1 solution
2024-12-01 07:41:25 +02:00
Bananymous
11cac7a646
aoc2024: prepare programming environment
2024-12-01 07:41:25 +02:00
Bananymous
9c2fcd745c
ports/doom: Fix patch calling exit() to actually do what it says
2024-12-01 02:28:50 +02:00
Bananymous
04f49a6819
LibC: Implement {,v}dprintf
2024-11-27 21:33:10 +02:00
Bananymous
d465ea2a67
LibC: Fix headers :)
2024-11-27 21:32:10 +02:00
Bananymous
1f5073d0ac
ports/doom: Allow doomgeneric to write directly to window framebuffer
...
This prevents an unnecessary `malloc` of the framebuffer and a copy
every frame.
2024-11-27 13:39:21 +02:00
Bananymous
8dbbbc1a1a
Kernel: Add command line option readonly
...
This prevents calls to write_sectors_impl and all dirty pages are always
kept in RAM.
2024-11-27 13:31:55 +02:00
Bananymous
f985673dc3
LibGUI: Add API to retrieve Window's underlying framebuffer
2024-11-27 13:29:42 +02:00
Bananymous
a6fc3cf7a6
Kernel: Clear AHCI pending interrupts
...
I have no idea why I did not have this in. All devices were just
constatly spamming interrupts like crazy :D
2024-11-26 01:39:11 +02:00
Bananymous
1941885cfd
Kernel: Disable USB Mass Storage writing until I get it fixed
...
This prevented real hw from running for over 10-20 seconds. When first
disk sync happens after 10 secods, USB storage would enter faulty state
and not allow any io operations.
I have no idea what the problem is. If I don't send Reset command to the
USB device writing seems to work fine. I also don't think its part of
the Reset process either as reading works just fine.
2024-11-26 01:01:25 +02:00
Bananymous
88a86a9927
Kernel: Fix Thread destruction after sys_exit
...
This had undefined behaviour as Thread's (Processes's) PageTable was
destroyed before Thread had the change to destroy its own stacks that
lived on the PageTable.
2024-11-26 00:59:34 +02:00
Bananymous
48e030bca3
Kernel: Make PageTable non-copyable and non-movable
...
Also PageTable destructor now verifies that is has allocated something
instead of assuming paddr of 0.
2024-11-26 00:58:35 +02:00
Bananymous
6f118c1be1
BAN: Make HashMap key move constructible
...
This allows using non-copyable types as keys
2024-11-26 00:57:11 +02:00
Bananymous
7316eb87b8
BAN: Add requires expression for BAN::Formatter
...
This allows seeing syntax errors before compilation :)
2024-11-26 00:55:58 +02:00
Bananymous
5376236ab6
BAN: Make ErrorOr non-copyable
...
This makes avoiding accidentals copies easier :)
2024-11-26 00:55:12 +02:00
Bananymous
0af80d48ee
BAN: Mark ByteSpan::slice as [[nodiscard]]
2024-11-26 00:54:35 +02:00
Bananymous
793c0368f2
Kernel: Refactor USB mass storage code
...
Also increment command timeout to 10 seconds so commands don't timeout
when they are not supposted to :)
2024-11-23 01:24:32 +02:00
Bananymous
076001462e
Kernel: Implement AML ConcatOp
2024-11-22 22:23:07 +02:00