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
Bananymous
d2e1d8ec13
Kernel: Implement AML NotOp
2024-11-22 22:22:44 +02:00
Bananymous
30ceaa6bef
Kernel: Implement AML ToHexStringOp
2024-11-22 22:22:27 +02:00
Bananymous
0247d47a3d
Kernel: Make USBMassStorage send_scsi_command templated
...
This allows passing ConstByteSpan when data will not be modified
2024-11-22 22:21:19 +02:00
Bananymous
480368c878
Kernel: Cleanup and fix xHCI interrupt handling
...
Always clear EventHandlerBusy bit and remove unnecessary nesting
2024-11-22 22:19:53 +02:00
Bananymous
c1d8790623
Kernel: Don't allow sending commands to halted xHCI
2024-11-22 22:19:29 +02:00
Bananymous
fb1ffec5bb
Kernel: Remove unused mutex from xHCI
...
This was preventing multiple xHCI controllers to do parallel device
initialization
2024-11-22 22:18:38 +02:00
Bananymous
1bdabe693f
Kernel: Preserve RsvdP bits in xHCI controller initialization
2024-11-22 22:18:09 +02:00
Bananymous
ce09f35275
Kernel: Fix PCI 64 bit MSI msg_data offset
2024-11-22 22:17:25 +02:00
Bananymous
40c13043b3
Kernel: Add support for scratchpad buffers in xHCI
2024-11-22 22:16:57 +02:00
Bananymous
e620068416
Kernel: Allow USB devices to handle STALL conditions
2024-11-22 22:15:22 +02:00
Bananymous
8e624ca85a
Kernel: Don't panic if uninitialized AHCI device gets an interrupt
2024-11-21 20:41:13 +02:00
Bananymous
c7afd46016
Kernel: Don't log spurious interrupts
...
Some PCs seem to be spamming a lot of int 7
2024-11-21 20:40:29 +02:00
Bananymous
3573656244
Kernel: Make PARTUUID matching case insensitive
...
Case sensitivity made it super annoying to work with :)
2024-11-21 20:39:27 +02:00
Bananymous
1de6de975a
Kernel: Rename cmdline UUID= to PARTUUID=
...
This makes more sense and behaves more like existing software.
2024-11-21 20:38:50 +02:00
Bananymous
15c55b8c7d
BuildSystem: Don't hardcode partition UUID
...
That was dumb :D I can just read the UUID parted assigned...
2024-11-21 20:37:42 +02:00
Bananymous
865061b492
Kernel: Temporary fix to make tmpfs more stable
...
whole TmpFS will have to be rewritten at some point :)
2024-11-21 18:13:26 +02:00
Bananymous
39313e1737
BuildSystem: Add option to boot using IDE or USB drives
2024-11-21 18:09:35 +02:00
Bananymous
70880636f4
Kernel: Implement basic USB Mass Storage support
...
I finally decided to do this :D
2024-11-21 18:08:37 +02:00
Bananymous
96a5ba0ed3
BuildSystem: Make root partition UUID fixed
...
This allows specifying root as UUID which makes booting nicer experience
on real hardware
2024-11-21 17:59:38 +02:00
Bananymous
8054f6c618
Kernel: Wait 10 seconds to find root device
...
If root device is initialized asynchronously it may not be ready when
main initialization thread is finished. This patch adds searching for
root device every 500 ms for 10 seconds.
2024-11-21 17:56:58 +02:00
Bananymous
658ea68d04
Kernel: Check max packet size for all USB devices
...
Spec says that this has to be done. Most cases can be probably skipped
as I used to do, but this is less error prone and adds practically no
overhead
2024-11-21 13:46:42 +02:00
Bananymous
5750f87396
Kernel: Fix unaligned access in xHCI controller initialization
2024-11-21 13:46:09 +02:00
Bananymous
1253e2a458
Kernel: Add support for bulk endpoints and update endpoint API
...
USB device now sets its own data buffers for IN/OUT endpoints. This
allows more customization and parallelism as data buffer does not have
to be shared.
2024-11-21 13:44:21 +02:00
Bananymous
857b3e92f8
Kernel: Support initializing USB 3 devices
2024-11-21 13:40:16 +02:00
Bananymous
8bf14d542e
Kernel: Move SCSI device rdev allocation out of ATA code
2024-11-21 13:36:59 +02:00
Bananymous
31d2a39540
BAN: Add default constructors for BAN::{Little,Big}Endian
2024-11-21 13:34:12 +02:00
Bananymous
97718b4046
Kernel: Don't launch init process twice
...
I had accidentrally left the old init process launch in when replacing
it with the new one.
2024-11-19 20:43:38 +02:00
Bananymous
c07fd265f0
Kernel: Add support for ATA CHS addressing and cleanup code
...
I thought that I had an PC without LBA support so I implement support
for CHS. Turns out that my ATA device detection was broken and was no
device on that port and initialize data was just garbage.
Now that I added CHS, I guess I should just keep it in :)
Both ATA read and write are now combined into a single function to avoid
code duplication.
2024-11-19 20:39:32 +02:00
Bananymous
1de50a2a94
Kernel: Improve ATA device initialization
...
This does better detection of empty ports and fixes floating bus
read-value from 0x00 to 0xFF.
2024-11-19 00:25:42 +02:00
Bananymous
627ca432cc
Kernel: Make PS/2 controller not hang if device keeps sending resend
2024-11-19 00:18:48 +02:00
Bananymous
f8ef11b4d2
BAN: Make PlacementNew.h only include <new> if it exists
...
Otherwise it will define the functions itself. This allows compiling
toolchain as stdlibc++ depends on BAN.
2024-11-19 00:16:44 +02:00
Bananymous
71563034a7
Kernel: Remove accidentally left debug prints
2024-11-18 03:45:07 +02:00
Bananymous
aaff5a65e1
Kernel/init: /dev/tty is now custom symlink to controlling terminal
...
kernel now passes the name of default console to init process so init
knows which file to open as stdio. before /dev/tty was referencing the
system wide current terminal which was inherited from cmdline. This
doesn't work anymore as we have pseudo terminals implemented that can
chage the current terminal during runtime :D
2024-11-17 22:38:52 +02:00
Bananymous
458a362f98
Kernel: Allow kernel to pass arguments to init process
2024-11-17 22:38:02 +02:00
Bananymous
36d07065fb
WindowServer: Optimize msync calls to synchronize less bytes
...
This *probably* makes framebuffer much faster :D Window server does not
have to do page aligned and page sized syncs which used way too many
pixels.
2024-11-17 20:15:28 +02:00
Bananymous
f206e72447
Kernel: Don't require msync addresses to be page aligned
...
Inodes implementing msync can require page aligned addresses, but are
also allowed to not :) This reduces sizes of framebuffer msyncs!
2024-11-17 20:15:28 +02:00
Bananymous
58e45fb394
Kernel: Print process name on exceptions if it is available
2024-11-17 20:15:28 +02:00
Bananymous
411f32c766
WindowServer: Make select timeout more precise to hit target FPS
...
Previously window server was only running at around 40 FPS while
targetting 60. This makes the select timeout properly sleep so that
target FPS is reached!
2024-11-17 20:15:28 +02:00
Bananymous
e1b82e4e43
WindowServer: Don't allow focusing unfocusable windows after closing
2024-11-17 20:15:28 +02:00
Bananymous
df613775b6
WindowServer: Alpha blend background image in fullscreen mode
2024-11-17 20:15:28 +02:00
Bananymous
5e8fdc997a
Kernel: Prevent userspace from overwriting CPU load memory
2024-11-17 20:15:28 +02:00
Bananymous
51bfe4252d
ports/doom: download doom1.wad to common directory between archs
2024-11-15 20:50:40 +02:00
Bananymous
c96aee5740
WindowServer: Make mod+f toggle focused window fullscreen state
2024-11-15 20:45:56 +02:00
Bananymous
1c08849667
WindowServer: Draw cursor in fullscreen mode
2024-11-15 20:45:01 +02:00
Bananymous
73349e5e75
WindowServer: don't set window location to (0,0) when fullscreening
2024-11-15 20:43:41 +02:00
Bananymous
74ae411b69
WindowServer: Skip invalidation on other windows in fullscreen mode
2024-11-15 20:42:07 +02:00
Bananymous
d458592fb1
WindowServer: Don't focus unfocusable windows on window creation
2024-11-15 20:41:42 +02:00
Bananymous
627c89a62d
LibGUI: Actually set window attributes when creating a window
2024-11-14 23:33:12 +02:00
Bananymous
0228cd4f31
Kernel: Increase userspace stack size and decrease kernel stack
...
Quake II needs a lot of stack, it was overflowing my 256 KiB stack so
this patch doubles that, so Quake II can run!
Also every thread had 256 KiB kernel stack. This is unnecessarily large
and now dropped to 32 KiB.
2024-11-14 21:03:04 +02:00
Bananymous
a859558840
LibGUI: Window Creation takes attributes as an argument
...
This reduces windows showing/moving once they are opened and setting
their attributes.
2024-11-14 20:57:34 +02:00
Bananymous
04eee2ea75
ports: Add quake2 port (+two years of banan-os!)
...
This patch adds software rendered quake2 port. I was supposted to push
this as two days ago as two years of banan-os, but I was too sick to do
any programming.
2024-11-14 12:47:30 +02:00
Bananymous
bda2c663da
WindowServer: Implement fullscreen windows
...
If window size does not match framebuffer size, window data will be
scaled to framebuffer using nearest sampling for best performance.
2024-11-13 19:10:15 +02:00
Bananymous
5e041e6e5a
WindowServer: Make all terminating signals exit cleanly
...
This allows window server to restore input handling to TTY if window
server crashes on page fault or some other unexpected exception.
2024-11-13 17:32:13 +02:00
Bananymous
d19264eea8
WindowServer: Implement partial window resizing
...
This patch adds support for client side resizing, so clients can request
the server to resize their windows. WindowServer will respond with
resize event when and if the resizing is complete.
2024-11-13 17:30:12 +02:00
Bananymous
64c52012df
Kernel: Fix MemoryRegion overlap comparison
...
This made some calls to `munmap` unmap extra regions.
2024-11-13 17:26:42 +02:00
Bananymous
7542e55cb2
LibC: Add option to debug userspace malloc family calls
2024-11-10 14:03:25 +02:00
Bananymous
6bd51ac345
LibGUI: Client window now exits if it loses connection from server
...
This can be prevented by installing callback for socket errors.
2024-11-10 14:02:23 +02:00