summaryrefslogtreecommitdiff
path: root/LibC
AgeCommit message (Collapse)Author
2019-03-02Kernel+Userland: Add symlink() syscall and add "-s" flag to /bin/ln.Andreas Kling
It's now possible to create symbolic links! :^) This exposed an issue in Ext2FS where we'd write uninitialized data past the end of an inode's content. Fix this by zeroing out the tail end of the last block in a file.
2019-03-01Kernel+Userland: Implement fchmod() syscall and use it to improve /bin/cp.Andreas Kling
/bin/cp will now copy the permission bits from source to destination. :^)
2019-02-27Add chown() syscall and a simple /bin/chown program.Andreas Kling
2019-02-27More compat work towards porting vim.Andreas Kling
It now builds and runs in the small-featureset configuration. :^)
2019-02-26LibC: Make errno codes be #defines instead of enum values.Andreas Kling
It turns out that a lot of 3rd party software does things like: #ifdef EINTR ... #endif This won't work if EINTR is an enum. So much for that nice idea.
2019-02-26LibC: fgets() should return null on 0-length EOF reads.Andreas Kling
2019-02-26Compat work towards porting vim.Andreas Kling
2019-02-26Compat work towards making bash-5.0 build with less patches.Andreas Kling
Hacked implementations of sigsetjmp() and siglongjmp(). I didn't know about these APIs until just now, but I hope I got them right.
2019-02-26LibC: Install crt0.o into /usr/libAndreas Kling
2019-02-26More compat work. Rename libraries from LibFoo.a => libfoo.aAndreas Kling
This makes it more straightforward to build a cross-compiler toolchain. Also move math stuff from LibC to LibM.
2019-02-26More compat work.Andreas Kling
Move syscall to int 0x82 since using int 0x80 was kinda prone to fork bombs when building things on Linux. :^)
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25Kernel: Add KResult and KResultOr<T> classes.Andreas Kling
The idea here is to combine a potential syscall error code with an arbitrary type in the case of success. I feel like this will end up much less error prone than returning some arbitrary type that kinda sorta has bool semantics (but sometimes not really) and passing the error through an out-param. This patch only converts a few syscalls to using it. More to come.
2019-02-25Fix a bunch of compiler warnings. Not all, but a lot.Andreas Kling
2019-02-25Some compat work towards making GCC's libstdc++ build.Andreas Kling
2019-02-24LibC: A bunch of compat work towards porting GCC.Andreas Kling
2019-02-23LibC: Enough compat work to make binutils-2.32 build and run.Andreas Kling
2019-02-22Move over to building all of userspace with i686-pc-serenity-g++.Andreas Kling
2019-02-22Switch over to building everything with i686-elf-g++.Andreas Kling
2019-02-22LibC: Tidy up _start a bit and rename compilation unit to "crt0"Andreas Kling
2019-02-22Kernel: Pass process arguments directly on the stack.Andreas Kling
Get rid of the convoluted get_arguments and get_environment syscalls. This patch also adds a simple /bin/env that just prints its environment.
2019-02-21Kernel+Userland: Implement setuid() and setgid() and add /bin/suAndreas Kling
Also show setuid and setgid bits in "ls -l" output. :^)
2019-02-21Kernel: Add link() syscall to create hard links.Andreas Kling
This accidentally grew into a little bit of VFS cleanup as well. Also add a simple /bin/ln implementation to exercise it.
2019-02-20Support resizing the Terminal app.Andreas Kling
I set it up so that TIOCSWINSZ on a master PTY gets forwarded to the slave. This feels intuitively right. Terminal can then use that to inform the shell or whoever is inside the slave that the window size has changed. TIOCSWINSZ also triggers the generation of a SIGWINCH signal. :^)
2019-02-17Prune compiler flags a bit. Let's go with -march=i686 for now.Andreas Kling
2019-02-17Add ability to switch video modes from the system menu.Andreas Kling
I had to change PhysicalPage around a bit for this. Physical pages can now be instantiated for any arbitrary physical address without worrying that such pages end up in the kernel page allocator when released. Most of the pieces were already in place, I just glued everything together.
2019-02-17Move WindowServer to userspace.Andreas Kling
This is a monster patch that required changing a whole bunch of things. There are performance and stability issues all over the place, but it works. Pretty cool, I have to admit :^)
2019-02-16LibC: mmap() should not interpret high addresses as errors, oops!Andreas Kling
2019-02-16Kernel: Add a simple shared memory API for two processes only.Andreas Kling
And use this to implement shared bitmaps between WindowServer and clients.
2019-02-15LibC: The standard C library needs to be able to build as pure C.Andreas Kling
Looks like we can't use those comfy C++ attributes in this code then.
2019-02-15LibC: Fix busted realloc() implementation.Andreas Kling
2019-02-15Enable -Wimplicit-fallthrough.Andreas Kling
2019-02-15LibC: Actually, malloc() can return null so don't lie about that.Andreas Kling
2019-02-15Use modern C++ attributes instead of __attribute__ voodoo.Andreas Kling
This is quite nice, although I wish [[gnu::always_inline]] implied inline. Also "gnu::" is kind of a wart, but whatcha gonna do.
2019-02-14Kernel: More work on sockets. Fleshing out connect().Andreas Kling
2019-02-14LibC: Add socket(), bind(), listen(), accept() and connect().Andreas Kling
2019-02-14LibC: Remove obsolete errno codes for windowing syscalls.Andreas Kling
2019-02-14Kernel: Begin fleshing out bind() syscall.Andreas Kling
2019-02-14Kernel: Begin implementing UNIX domain sockets.Andreas Kling
2019-02-14WindowServer: Convert entire API to be message-based.Andreas Kling
One big step towards userspace WindowServer. :^)
2019-02-13WindowServer: Convert the remaining menu APIs into messages.Andreas Kling
2019-02-13WindowServer: Refactor more of the menu APIs to be message-based.Andreas Kling
This is all pretty verbose but I can whittle it down later. :^)
2019-02-13WindowServer: Begin refactoring towards a fully asynchronous protocol.Andreas Kling
In order to move the WindowServer to userspace, I have to eliminate its dependence on system call facilities. The communication channel with each client needs to be message-based in both directions.
2019-02-12Add API's and plumbing for WindowServer clients to make menus.Andreas Kling
2019-02-10LibGUI: Start adding an automatic widget layout system.Andreas Kling
My needs are really quite simple, so I'm just going to add what I need as I go along. The first thing I needed was a simple box layout with widgets being able to say whether they prefer fixed or fill for both their vertical and horizontal sizes. I also made a simple GStatusBar so FileManager can show how many bytes worth of files are in the current directory.
2019-02-09LibC: closedir() should free the readdir() buffer and the DIR itself.Andreas Kling
2019-02-08LibC: fgetc() and pals should return EOF on error or EOF.Andreas Kling
This was the reason that "uname | figlet" wasn't working. There was nothing wrong with the pipe like I kept thinking.
2019-02-08LibC: Add some more fake termcap entries to silence bash-5.0.Andreas Kling
2019-02-08LibC: Implement enough missing stuff to get bash-5.0 running. :^)Andreas Kling
2019-02-08Don't use -mregparm=3 in userspace.Andreas Kling
It's pretty comfy having arguments in registers in the kernel for now though.