Commit graph

24104 commits

Author SHA1 Message Date
Andreas Kling
959ceb4424 Kernel: Remove PhysicalRegion::finalize_capacity()
There's no reason to delay calculating the capacity (total page count)
of each PhysicalRegion. Just do it in the constructor.
2021-07-13 22:40:25 +02:00
Andreas Kling
5171249540 Kernel: Simplify the way PhysicalRegions are constructed
Instead of creating a PhysicalRegion and then expanding it over and
over as we traverse the memory map on boot, we now compute the final
size of the contiguous physical range up front, and *then* create a
PhysicalRegion object.
2021-07-13 22:40:25 +02:00
Andreas Kling
479df315d2 Kernel: Make PhysicalZone an eternally allocated object
Until we start supporting hot-pluggable RAM, these will not be freed
or reallocated during the kernel's lifetime. :^)
2021-07-13 22:40:25 +02:00
Andreas Kling
6ea5db20ff Kernel: Remove unused used/free pages API's from PhysicalRegion 2021-07-13 22:40:25 +02:00
Andreas Kling
be90e51355 Kernel: Remove API for requesting physical allocation alignment
Nobody was using this API to request anythign about `PAGE_SIZE`
alignment, so let's get rid of it for now. We can reimplement it if
we end up needing it.

Also note that it wasn't actually used anywhere.
2021-07-13 22:40:25 +02:00
Andreas Kling
ba87571366 Kernel: Implement zone-based buddy allocator for physical memory
The previous allocator was very naive and kept the state of all pages
in one big bitmap. When allocating, we had to scan through the bitmap
until we found an unset bit.

This patch introduces a new binary buddy allocator that manages the
physical memory pages.

Each PhysicalRegion is divided into zones (PhysicalZone) of 16MB each.
Any extra pages at the end of physical RAM that don't fit into a 16MB
zone are turned into 15 or fewer 1MB zones.

Each zone starts out with one full-sized block, which is then
recursively subdivided into halves upon allocation, until a block of
the request size can be returned.

There are more opportunities for improvement here: the way zone objects
are allocated and stored is non-optimal. Same goes for the allocation
of buddy block state bitmaps.
2021-07-13 22:40:25 +02:00
Andreas Kling
be83b3aff4 AK: Make Bitmap::set() non-const 2021-07-13 22:40:25 +02:00
Karol Kosek
5c89305fc6 LibGUI: Don't clear textbox on save mode in FilePicker
This fixes a rather frustrating issue during saving a file,
when clicking on a folder (to change the path of saved file)
caused the filename to disappear from the text box.
2021-07-13 21:16:44 +02:00
Idan Horowitz
f09e361eef CI: Disallow spaces just before the separating colon in commit titles 2021-07-13 19:56:14 +01:00
Idan Horowitz
804d592303 LibJS: Add missing has_constructor override to Generator Functions 2021-07-13 20:40:57 +02:00
Luke
e9eae9d880 LibWeb: Add extracting character encoding from a meta content attribute
Some Gmail emails contain this.
2021-07-13 20:23:44 +02:00
Tom
b919789db2 Kernel: Kill user mode threads that are marked to die
Threads that don't make syscalls still need to be killed, and we can
do that at any time we want so long the thread is in user mode and
not somehow blocked (e.g. page fault).
2021-07-13 20:23:10 +02:00
Tom
fa8fe40266 Revert "Kernel: Make sure threads which don't do any syscalls are t..."
This reverts commit 3c3a1726df.

We cannot blindly kill threads just because they're not executing in a
system call. Being blocked (including in a page fault) needs proper
unblocking and potentially kernel stack cleanup before we can mark a
thread as Dying.

Fixes #8691
2021-07-13 20:23:10 +02:00
Linus Groh
552185066e LibC: Use C-style void cast in assert() 2021-07-13 19:02:20 +01:00
Karol Kosek
d34ef6d997 FileManager: Add Rename action to context and application menu
Prior to this change, the only way to rename a file was to press F2
on keyboard.
2021-07-13 17:54:37 +02:00
Karol Kosek
886e011608 LibGUI: Add Rename action 2021-07-13 17:54:37 +02:00
kleines Filmröllchen
f634949d26 LibAudio: Use new Vector formatter 2021-07-13 17:40:07 +02:00
kleines Filmröllchen
1e1fa4eac4 AK: Add Formatter for Vector
For debugging purposes, it is very useful to look at a Vector in a
simple list representation. Therefore, the new Formatter for Vector
provides a string representation of the following form:

```
[ 1, 2, 3, 4, 5 ]
```

This requires the content type of Vector to be formattable with default
arguments.

