summaryrefslogtreecommitdiff
path: root/Kernel/Syscall.h
AgeCommit message (Collapse)Author
2019-04-07Kernel+Userland: Add the rename() syscall along with a basic /bin/mv.Andreas Kling
2019-03-25LibGUI+Kernel: Add a GLock class (userspace mutex.)Andreas Kling
It's basically a userspace port of the kernel's Lock class. Added gettid() and donate() syscalls to support the timeslice donation feature we already enjoyed in the kernel.
2019-03-23Kernel+LibC: Add a simple create_thread() syscall.Andreas Kling
It takes two parameters, a function pointer for the entry function, and a void* argument to be passed to that function on the new thread.
2019-03-13Kernel: recvfrom() should treat the address arguments as outparams.Andreas Kling
2019-03-13Add support for socket send/receive timeouts.Andreas Kling
Only the receive timeout is hooked up yet. You can change the timeout by calling setsockopt(..., SOL_SOCKET, SO_RCVTIMEO, ...). Use this mechanism to make /bin/ping report timeouts.
2019-03-12Kernel+LibC+Userland: Yet more networking bringup hacking.Andreas Kling
All ICMP sockets now receive all ICMP packets. All this buffering is gonna need some limits and such.
2019-03-12Kernel+LibC+Userland: Start working on an IPv4 socket backend.Andreas Kling
The first userland networking program will be "ping" :^)
2019-03-08Add a C++ helper class for working with shared buffers.Andreas Kling
This is a bit more comfortable than passing the shared buffer ID manually everywhere and keeping track of size etc.
2019-03-05Kernel: Block a signal from being dispatched again until handler returns.Andreas Kling
We don't handle nesting yet, but this is a step in the right direction.
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-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-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: 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-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-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-03Get nyancat nyanning in Serenity.Andreas Kling
I found a cute program that renders an animated nyancat in the terminal. This patch adds enough hackery to get it working correctly. :^)
2019-01-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-29Implement basic chmod() syscall and /bin/chmod helper.Andreas Kling
Only raw octal modes are supported right now. This patch also changes mode_t from 32-bit to 16-bit to match the on-disk type used by Ext2FS. I also ran into EPERM being errno=0 which was confusing, so I inserted an ESUCCESS in its place.
2019-01-28Add support for removing directories.Andreas Kling
It's really only supported in Ext2FS since SynthFS doesn't really want you mucking around with its files. This is pretty neat though :^) I ran into some trouble with HashMap while working on this but opted to work around it and leave that for a separate investigation.
2019-01-27Make buttons unpress when the cursor leaves the button rect.Andreas Kling
Implement this functionality by adding global cursor tracking. It's currently only possible for one GWidget per GWindow to track the cursor.
2019-01-26Refactor GUI rendering model to be two-phased.Andreas Kling
Instead of clients painting whenever they feel like it, we now ask that they paint in response to a paint message. After finishing painting, clients notify the WindowServer about the rect(s) they painted into and then flush eventually happens, etc. This stuff leaves us with a lot of badly named things. Need to fix that.
2019-01-25Kernel: Fix Syscall.h build when out of context.Andreas Kling
2019-01-25Terminal: Redraw entire line if any of its characters are dirty.Andreas Kling
This means we only have to do one fill_rect() per line and the whole process ends up being ~10% faster than before. Also added a read_tsc() syscall to give userspace access to the TSC.
2019-01-24Let userland retain the window backing store while drawing into it.Andreas Kling
To start painting, call: gui$get_window_backing_store() Then finish up with: gui$release_window_backing_store() Process will retain the underlying GraphicsBitmap behind the scenes. This fixes racing between the WindowServer and GUI clients. This patch also adds a WSWindowLocker that is exactly what it sounds like.
2019-01-23Stub out poll() syscall and LibC wrapper.Andreas Kling
2019-01-22Add unlink() syscall and /bin/rm.Andreas Kling
This patch adds most of the plumbing for working file deletion in Ext2FS. Directory entries are removed and inode link counts updated. We don't yet update the inode or block bitmaps, I will do that separately.
2019-01-20Make it possible for userspace to alter window title/geometry.Andreas Kling
I'm not in love with this syscall API but it allows me to make progress.
2019-01-16Implement basic support for POSIX-style select().Andreas Kling
Now we can block on both the PTY *and* the GUI event stream in Terminal.
2019-01-15Add basic PTY support.Andreas Kling
For now, there are four hard-coded PTYs: /dev/pt{m,s}[0123] Use this in the Terminal to open a pty pair and spawn a shell.
2019-01-14Share GraphicsBitmaps between the windowing server and the client process.Andreas Kling
This is pretty cool. :^) GraphicsBitmaps are now mapped into both the server and the client address space (usually at different addresses but that doesn't matter.) Added a GUI syscall for getting a window's backing store, and another one for invalidating a window so that the server redraws it.
2019-01-14Start refactoring the windowing system to use an event loop.Andreas Kling
Userspace programs can now open /dev/gui_events and read a stream of GUI_Event structs one at a time. I was stuck on a stupid problem where we'd reenter Scheduler::yield() due to having one of the has_data_available_for_reading() implementations using locks.
2019-01-13Add basic GUI API for creating labels and buttons.Andreas Kling
2019-01-13Start working on a GUI kernel API.Andreas Kling
2018-12-21Make syscall invocations look pleasant.Andreas Kling
Old: Syscall::invoke(Syscall::SC_foo, (dword)arg1, (dword)arg2) New: syscall(SC_foo, arg1, arg2)
2018-12-20Add a "syncd" kernel process that periodically calls sync().Andreas Kling
2018-12-20Add sync() syscall and a /bin/sync.Andreas Kling
It walks all the live Inode objects and flushes pending metadata changes wherever needed. This could be optimized by keeping a separate list of dirty Inodes, but let's not get ahead of ourselves.
2018-12-19Implement utime() along with a naive /bin/touch.Andreas Kling
This synchronous approach to inodes is silly, obviously. I need to rework it so that the in-memory CoreInode object is the canonical inode, and then we just need a sync() that flushes pending changes to disk.
2018-12-03Implement basic support for times().Andreas Kling
The kernel now bills processes for time spent in kernelspace and userspace separately. The accounting is forwarded to the parent process in reap(). This makes the "time" builtin in bash work.
2018-11-28Implement signal() via sigaction() and get rid of sys$signal().Andreas Kling
2018-11-18Finally hook up the mkdir code to a syscall.Andreas Kling
Added a /bin/mkdir that makes directories. How very neat :^) There are various limitations because of missing functionality.
2018-11-16Reimplement tcsetattr/tcgetattr as ioctls.Andreas Kling
2018-11-16Add ioctl() and reimplement tcsetpgrp/tcsetpgrp as ioctls.Andreas Kling