Commit Graph

2627 Commits

Author SHA1 Message Date
6f9dc2a9b8 Kernel/LibC: Implement fchdir, cleanup chdir and getcwd 2025-04-19 21:28:31 +03:00
7edfae8583 Shell: Cleanup export builtin 2025-04-19 21:23:26 +03:00
28275d86ea LibC/Shell: set PWD env in Shell, not libc
I have no idea why I was doing it in the libc
2025-04-19 21:16:11 +03:00
2d19b5074e LibC: Implement some missing wchar functions 2025-04-19 20:56:41 +03:00
e62cc17797 LibC: Use nl_langinfo for strings in strftime 2025-04-19 20:03:56 +03:00
407eed212a LibC: Implement nl_langinfo
All values are from POSIX locale except CODESET which can be "UTF-8"
depending on the current locale
2025-04-19 20:02:01 +03:00
12d47858c1 LibC: Fix overflow error in fread and fwrite 2025-04-19 18:42:12 +03:00
3d34e6e6d9 ports: ncurses add support for shared libraries 2025-04-19 05:55:16 +03:00
dc188e601a LibC: Add definition for LOG_UPTO 2025-04-19 02:48:21 +03:00
8a2df23260 LibC: Define RLIM_NLIMITS 2025-04-19 02:34:56 +03:00
46079a8612 LibC: Implement no-op posix_madvice
Also add non-posix prefixed definitions
2025-04-19 02:07:45 +03:00
201d752850 Kernel: Allow pipe to write partial data
This allows potential blocking
2025-04-19 00:39:42 +03:00
63b3d9875d Kernel: Fix Thread::block_with_eintr* functions
I was using wrong block function, `block_with_timeout` instead of
`block_with_wake_time`. This caused functions to block way too long and
caused a lot of hangs.
2025-04-19 00:39:42 +03:00
8cd2d772b0 Shell: Print error if execv fails 2025-04-19 00:39:42 +03:00
2ff3f88b4d LibC: Add support for shebangs
I implemented shebangs in userspace as I don't really see the benefit of
doing it in kernel space. Only benefit I can think of is executing non
readable scripts but I don't really see the benefit in that.
2025-04-19 00:39:42 +03:00
ab4dd6a268 LibC: Add ARG_MAX constant 2025-04-19 00:39:42 +03:00
0094efc7f4 LibC: Fix execl* memory leak on error 2025-04-18 20:54:53 +03:00
d73a270fb1 Shell: Save and restore stdin flags after child returns
If child makes stdin nonblocking, Shell now restores it back to "normal"
flags
2025-04-18 18:26:09 +03:00
d9647868cc Terminal: Fix ANSI SGR color invert 2025-04-18 17:32:24 +03:00
85505b0482 Kernel: Fix ANSI SGR color invert 2025-04-18 17:31:46 +03:00
703c1a485c Kernel: Fix Ext2 bug for big files
My ext2 implementation was reading wrong blocks for very big block
indices.
2025-04-18 04:17:31 +03:00
9258c73484 Kernel: Optimize VTTY cursor rendering
cursor is now only updated once after all consecutive `putchar`s are
handled.
2025-04-18 03:55:56 +03:00
6858546ce9 Kernel: Fix rendering bugs with framebuffer cursor 2025-04-18 03:54:17 +03:00
7c6966a9c4 Kernel: Add support for text mode terminal
This probably won't be used at all but it was so simple and made me do
really nice refactorings so i decided to add it :)
2025-04-18 02:45:06 +03:00
40d1d20cd6 Kernel: Move cursor handling from TTY -> TerminalDriver 2025-04-18 02:43:41 +03:00
c0942d78cb Kernel: Fix TTY ANSI ? handling 2025-04-18 02:42:49 +03:00
cef8779bf7 Kernel: Improve error handling when setting TTY font 2025-04-18 02:42:24 +03:00
d6667844de Kernel: Fix fcntl F_SETFL and masking 2025-04-18 02:37:44 +03:00
4cdf218145 Kernel: Don't allow opening file with path "" 2025-04-18 02:37:16 +03:00
994713d04c Kernel: Implement FramebufferDevice::get_pixel() 2025-04-18 02:35:28 +03:00
554b13ac50 Kernel: Restructure terminal initialization
This is still very ugly and will be rewritten in the future :D
2025-04-18 01:19:59 +03:00
439fb57d88 Kernel: Fix ANSI CSI @ and b for VirtualTTY 2025-04-17 23:24:17 +03:00
4409d0f03f Terminal: Implement ANSI CSI A, B, b, d, @ 2025-04-17 23:16:22 +03:00
ebd00b1eb2 Terminal: Implement ANSI SGR 10, 39, 49 2025-04-17 23:15:44 +03:00
3ca0ef1583 LibGUI: Add copy_rect API
This allows moving parts of window around
2025-04-17 23:14:46 +03:00
88abbd90dc LibC: Fix strncat
strncat was using strncpy internally which nullpadded dest until n bytes
were written.

also there was no terminating null byte added if src was shorter than n
bytes
2025-04-17 23:12:40 +03:00
bdbde25784 LibC: Rewrite environ handling
environ is only allocated on heap when you insert new variables.

environment variables are only `free`'d if they are `malloc`'d by libc
2025-04-16 21:08:01 +03:00
ee9e941a56 LibC: Implement getitimer 2025-04-15 23:35:25 +03:00
ac90800c3c Kernel/LibC/DynamicLoader: Implement thread local storage
For some reason this does not work on 32 bit version, so it is disabled
on that platform. I'll have to look into it later to find the bug :)
2025-04-15 23:33:39 +03:00
08f5833ca8 Kernel/LibC: Implement pthread_attr_init 2025-04-15 23:31:17 +03:00
4bcd3ed86f Kernel: Start working on TLS, add SYS_{SET,GET}_TLS 2025-04-15 23:31:17 +03:00
254fd80088 DynamicLoader: Cleanup and prepare for TLS 2025-04-15 23:31:17 +03:00
d7e6df1e44 LibELF: Add definitions for ELF TLS values 2025-04-15 23:31:17 +03:00
a933fabb86 Kernel: Define constant USERSPACE_END
This should be used for userspace generic allocations. Currently I used
KERNEL_OFFSET, but I want to limit userspace to the actual lower half of
the address space
2025-04-15 23:31:17 +03:00
36baf7b0af Kernel/LibC/DynamicLoader: Update process start ABI
We now use SysV abi for process startup
2025-04-15 23:05:52 +03:00
e6026cb0b8 DynamicLoader: Handle circular dependencies 2025-04-15 23:05:52 +03:00
cc2b4967ea LibC: Make malloc thread safe with pthread_spinlock 2025-04-15 23:05:52 +03:00
cf59f89bfb LibC: Rework constructor/destructor calling
constructors are now called in _init_libc instead of crt0

destructors are now registered with atexit() instead of called manually
2025-04-15 23:05:52 +03:00
066ed7e4a1 LibC: merge atexit and __cxa_atexit into common function 2025-04-15 23:05:52 +03:00
4f49d60e4a DynamicLoader/LibC: lazy malloc environ
This allows DynamicLoader to just set the value of global environ symbol
without libc needing to malloc it at startup
2025-04-15 23:05:52 +03:00