The current implementation ignores width and precision, which may be
accounted for later or passed down to the content formatter.
2021-07-13 17:40:07 +02:00
Gunnar Beutner
5f3773b715 LibC: Increase minimum alignment for malloc() to 16 bytes
This is required to make SSE instructions work when building with
Clang. Apparently Clang uses SSE instructions where GCC didn't so
we didn't previously run into this problem.
2021-07-13 17:31:22 +02:00
ngc6302h
3b81ba7c4f HashMap: Rename finders with a more accurate and self-descripting name 2021-07-13 17:31:00 +02:00
ngc6302h
213e2af281 HashTable: Rename finders with a more accurate and self-descripting name 2021-07-13 17:31:00 +02:00
ngc6302h
de7831153f Vector: Homogenize type and parameter names for predicates 2021-07-13 17:31:00 +02:00
luk1337
334499a3f4
du: Don't fail immediately when directory can't be read (#8719) 2021-07-13 17:30:38 +02:00
Gunnar Beutner
77795b2c8f Meta: Make sure files are installed with the right UID and GID
Unfortunately we can't just use --chown everywhere because only rsync
version 3.1 and newer support it and the default rsync on macOS is
2.6.9.

Fixes #8711.
2021-07-13 13:30:29 +02:00
Gunnar Beutner
7347c20fe6 Meta: Fix QEMU detection for WSL2 if QEMU isn't installed on the C drive 2021-07-13 12:57:21 +02:00
Gunnar Beutner
b805708c6f Documentation: Make sure Windows have QEMU tools in their WSL2 system
They don't need QEMU to run the VM but they do at least need the QEMU
tools to build the image.
2021-07-13 12:57:21 +02:00
luk1337
0b48e12dd7
FileManager: Convert properties window UI to GML (#8705) 2021-07-13 12:57:10 +02:00
TheFightingCatfish
72e661b542 Shell: Add unalias builtin
Add shell unalias builtin to remove aliases
2021-07-13 11:57:11 +04:30
Ariel Don
5140994c69 LibGUI: Select radio buttons with keyboard 2021-07-13 07:11:47 +02:00
Ali Mohammad Pur
9cdea2d521 LibRegex: Consider EOF in the middle of a range an error 2021-07-13 07:04:06 +02:00
Ali Mohammad Pur
1b2728f1ed LibRegex: Don't attempt to insert invalid bytecode in {B,E}RE 2021-07-13 07:04:06 +02:00
Ali Mohammad Pur
6e35b94034 LibRegex: Implement lookaround in ERE 2021-07-13 07:04:06 +02:00
Ali Mohammad Pur
5f4e1338a1 LibRegex: Allow empty character classes in {B,E}RE 2021-07-13 07:04:06 +02:00
Ali Mohammad Pur
189922f442 LibRegex: Disallow excessively large repetition counts in {B,E}RE 2021-07-13 07:04:06 +02:00
Ali Mohammad Pur
f9fed0b167 LibRegex+LibC: Make re_nsub available to the user
To comply with Dr.POSIX, this field has to be user-accessible.
2021-07-13 07:04:06 +02:00
Valtteri Koskivuori
7e98457937 Base: Fix typo in the man page for file
On macOS with a Finnish keyboard layout, $ is typed with Option+4. While
writing this manpage, I made the mistake of holding Option down a little
too long, as I often do, resulting in the keystroke Option+space. This,
instead of typing a space, types U+00A0 (non-breaking space), which
looks identical on my host terminal. Luckily the Serenity terminal
called me out on it, printing out a question mark instead.
2021-07-13 00:32:19 +01:00
Luke
448e8c6f45 Lagom/Fuzzers: Add fuzzer for FLAC loader 2021-07-13 01:15:46 +02:00
Marcin Gasperowicz
bc44753adb Base: Change Marcin to nooga in fortunes database 2021-07-13 00:00:07 +01:00
BuggieBot
c8de791635 Base: Add a quote to the fortunes database
[skip ci]
2021-07-13 03:26:41 +04:30
LuK1337
8922049507 DisplaySettings: Reload current settings when apply dialog is dismissed
Fixes: #8673
2021-07-12 23:35:34 +02:00
Linus Groh
15d5c62915 LibC: Replace use of do/while in assert() with the ternary operator
It's a single expression, no do/while needed. This makes assert() work
with the comma operator (assert(foo), assert(bar), assert(baz)).
Found because exactly this is being used somewhere in the guts of LLVM.
2021-07-12 22:33:28 +01:00
Karol Kosek
0c7a319e6b LibAudio: Set variable type for decoding fixed subframes in FLAC
This fixes an crash caused by using the type from
FlacSubframeHeader::order (unsigned 8-bit), which after overflowing
the integer, converting it back to u32, and decrementing by one
resulted in accessing an array waaay out of bounds.
2021-07-12 23:32:50 +02:00
Luke
93340685ed Lagom/Fuzzers: Add fuzzer for POSIX basic regex parser 2021-07-13 01:34:22 +04:30
Liav A
2a1bf53435 Kernel/Graphics: Move Bochs graphics related code into a separate folder 2021-07-12 22:53:08 +02:00
Liav A
3fee1cbe66 Kernel/Graphics: Remove unnecessary Bochs.h file
Nobody excepts BochsGraphicsAdapter code uses these definitions, so
let's put them back into the BochsGraphicsAdapter.cpp file.
2021-07-12 22:53:08 +02:00
Ali Mohammad Pur
8776f424ac AK: Make Traits<T*> use ptr_hash() and not assume 32-bit pointers
As a nice bonus, it also simplifies the code quite a bit.
2021-07-12 23:49:59 +04:30
Ali Mohammad Pur
ad328f852b AK: Replace all explicit specialisations of Traits with a single one
This commit un-confuses the many specialisations of AK::Traits, and
makes it work correctly for all integral types.
Prior to this, `AK::Traits<size_t>` would've been instantiating the
base Traits implementation, not `Traits<u32>` or `Traits<u64>`.
2021-07-12 23:49:59 +04:30
Idan Horowitz
84b028bd71 LibJS: Add Temporal.Instant.prototype.round()
As well as the required Abstract Operations.
2021-07-12 19:05:17 +01:00
Idan Horowitz
75d1ffea00 LibCrypto: Add the >= operator to UnsignedBigInteger 2021-07-12 19:05:17 +01:00
Idan Horowitz
01c731aa59 LibJS: Add the GetOptionsObject & GetOption Temporal AbstractOperations
These are used by any Temporal method that accepts an options object.
2021-07-12 19:05:17 +01:00