Age | Commit message (Collapse) | Author |
|
This change make the code a bit more readable. Also, kprintf() calls
are replaced with klog() calls.
|
|
Also, kprintf() calls were replaced with klog() calls.
|
|
|
|
|
|
|
|
|
|
|
|
Provide wrappers in String and StringView. Add some tests for the
implementations.
|
|
|
|
This was only used by the mechanism for mapping executables into each
process's own address space. Now that we remap executables on demand
when needed for symbolication, this can go away.
|
|
This is both simpler and more robust than mapping them in the process
address space.
|
|
Previously we would map the entire executable of a program in its own
address space (but make it unavailable to userspace code.)
This patch removes that and changes the symbolication code to remap
the executable on demand (and into the kernel's own address space
instead of the process address space.)
This opens up a couple of further simplifications that will follow.
|
|
Provide wrappers in the String and StringView classes, and add some tests.
|
|
Also add tests for CircularDeque.
|
|
|
|
According to the Travis build config validation, the `sudo` key does
nothing and `os` should be specified.
|
|
This makes Region::clone() do the right thing with it on fork().
|
|
This makes Region::clone() do the right thing for these now that we
differentiate based on Region::is_shared().
|
|
I had the wrong idea about this. Thanks to Sergey for pointing it out!
Here's what he says (reproduced for posterity):
> Private mappings protect the underlying file from the changes made by
> you, not the other way around. To quote POSIX, "If MAP_PRIVATE is
> specified, modifications to the mapped data by the calling process
> shall be visible only to the calling process and shall not change the
> underlying object. It is unspecified whether modifications to the
> underlying object done after the MAP_PRIVATE mapping is established
> are visible through the MAP_PRIVATE mapping." In practice that means
> that the pages that were already paged in don't get updated when the
> underlying file changes, and the pages that weren't paged in yet will
> load the latest data at that moment.
> The only thing MAP_FILE | MAP_PRIVATE is really useful for is mapping
> a library and performing relocations; it's definitely useless (and
> actively harmful for the system memory usage) if you only read from
> the file.
This effectively reverts e2697c2dddd531c0ac7cad3fd6ca78e81d0d86da.
|
|
|
|
|
|
This way we can trace many things and we get one perfcore file per
process instead of everyone trying to write to "perfcore"
|
|
The following options are now available:
-e: Show every process (not just the ones on your TTY)
-f: Full format (instead of the short format)
We should definitely support more options and formats, I just wanted to
get away from the static single style of output. :^)
|
|
|
|
We were deleting the wrong character in the line buffer, oopsie!
|
|
This patch reduces the number of code paths that lead to the allocation
of a Region object. It's quite hard to follow the various ways in which
this can happen, so this is an effort to simplify.
|
|
|
|
When stopping a thread with the SIGSTOP signal, we now store the thread
state in Thread::m_stop_state. That state is then restored on SIGCONT.
This fixes an issue where previously-blocked threads would unblock
upon resume. Now they simply resume in the Blocked state, and it's up
to the regular unblocking mechanism to unblock them.
Fixes #1326.
|
|
While the menu system is swallowing mouse events, just clear any resize
candidate we had set. This ensures that we don't end up with a resize
cursor when slipping into a menu-controlled part of the screen.
Fixes #1306.
|
|
|
|
|
|
|
|
Now that Vector uses size_t, we can remove a whole bunch of redundant
casts to size_t.
|
|
|
|
Now that (private) InodeVMObjects can be CoW-cloned on fork(), we need
to make sure we clone the dirty bits as well.
|
|
|
|
|
|
This will be a memory usage pessimization until we actually implement
CoW sharing of the memory pages with SharedInodeVMObject.
However, it's a huge architectural improvement, so let's take it and
improve on this incrementally.
fork() should still be neutral, since all private mappings are CoW'ed.
|
|
Let's make sure that we're never cloning shared inode-backed objects
as if they were private, and vice versa.
|
|
It's now up to the caller to provide a VMObject when constructing a new
Region object. This will make it easier to handle things going wrong,
like allocation failures, etc.
|
|
When forking a process, we now turn all of the private inode-backed
mmap() regions into copy-on-write regions in both the parent and child.
This patch also removes an assertion that becomes irrelevant.
|
|
|
|
Otherwise we may hit an assertion when validating stack addresses.
|
|
Another backwards iteration accident.
|
|
|
|
This should be done at some other level (shell rc script for example),
this is just to make "git" stop complaining that I don't have "less".
|
|
If we wrote anything we should just inform userspace that we did,
and not worry about the error code. Userspace can call us again if
it wants, and we'll give them the error then.
|
|
It's no longer possible rely on negative VectorIterator when iterating
backwards. It would be nice to have a general solution for reverse
iteration, but for now let me just patch this up.
|
|
|
|
Simon Struthers drew a SerenityOS ladybug and since it's so cute,
I figured we could adopt it!
|