Andreas Kling
e383bc6fd8
LibC: Oops, forgot to commit sigsuspend() prototype.
2019-05-21 12:31:14 +02:00
Andreas Kling
3c7b46a85a
LibC: Add htonl() and ntohl().
2019-05-21 02:22:21 +02:00
Andreas Kling
02033873b7
LibC: Add sigsuspend() stub.
2019-05-21 02:22:02 +02:00
Andreas Kling
ae470ec955
Kernel: Add getpeername() syscall, and fix getsockname() behavior.
...
We were copying the raw IPv4 addresses into the wrong part of sockaddr_in,
and we didn't set sa_family or sa_port.
2019-05-20 20:33:03 +02:00
Andreas Kling
b3a1671f1a
Kernel: Add support for recv() with MSG_DONTWAIT.
...
Passing this flag to recv() temporarily puts the file descriptor into
non-blocking mode.
Also implement LocalSocket::recv() as a simple forwarding to read().
2019-05-20 03:47:02 +02:00
Andreas Kling
5b6e66195b
LibC: Add an h_addr macro for old code that doesn't know about h_addr_list.
2019-05-19 19:55:49 +02:00
Andreas Kling
212a263f0a
Kernel+LibC: Implement getsockname() syscall.
2019-05-19 19:55:27 +02:00
Andreas Kling
0eb788d641
LibC: Add stub for fsync().
2019-05-19 19:54:20 +02:00
Andreas Kling
189b342e6f
LibC: Add mmap_with_name() that names the allocation immediately.
...
This allows us to skip the separate call to set_mmap_name() in code that
we control, e.g malloc() and GraphicsBitmap.
2019-05-19 15:54:56 +02:00
Andreas Kling
29863d3815
LibC: unsetenv() should take a const char*, not a char*.
2019-05-19 15:19:48 +02:00
Andreas Kling
f5234660f6
malloc: Use a Vector with inline capacity for the big block recyclers.
2019-05-18 22:26:01 +02:00
Andreas Kling
f015798af9
LibC: Implement clock() and add CLOCKS_PER_SEC define.
2019-05-17 20:19:03 +02:00
Robin Burchell
77dfd419e9
LibCore: Move AK/ArgsParser to LibCore/CArgsParser
...
Also rename the classes to match LibCore naming style.
This means that it's no longer incorrectly linked into LibC and Kernel.
2019-05-17 15:49:37 +02:00
Andreas Kling
c081aae9b5
LibC: Rename beep() to sysbeep() to avoid clashing with curses.
2019-05-17 14:32:53 +02:00
Andreas Kling
e20aecefba
LibC: Don't clobber errno in dbgprintf().
2019-05-16 16:24:22 +02:00
Robin Burchell
abb7455163
LibC/Shell: Add unsetenv(), and unset builtin calling it in Shell.
2019-05-16 14:32:09 +02:00
Robin Burchell
b2dd12daac
LibC: Change putenv (and getenv) to not copy, but directly return the environ values.
...
This is in keeping with how putenv should function. It does mean that
the shell's export command now leaks, but that's not a difficult fix.
Contributes to #29 .
2019-05-16 14:32:09 +02:00
Robin Burchell
6f73a549fa
LibC: Add struct timespec to time.h
2019-05-16 14:03:49 +02:00
Robin Burchell
4dad585609
LibC: Allow {AF,PF}_UNIX as well as {AF,PF}_LOCAL
...
Seems that these are equivilent. POSIX specifies _LOCAL, but a lot of
software uses _UNIX.
2019-05-16 14:03:49 +02:00
Robin Burchell
cf41b0ef17
LibC: Add INET_ADDRSTRLEN define
2019-05-16 14:03:49 +02:00
Robin Burchell
619489da62
LibC: Define a SOMAXCONN value in socket.h
...
No idea if this is sensible; but some software will look for it.
2019-05-16 14:03:49 +02:00
Robin Burchell
f0f5dd6cef
LibC: Implement str{n}casecmp
2019-05-16 14:03:49 +02:00
Andreas Kling
3cba2a8a78
Kernel: Add a beep() syscall that beeps the PC speaker.
...
Hook this up in Terminal so that the '\a' character generates a beep.
Finally emit an '\a' character in the shell line editing code when
backspacing at the start of the line.
2019-05-15 21:40:41 +02:00
Andreas Kling
5f7bb9d072
malloc: Make it possible to recycle big allocation blocks as well.
...
This patch makes us recycle up to 8 blocks of 4KB size. This should
probably be extended to handle other sizes.
2019-05-14 16:38:06 +02:00
GuillaumeGas
801d6f572a
Feature/pidof ( #31 )
...
* Added killall command
* Fixed feedbacks of awesomekling
* Implemented pidof program and helper to parse arguments called ArgsParser.
* Fixed feedbacks in pidof implem.
Fixes #26
2019-05-13 14:31:23 +02:00
Andreas Kling
43604bf71a
LibC+Shell: Make system() actually work.
...
system() will now fork off a child process and execute the command via
/bin/sh -c. There are probably some things to fix here, but it's a start.
2019-05-13 04:52:55 +02:00
Andreas Kling
c1b025b5a6
LibC: Oops, I forgot to commit sys/uio.{cpp,h} yesterday.
2019-05-10 17:38:51 +02:00
Andreas Kling
99aead4857
Kernel: Add a writev() syscall for writing multiple buffers in one go.
...
We then use this immediately in the WindowServer/LibGUI communication in
order to send both message + optional "extra data" with a single syscall.
2019-05-10 03:19:25 +02:00
Andreas Kling
81a280da87
Toolchain: Make sure everything ends up in the right place in Root/
2019-05-08 15:50:24 +02:00
Andreas Kling
8b249bd09b
Kernel+Userland: Implement mknod() syscall and add a /bin/mknod program.
2019-05-03 22:59:58 +02:00
Andreas Kling
9f633a1871
LibC: Add strcoll() and strxfrm().
...
These are obviously not locale-aware implementations, but rather really just
strcmp() and strcpy() with different names. This makes vim build and run :^)
2019-05-03 18:17:33 +02:00
Andreas Kling
66e401d668
LibC: Tune the number of ChunkedBlocks we keep around empty.
...
At the moment, both mmap() and munmap() are kind of slow. Compiling with GCC
was suffering quite badly from munmap() slowness, so let's keep a few more
of the ChunkedBlocks around after they are empty, to avoid having to munmap.
2019-05-02 18:11:36 +02:00
Andreas Kling
b4e7925e31
LibC: Move full ChunkedBlocks to a separate list in the allocator.
...
This way we only check actually usable blocks when trying to satisfy a new
allocation request.
2019-05-02 17:06:05 +02:00
Andreas Kling
60023ff70b
LibC: free() should move kept empty ChunkedBlocks to the end of the list.
...
This ensures that we continue allocating from partially-used blocks until
they are full.
2019-05-02 16:35:57 +02:00
Andreas Kling
658fff195c
LibC: free() should return free blocks back to the operating system.
...
Okay fine, I'll give them back. But we'll keep 4 blocks per size class on
hand, to reduce churn.
2019-05-02 15:58:10 +02:00
Andreas Kling
2dc72bb297
LibC: Improve malloc() mmap names somewhat.
2019-05-02 02:58:06 +02:00
Andreas Kling
4291e96991
LibC: Implement a simple freelist-based malloc() with size classes.
...
It's not thread-safe yet, and there is lots of room for improvement.
Still it's a lot faster than the first-fit bitmap-based one it replaces.
2019-05-02 02:35:29 +02:00
Andreas Kling
98a0e10319
LibC: Log all malloc() calls if LIBC_LOG_MALLOC is set.
...
This makes it easier to quickly determine if a userspace process is getting
bogged down in memory allocation.
2019-04-30 01:22:18 +02:00
Andreas Kling
80850e274d
LibC: Oops, exit_thread() never returns.
2019-04-29 15:18:21 +02:00
Andreas Kling
d07be1087a
Kernel+LibC: Add exit_thread() syscall.
2019-04-29 15:17:20 +02:00
VAN BOSSUYT Nicolas
3761bc3ed7
Toolchain: The toolchain script is now working 🎉
2019-04-29 13:12:20 +02:00
VAN BOSSUYT Nicolas
4977fd22b8
Toolchain: Useit.sh finish and added an install target for the libc's Makefile and a bit of ground work for a gcc port
2019-04-29 13:12:20 +02:00
Andreas Kling
95ddca8a52
LibC: Make the malloc()/free() scrubbing runtime optional (default on.)
...
Memory returned by malloc() is normally memset with 0x85.
Memory passed to free() is normally memset with 0x82.
These behaviors can now be disabled by setting one or both of
LIBC_NOSCRUB_MALLOC and LIBC_NOSCRUB_FREE in your environment. :^)
2019-04-27 21:19:56 +02:00
Andreas Kling
f80244399d
LibC: Add dummy pthread.h for GCC build.
2019-04-27 21:19:18 +02:00
Andreas Kling
d3fb0a56ed
LibC: Make fwrite() buffered.
...
This is a really naive implementation that makes fwrite() call fputc()
internally, but it still performs a lot better due to avoiding the write()
syscall every time.
2019-04-27 17:32:47 +02:00
Andreas Kling
100cb2a237
LibC: Various stdio correctness fixes.
2019-04-27 16:19:11 +02:00
Andreas Kling
490e89e240
LibC: Add execvpe() and make execvp()'ed children inherit environment.
2019-04-26 03:16:26 +02:00
Andreas Kling
8effdc807a
LibC: Update stdio stream error state in more places.
2019-04-26 00:41:37 +02:00
Andreas Kling
0c898e3c2c
Put assertions behind a DEBUG flag to make it easy to build without them.
2019-04-23 21:52:02 +02:00
Andreas Kling
58240fdb33
Do a pass of compiler warning fixes.
...
This is really making me question not using 64-bit integers more.
2019-04-23 13:00:53 +02:00