Commit graph

33570 commits

Author SHA1 Message Date
Pankaj Raghav 24c66b8442 AK: Fix log2 calculation for Integer
For a `N` bit integer X, the log2 calculation should be as follows:
(N - 1) - ctz(X)
2022-01-29 17:41:06 +02:00
Pankaj Raghav 0f010cee02 Kernel: Add block_size_log helper to BlockDevice
It is useful to have the log2 value of the block size while calculating
index for an IO.
2022-01-29 17:41:06 +02:00
Pankaj Raghav 61027e5303 AK: Add is_power_of_2 helper 2022-01-29 17:41:06 +02:00
Pankaj Raghav 3b27e28e67 Kernel: Cache blocks_per_page in StorageDevice class
Instead of calculating blocks_per_page in every IO, cache it to save
CPU cycles as that value will not change after initialization.
2022-01-29 17:41:06 +02:00
Pankaj Raghav cf44d71edf Kernel: Remove the assumption of 512 block size in read/write_block
Devices such as NVMe can have blocks bigger that 512. Use the
m_block_size variable in read/write_block function instead of the
hardcoded 512 block size.
2022-01-29 17:41:06 +02:00
Dylan Katz caecb6ba72 DisplaySettings: Set icons from GML 2022-01-29 13:45:34 +01:00
Dylan Katz 362df5b6dd MailSettings: Set icons from GML 2022-01-29 13:45:34 +01:00
Dylan Katz 3ee32b6dbf MouseSettings: Set icons from GML 2022-01-29 13:45:34 +01:00
Dylan Katz 90b371ef47 KeyboardSettings: Set icons from GML 2022-01-29 13:45:34 +01:00
Dylan Katz ca912a87f1 BrowserSettings: Set icons from GML 2022-01-29 13:45:34 +01:00
Dylan Katz 1c18261f8b LibGUI: Allow Label icons to be set from GML
This is similar to dd17df76e9, which
did the same thing for the Button widget.
2022-01-29 13:45:34 +01:00
Itamar 1aa8f73ddb IPCCompiler: Don't loop endlessly on nameless parameters
Previously, given a malformed IPC call declaration, where a parameter
does not have a name, the IPCCompiler would spin endlessly while
consuming more and more memory.

This is because it parses the parameter type incorrectly
(it consumes superfluous characters into the parameter type).

An example for such malformed declaration is:
tokens_info_result(Vector<GUI::AutocompleteProvider::TokenInfo>) =|

As a temporary fix, this adds VERIFY calls that would fail if we're at
EOF when parsing parameter names.

