Bananymous
7691b019e2
LibC: Fix printf %c modifier for null byte
2025-05-28 03:10:01 +03:00
Bananymous
f55d6b11c5
LibC: Implement mblen
2025-05-28 03:10:01 +03:00
Bananymous
f52877abb4
LibC: Implement readv and writev
2025-05-28 03:10:01 +03:00
Bananymous
ee7c9b6731
LibC: Add simple getnameinfo
...
This doesn't actually do any name resolution but just formats input to
string.
2025-05-28 03:10:01 +03:00
Bananymous
4721344518
LibC: Don't fail getaddrinfo if node is null
2025-05-28 03:10:01 +03:00
Bananymous
e0d986dcd7
LibC: Add missing u_char and u_short types
2025-05-28 03:10:01 +03:00
Bananymous
c7be3dcd5b
LibC: Add timer{add,sub,clear,isset,cmp}
...
These are not POSIX but used by used by some ports
2025-05-28 03:10:01 +03:00
Bananymous
89c9bfd052
Kernel/LibC: Implement socketpair for UNIX sockets
2025-05-28 03:10:01 +03:00
Bananymous
12b93567f7
Kernel/LibC: Implement getpeername
2025-05-28 03:10:01 +03:00
Bananymous
2f37776614
Kernel: Notify epoll on new TCP connections
2025-05-28 03:10:01 +03:00
Bananymous
f778bca3f2
Kernel: Remove accidentally commited debug code :)
2025-05-28 03:10:01 +03:00
Bananymous
a945d19750
Kernel: Partially fix PCI PIN interrupt routing
...
Don't fail early if the first device is not the one we are looking for
2025-05-28 03:10:01 +03:00
Bananymous
7f04b2c96c
Kernel: Fix E1000 interrupt handling
...
E1000 does not support MSI-X and thus does not generate RxQ0 interrupts.
2025-05-28 03:10:01 +03:00
Bananymous
8aa4e4ff1e
LibC: Implement clearenv
...
This is GNU extension but seems nice to have :D
2025-05-28 03:10:01 +03:00
Bananymous
7eade002a7
LibC: Fix mktime
...
yday calculation was off so results were always off for march-december
2025-05-28 03:10:01 +03:00
Bananymous
a8f8d27f4e
LibC: Implement basic tzset()
...
I still don't have timezone support so this just sets values to UTC
2025-05-28 03:10:01 +03:00
Bananymous
356935bd4f
LibC: Fix strtou{,l,ll} for negative values
...
Also set endp if base is invalid
2025-05-28 03:10:01 +03:00
Bananymous
bce3dd045f
LibC: Fix strncat return value
2025-05-28 03:10:01 +03:00
Bananymous
79a2b84c81
Kernel: Fix process exit when there are multiple threads
2025-05-28 03:10:01 +03:00
Bananymous
44b762f916
Kernel/LibC: Implement pwrite and make pread non-locking
2025-05-28 03:10:01 +03:00
Bananymous
5d80c880c8
LibC: Fix FILE buffering once again :D
2025-05-28 03:10:01 +03:00
Bananymous
b907263f35
LibC: Implement basic tmpfile
2025-05-28 03:10:01 +03:00
Bananymous
0f0accf82c
LibC: Don't use false in pthread initializers
2025-05-28 03:10:01 +03:00
Bananymous
ddcf414107
LibC: Fix netinet/in.h and arpa/inet.h definitions
2025-05-28 03:10:01 +03:00
Bananymous
6be3b1d7f2
commit from banan-os :D
2025-05-27 23:57:43 +00:00
Bananymous
0e0d7016b3
Kernel: Rename has_hangup -> has_hungup
2025-05-17 12:39:23 +03:00
Bananymous
553c76ab0f
Kernel: Add locking to inode's epoll list
...
This was prone to crashing :)
2025-05-17 12:36:36 +03:00
Bananymous
b90cfa8e5c
test-window: poll events instead of sleeping
2025-05-13 10:19:13 +03:00
Bananymous
e7f0cd0c4b
stat: Fix return value when one of stats fails
2025-05-13 10:19:13 +03:00
Bananymous
0661b339a0
test-tcp: Fix name resolution
...
Comparison was the wrong way around so hostname lookup always failed.
2025-05-13 10:19:13 +03:00
Bananymous
d1bb72f6fb
Kernel: Don't allow CPU load printing underflow
2025-05-13 10:19:13 +03:00
Bananymous
1bcd1edbf5
Kernel/LibC: Implement basic epoll
...
This implementation is on top of inodes instead of fds as linux does it.
If I start finding ports/software that relies on epoll allowing
duplicate inodes, I will do what linux does.
I'm probably missing multiple epoll_notify's which may cause hangs but
the system seems to work fine :dd:
2025-05-13 10:18:05 +03:00
Bananymous
143a00626b
Kernel: Fix fork cmdline copying and copy environ
2025-05-13 10:16:21 +03:00
Bananymous
0eb981f51c
Kernel: Fix Random.h includes
2025-05-13 10:16:21 +03:00
Bananymous
6cc01349f7
Kernel: Fix unblocking recv through read
2025-05-13 10:16:21 +03:00
Bananymous
a7bd4acd46
Kernel: Remove static variables from virtual tty
2025-05-13 10:16:21 +03:00
Bananymous
8e0a56b49a
Kernel: Implement loopback network interface
2025-05-13 10:16:21 +03:00
Bananymous
a8844ddd28
WindowServer: Send mouse release to same window as mouse press
2025-05-13 10:16:21 +03:00
Bananymous
c18fefd5f3
BuildSystem: Cleanup cmake library linking
2025-05-07 18:42:37 +03:00
Bananymous
3040940e35
ports/tcc: Fix 32 bit build and add version name
...
tcc was using "Linux" for machine name in version string if it was not
explicitly specified.
2025-05-07 18:33:39 +03:00
Bananymous
df3d2d57c3
ports/quake2: Update to new LibGUI interface
2025-05-07 17:23:15 +03:00
Bananymous
92d26f2216
ports/doom: Update to new LibGUI interface
2025-05-07 17:21:29 +03:00
Bananymous
0380c68f89
ports/tinygb: Update to new LibGUI interface
2025-05-07 17:21:29 +03:00
Bananymous
2a6dc6a7b7
LibGUI: Add missing Texture files
2025-05-07 17:21:29 +03:00
Bananymous
40617f0d5c
WindowServer: Make mod+d open program launcher
2025-05-06 00:42:15 +03:00
Bananymous
09745a7835
userspace: Implement program launcher
...
This is kinda useless as I only have Terminal and test-window
implemented. Also the code is really messy as I don't have GUI widgets.
2025-05-06 00:41:22 +03:00
Bananymous
57f6f50939
Terminal: Implement dumb font bolding
...
This is just drawing character twice at one pixel offset
2025-05-05 23:09:53 +03:00
Bananymous
f959905adf
LibGUI: Rework window rendering
...
Abstract drawing surface to Texture. All windows now contain a texture
matching its size.
2025-05-05 23:08:01 +03:00
Bananymous
f78c7e7926
LibGUI: Add API to block until window events are available
2025-05-05 22:33:00 +03:00
Bananymous
96496da0ab
Kernel: Allow USB mouse to send extra2 button events
2025-05-05 22:32:26 +03:00
Bananymous
2dc4733ac1
test: improve pthread test
2025-05-05 19:21:47 +03:00
Bananymous
f14774d034
libc: fix tmpnam when no name is found
2025-05-05 19:17:16 +03:00
Bananymous
c08c63f420
libc: reorder destructor and fflush in exit
2025-05-05 19:16:52 +03:00
Bananymous
eb79c6c47c
mkdir: Add -p option
2025-05-05 19:16:29 +03:00
Bananymous
bf1cbb4cde
Terminal: Update terminal size and send SIGWINCH on resize
2025-05-05 19:09:21 +03:00
Bananymous
592675022e
Kernel: Allow tcgetpgrp on pseudo terminal masters
2025-05-05 19:09:01 +03:00
Bananymous
b2e10d7e6e
Kernel: Remove unnecessary locks
2025-05-05 19:08:57 +03:00
Bananymous
0689954433
Terminal: Set minimum size to 8x2 cells
2025-05-05 18:20:22 +03:00
Bananymous
5c37f198cb
WindowServer/LibGUI: Allow windows to set minimum size
2025-05-05 18:19:59 +03:00
Bananymous
3b02a9d4fe
WindowServer: Resize from closest corner
2025-05-05 18:19:19 +03:00
Bananymous
c9057aa498
WindowServer: Cleanup code and resize on fullscreen
2025-05-05 16:42:15 +03:00
Bananymous
2b0d198b05
Terminal: Allow resizing of the terminal
2025-05-05 03:15:30 +03:00
Bananymous
7798145c74
WindowServer: Implement window resizing
...
windows can now set resizable attribute which allows window server to
resize them
2025-05-05 03:14:50 +03:00
Bananymous
fcfadd7c74
LibGUI: Add background color for windows
...
This is used when resizing a window to fill the empty space
2025-05-05 03:12:31 +03:00
Bananymous
c0181820a9
ports/tinygb: Set title like sdl frontend does
2025-05-05 01:10:41 +03:00
Bananymous
76d4e6bd18
LibGUI: Add support for changing window title
2025-05-05 01:10:05 +03:00
Bananymous
ccb81de85d
snake: Use box drawing characters
...
This makes it look much better.
Also fix bug with apples generating on top of snake's tail
2025-05-05 00:30:58 +03:00
Bananymous
82f4975f45
LibC: Save callee saved registers on setjmp
2025-05-04 13:54:35 +03:00
Bananymous
d457e6ad6a
LibC: Fix printf e/E modifier for negative exponents
2025-05-04 13:42:17 +03:00
Bananymous
abf7c8e68a
LibC: Implement difftime
2025-05-04 13:42:17 +03:00
Bananymous
1a38d0c31e
LibC: Add g/G modifiers to printf
2025-05-04 13:42:17 +03:00
Bananymous
9ff9d679e9
Kernel: Fix text mode cursor
...
Apparently text mode renders cursor in the *foreground* color. My
current clear function used the same color for foreground and background
making the cursor effectively invisible.
Also cursor hiding is now done by moving the cursor off bounds (0, height)
some website I read said this to be valid even on VGA compatible cards
without disable bit.
http://www.osdever.net/FreeVGA/vga/textcur.htm
2025-04-25 02:31:33 +03:00
Bananymous
9f3f8f950a
Kernel: Add better panic message for failed shutdown
...
ACPI shutdown does not work on the web emulator and running `poweroff`
crashes on `ASSERT_NOT_REACHED()`.
2025-04-25 01:52:33 +03:00
Bananymous
006a196e4a
LibC: optimize strpbrk, str{,c}spn, strtok{,_r}
...
These matches are now detected with bitmasks instead of looping over the
second string
2025-04-24 01:39:49 +03:00
Bananymous
418678466c
Kernel: Fix text mode palette
...
ANSI and text mode color indices are not in the same order
2025-04-23 23:07:47 +03:00
Bananymous
9f4cb5c4dd
Kernel: Make pseudo terminals not overwrite old data
...
If pseudo terminal buffer was filled, old implementation would overwrite
old data. This is bad if producer is capable of producing more data than
consumer can handle.
2025-04-23 22:03:53 +03:00
Bananymous
73f9de6635
Terminal: Add support for ANSI SGR 8bit and 24bit
2025-04-23 22:03:53 +03:00
Bananymous
12b9c82086
Terminal: Don't wrap cursor right after x == cols
...
This prevents scrolling when bottom right scroll is written to
2025-04-23 22:03:53 +03:00
Bananymous
a8edb8870e
Kernel: Add support for 8bit and 24bit ANSI SGR
2025-04-23 22:03:53 +03:00
Bananymous
dabc3c6cc4
Kernel: Don't wrap cursor immediatly at cols()
...
This prevents unwanted scrolling when writing to bottom right cell
2025-04-23 22:03:53 +03:00
Bananymous
cc7c1ad30d
Kernel: Add per terminal palette for TerminalDriver
...
This allows better color approximation on text mode and in future will
allow user to possibly change the palette
2025-04-23 18:44:37 +03:00
Bananymous
4d840a8d9a
BAN: Make Array more constexpr
2025-04-23 18:40:20 +03:00
Bananymous
95a80bfe81
ports: Add tinygb port
...
This is awesome!
2025-04-23 13:19:28 +03:00
Bananymous
53e9eab0cd
ports/tcc: Fix building on 32 bit
2025-04-23 08:43:27 +03:00
Bananymous
35b3c3c98c
Kernel: Fix scheduler load balancing
...
I was not updating the current queue of the thread which lead to blocked
threads think they were in run queue
2025-04-23 08:09:51 +03:00
Bananymous
20e17a28cf
Kernel: Fix \b handling
...
Don't clear the character, only move cursor backwards
2025-04-23 06:33:11 +03:00
Bananymous
28bf2d6374
Kernel/Terminal: Add support for ANSI DSR
2025-04-23 06:14:56 +03:00
Bananymous
8a00b53050
Kernel/Terminal: Fix ANSI SGR m for multiple values
2025-04-23 05:29:22 +03:00
Bananymous
8834241417
LibC: Fix scanf %n modifier
...
Old code was always returning off by one
2025-04-22 09:55:38 +03:00
Bananymous
96740d6be4
LibC: Make inet_addr spec compliant
...
I was not doing any error checking, basically i validated anything that
started with atleast a single digit.
2025-04-22 09:40:46 +03:00
Bananymous
b853d29992
Kernel: Fix unix domain socket close detection
2025-04-22 08:36:44 +03:00
Bananymous
33a0f562d3
resolver: Add support for CNAME
...
Also rework resolver's send format and convert test-tcp and nslookup to
use getaddrinfo
2025-04-22 08:36:44 +03:00
Bananymous
f8e3ae0525
Kernel: Fix deadlock caused by multithreading
...
This allows multiple threads to concurrently call the most common
blocking syscalls:
- read
- write
- accept
- connect
- sendto
- recv
- pselect
This prevents a dead lock when for example process is waiting on a pipe,
but unable to write to it since process is locked.
This is the beginning of starting to remove processes own lock from
syscall and locking only necessary parts.
2025-04-22 04:51:53 +03:00
Bananymous
c790bad667
Kernel: Make OpenFileDescriptorSet thread safe
...
Also this allows concurrent calling of read/write/send/recv
2025-04-22 04:31:18 +03:00
Bananymous
d54489bbcb
Kernel: Implement MemoryRegion pinning
...
This allows process to pin a MemoryRegion into users memory space for
syscall duration without allowing user to munmap the region.
2025-04-22 04:30:07 +03:00
Bananymous
808c97020a
Kernel/LibC: Implement SA_RESTART
...
I have been thinking how to do this for a long time but I finally
figured out a semi-clean way
2025-04-22 02:42:44 +03:00
Bananymous
34e680d792
ports/ncurses: Set some needed environment variables
...
ncurses depends on these being set to function properly
2025-04-22 01:56:34 +03:00
Bananymous
32d543943b
ports: Add lynx port
...
I have had this for a while but apparently never commited :D
2025-04-22 01:44:49 +03:00
Bananymous
2632507980
ports/ca-certificates: Add symlink to /etc/ssl/cert.pem
...
Some ports try to use this file
2025-04-22 01:44:02 +03:00
Bananymous
f467a9a309
resolver: Resolve hostname to loopback address
...
We don't currently support loopback adapters, but some ports were trying
to resolve it.
2025-04-22 00:48:26 +03:00