Age | Commit message (Collapse) | Author |
|
...and executable_custody() to just executable().
|
|
The current working directory is now stored as a custody. Likewise for a
process executable file. This unbreaks /proc/PID/fd which has not been
working since we made the filesystem bigger.
This still needs a bunch of work, for instance when renaming or removing
a file somewhere, we have to update the relevant custody links.
|
|
A custody is kind of a directory entry abstraction that represents a single
entry in a parent directory that tells us the name of a child inode.
The idea here is for path resolution to produce a chain of custody objects.
|
|
Instead of having to inspect 'prot' at every call site, make the Process
API's take care of that so we can just pass it through.
|
|
|
|
Finally everything that can be held by a FileDescriptor actually inherits
from the File class.
|
|
Nothing crazy, this just means that PROT_READ allocates readable regions,
and that PROT_WRITE allocates writable ones.
|
|
This doesn't do much right now, just fork off a bunch of stuff and set priorities.
|
|
Right now, we allow anything inside a user to raise or lower any other process's
priority. This feels simple enough to me. Linux disallows raising, but
that's annoying in practice.
|
|
links requests SO_ERROR, so in not supporting it, things were unhappy.
Supporting this properly looks a little messy. I guess Socket will need
an m_error member it sets everywhere it returns an error. Or Syscall
could set it, perhaps, but I don't know if that's the right thing to
do, so let's just stub this for now and file a bug.
|
|
Also run it across the whole tree to get everything using the One True Style.
We don't yet run this in an automated fashion as it's a little slow, but
there is a snippet to do so in makeall.sh.
|
|
|
|
|
|
This could share more code with reads, and generally be better. But it works
and it's considerably faster than PIO, so let's use it. :^)
|
|
By moving the sending (and receiving) thread into the BlockedSignal state,
we ensure that the thread doesn't continue executing until the signal
has been dispatched.
|
|
- For division by zero, send SIGFPE.
- For illegal instruction, send SIGILL.
- For the rest, default to SIGSEGV.
|
|
As per the manpage, this acts as a transparent lseek() before write.
|
|
We were already handling this for the indirect blocks, but the direct ones
would happily consider #0 to be a valid block list entry.
|
|
|
|
It's good to have a place where we can try out all the different widgets.
This needs some more work on a nice layout, and should also include more
of the widgets. :^)
|
|
resized automatically
Co-Authored-By: Andreas Kling <awesomekling@gmail.com>
|
|
Also expand the QEMU VGA memory size to 64 MB, since otherwise we won't
have enough memory for double-buffering the screen.
|
|
The main cleanup here is putting the I/O address base in a member variable.
|
|
If someone wants to run without this, they can disable it manually :^)
|
|
|
|
This is in preparation for eventually using it in userspace.
LinearAddress.h has not been moved for the time being (as it seems to be
only used by a very small part of the code).
|
|
|
|
Otherwise we'll start handing out addresses that are very likely already in
use by existing ranges.
|
|
|
|
|
|
This makes the ELF symbolication crash go away while I work out a smart fix.
|
|
We were copying the raw IPv4 addresses into the wrong part of sockaddr_in,
and we didn't set sa_family or sa_port.
|
|
|
|
Since we transition to a new PageDirectory on exec(), we need a matching
RangeAllocator to go with the new directory. Instead of juggling this in
Process and MemoryManager, simply attach the RangeAllocator to the
PageDirectory instead.
Fixes #61.
|
|
|
|
This gives us some leeway for WindowServer to queue up a bunch of messages
for one of its clients. Longer-term we should improve DoubleBuffer to be
able to grow dynamically in a way that gets billed to some reasonable place.
|
|
Passing this flag to recv() temporarily puts the file descriptor into
non-blocking mode.
Also implement LocalSocket::recv() as a simple forwarding to read().
|
|
can_write() was saying yes in situations where write() would overflow the
internal buffer. This patch adds a has_attached_peer() helper to make it
easier to understand what's going on in these functions.
|
|
empty
This is not EOF, and never should have been so -- can trip up other code
when porting.
Also updates LibGUI and WindowServer which both relied on the old
behaviour (and didn't work without changes). There may be others, but I
didn't run into them with a quick inspection.
|
|
|
|
This allows us to skip the separate call to set_mmap_name() in code that
we control, e.g malloc() and GraphicsBitmap.
|
|
|
|
This way the socket write buffer sizes are respected, and things that
exceed them get sent EAGAIN.
|
|
|
|
This is another sizable improvement to GCC compile times.
|
|
Also make sure we return any device errors to caller.
|
|
I've only tested this with the PIIX3 chipset QEMU emulates, but it works
pretty well here. GCC compile times are cut roughly in half :^)
|
|
|
|
If/when we need this in the future, we can bring it back. Right now it's
just sitting there making the ELF code look huge when it's not.
|
|
If we just don't do anything, the page fault handler will load the file
incrementally as-needed instead. :^)
|