A real solution would be to parse C++ parameter types correctly.
LibCpp's Parser could be used for this task.
2022-01-29 12:44:15 +01:00
Liav A 308e54bc19 AK+Kernel: Implement UUID mixed endianness support
This is being used by GUID partitions so the first three dash-delimited
fields of the GUID are stored in little endian order but the last two
fields are stored in big endian order, hence it's a representation which
is mixed.
2022-01-29 13:35:54 +02:00
Rummskartoffel 2d67d141e6 UserspaceEmulator: Implement ioctl TIOCSTI 2022-01-29 11:22:43 +01:00
Rummskartoffel e636e2abbe UserspaceEmulator: Implement ioctl TCFLSH 2022-01-29 11:22:43 +01:00
Rummskartoffel a92719fc72 UserspaceEmulator: Implement signal masking 2022-01-29 11:22:43 +01:00
Rummskartoffel 335183d0e9 UserspaceEmulator: Implement virt$sigprocmask 2022-01-29 11:22:43 +01:00
Rummskartoffel 33b4b86141 UserspaceEmulator: Implement virt$getppid 2022-01-29 11:22:43 +01:00
Rummskartoffel 273f15e8ea UserspaceEmulator: Implement ioctl TIOCGPGRP 2022-01-29 11:22:43 +01:00
Rummskartoffel ef151afac8 UserspaceEmulator: Implement ioctl TIOCSWINSZ 2022-01-29 11:22:43 +01:00
Rummskartoffel b393fe573d UserspaceEmulator: Implement ioctl FIONBIO 2022-01-29 11:22:43 +01:00
Rummskartoffel 0c88a53d4c UserspaceEmulator: Convert virt$ioctl to use switch-case 2022-01-29 11:22:43 +01:00
networkException fcd97a3e19 LibGUI: Show radio buttons for checkable actions in CommandPalette
This patch adds a painting delegate to the icon column of CommandPalette
to show a radio button in case an action is checkable and does not
explicitly have an icon :^)
2022-01-29 11:22:02 +01:00
networkException b67d4ab52f LibGUI: Allow falling back to default paint behavior in delegate
This patch adds a method that can optionally be implemented to allow
a TableCellPaintingDelegate to fall back to the default painting in a
View.
2022-01-29 11:22:02 +01:00
networkException e2df145e14 WindowServer: Allow checking checkable entries in a menu using space 2022-01-29 11:22:02 +01:00
Andreas Kling d748a3c173 Kernel: Only lock process file descriptor table once in sys$poll()
Grab the OpenFileDescriptions mutex once and hold on to it while
populating the SelectBlocker::FDVector.
2022-01-29 02:17:12 +01:00
Andreas Kling b56646e293 Kernel: Switch process file descriptor table from spinlock to mutex
There's no reason for this to use a spinlock. Instead, let's allow
threads to block if someone else is using the descriptor table.
2022-01-29 02:17:09 +01:00
Andreas Kling 8ebec2938c Kernel: Convert process file descriptor table to a SpinlockProtected
Instead of manually locking in the various member functions of
Process::OpenFileDescriptions, simply wrap it in a SpinlockProtected.
2022-01-29 02:17:06 +01:00
Timothy Flynn 93e90e16c3 Base: Add a man page for the timezone utility 2022-01-28 23:18:17 +00:00
Ali Mohammad Pur e72521f286 LibCoredump: Copy out the FooInfo structs to an aligned address
We were handing out unaligned pointers to these, which made UBSAN super
mad, copy them out to avoid that.
2022-01-28 22:51:27 +00:00
Ali Mohammad Pur e0db9cb876 LibDebug+LibCoredump: Replace remaining reinterpret_casts and C casts
You misused your toys and I'm now taking them away, reflect on what you
did wrong for a bit.
2022-01-28 22:51:27 +00:00
Ali Mohammad Pur da3c4e5df5 LibDebug+LibCoredump: Use ByteReader to do unaligned reads
The previous solution of "lol whats a UB" was not nice and tripped over
itself when it was run under UBSAN, fix this by doing explicit
byte-by-byte reads where needed.
2022-01-28 22:51:27 +00:00
Ali Mohammad Pur 6d64b13a1b LibDebug+Everywhere: Avoid void* -> FlatPtr -> void* dance
And limit the `void*` to the functions that interface the system (i.e.
ptrace wrappers).
This generally makes the code less riddled with casts.
2022-01-28 22:51:27 +00:00
Andreas Kling b27b22a68c Kernel: Allocate entire SelectBlocker::FDVector at once
Use try_ensure_capacity() + unchecked_append() instead of repeatedly
doing try_append().
2022-01-28 23:41:18 +01:00
Andreas Kling a12e19c015 Kernel: Move kernel region checks from x86 page fault handler to MM
Ideally the x86 fault handler would only do x86 specific things and
delegate the rest of the work to MemoryManager. This patch moves some of
the address checks to a more generic place.
2022-01-28 23:41:18 +01:00
Andreas Kling 5092813a45 Kernel: Quickly reject userspace addresses in kernel_region_from_vaddr()
This avoids taking and releasing the MM lock just to reject an address
that we can tell from just looking at it that it won't ever be in the
kernel regions tree.
2022-01-28 23:41:18 +01:00
kleines Filmröllchen 145eeb57ab Userland: Remove a bunch of unnecessary Vector imports
How silly :^)
2022-01-28 23:40:25 +01:00
kleines Filmröllchen 4efe6210ee Applets/Audio: Use Array for the volume level bitmaps 2022-01-28 23:40:25 +01:00
kleines Filmröllchen cab6384966 HexEditor: Use Array in FindDialog's options 2022-01-28 23:40:25 +01:00
kleines Filmröllchen 1a8c8d2383 Chess: Don't use Vector in a literal iterator 2022-01-28 23:40:25 +01:00
kleines Filmröllchen a79a9fb692 LibAudio: Use ArrayLike concept to remove duplicate Buffer constructor 2022-01-28 23:40:25 +01:00
kleines Filmröllchen cfb8eeebe8 AK: Allow constructing a JsonArray from any array-like type 2022-01-28 23:40:25 +01:00
kleines Filmröllchen 2f631f7dc0 AK: Allow constructing a JsonValue from a StringView explicitly
The next commit will destroy overload detection otherwise, so let's add
this constructor. Currently, the same work is already done implicitly
through the implicit `String(StringView)` constructor.
2022-01-28 23:40:25 +01:00
kleines Filmröllchen 07977ad94c AK: Introduce the ArrayLike concept
The ArrayLike type concept focuses on array-like data accesses. This
means the ability to randomly index, obtain size information, as well as
being able to expose the storage pointer. The last two already have the
standard APIs `size` and `data`, respectively.

The ArrayLike concept should always be fulfilled by Vector, FixedArray
and Array as the three main array-like types. C-style arrays themselves
of course can't fulfil ArrayLike (which could be considered ironic), but
as we don't use them much anyways this isn't a problem.
2022-01-28 23:40:25 +01:00
Daniel Bertalan 6003b6f4d3 LibTextCodec: Do not allocate the various decoders
These objects contain no data members, so there is no point in creating
1-byte heap allocations for them. We don't need to have them as static
local variables, as they are trivially constructible, so they can simply
be global variables.
2022-01-28 23:31:00 +01:00
Daniel Bertalan 7d11edbe17 Userland: Fix unnecessary heap allocation of singleton objects
In order to avoid having multiple instances, we were keeping a pointer
to these singleton objects and only allocating them when it was null.

We have `__cxa_guard_{acquire,release}` in the userland, so there's no
need to do this dance, as the compiler will ensure that the constructors
are only called once.
2022-01-28 23:31:00 +01:00
Ali Mohammad Pur c1184c1fde RequestServer: Replace disconnected sockets in the grace period too
We previously only replaced disconnected sockets on the queued-request
path, leading to attempts to send requests on a disconnected socket if
the disconnection happened in the deletion grace period.
2022-01-28 23:29:32 +01:00
Timothy Flynn b387ac56b6 LibCore: Change DateTime format strings to be StringViews
There's no need to allocate a String for these. Note the "string"
parameter of DateTime::parse is left as a String for now; the parser is
currently using strtol which needs a NUL-terminated string. This method
can likely be rewritten with GenericLexer.
2022-01-28 20:19:05 +00:00
Timothy Flynn 9c80430eea LibCore: Remove time zone from default format string
The default format string is used in many applications/services like
FileManager/FileSystemAccessServer. Showing the time zone in e.g. the
last modified time for every file in FileManager is feeling a bit over
the top, so let's revert this change and assume the user is smart enough
to know what time zone they are in.
2022-01-28 20:19:05 +00:00
Timothy Flynn 5ca1c54c27 date: Use an explicit time format string for default option
This is to prepare for removing the time zone from DateTime's default
format string. The date utility on most system show time zone by default
so let's keep that.
2022-01-28 20:19:05 +00:00