Commit graph

33772 commits

Author SHA1 Message Date
Idan Horowitz
ba0a2a3e2f AK: Hide the infallible make<T> factory function from the Kernel
This function has no users, nor should it ever be used in the kernel,
as all allocation failures in the Kernel should be explicitly checked.
2022-02-03 23:33:20 +01:00
Idan Horowitz
7933a9b6c8 AK: Stop using the make<T> factory function in Trie
This function is infallible, and so we would like to exclude it from
the Kernel, which includes this header.
2022-02-03 23:33:20 +01:00
Idan Horowitz
3dc8bbbc8b Kernel: Remove the infallible make_ref_counted<T> factory function
This function had no users, nor should it ever be used, as all
allocation failures in the Kernel should be explicitly checked.
2022-02-03 23:33:20 +01:00
Idan Horowitz
a65bbbdb71 Kernel: Convert try_make_ref_counted to use ErrorOr
This allows more ergonomic memory allocation failure related error
checking using the TRY macro.
2022-02-03 23:33:20 +01:00
Idan Horowitz
8289727fac Kernel: Stop using the make<T> factory method in the Kernel
As make<T> is infallible, it really should not be used anywhere in the
Kernel. Instead replace with fallible `new (nothrow)` calls, that will
eventually be error-propagated.
2022-02-03 23:33:20 +01:00
Idan Horowitz
e5e7cb822a Kernel: Ignore allocation failures when trying to retransmit packets
We ignore allocation failures above the first 16 guaranteed socket
slots, as we will just retransmit their packets the next time around.
2022-02-03 23:33:20 +01:00
Idan Horowitz
2dc91865a4 Kernel: Stop allocating VirtIO configuration structs on the heap
These are trivially-copyable 12-byte structs, so there's no point in
allocating them on the heap.
2022-02-03 23:33:20 +01:00
Idan Horowitz
be4c144524 AK: Support formatting Vectors with any inline_capacity
The default Vector type has its inline capacity set to 0, which means
any Vector with non-zero inline capacity was unformattable.
2022-02-03 23:33:20 +01:00
Sam Atkins
6b0c4908df FileManager: Don't show command palette for the desktop 2022-02-03 23:28:56 +01:00
Sam Atkins
bf4328de52 LibGUI: Allow widgets to opt-out from showing the command palette 2022-02-03 23:28:56 +01:00
Sam Atkins
a4cb6a49ae FileManager: Disable "View as..." actions for desktop DirectoryView
This stops these actions from being activated with Ctrl+[1,2,3] or the
command palette.. Switching to table or columns view would just hide
all the icons, so let's not make those options available.
2022-02-03 23:28:56 +01:00
Andreas Kling
f92ee94fe2 LibWeb: Expose KeyboardEvent's constructor on the window object 2022-02-03 22:35:13 +01:00
Andreas Kling
926d5271b4 LibWeb: Forward CanvasRenderingContext.strokeText() to fillText()
This is a hack until we get an actual text stroking implementation.
2022-02-03 22:35:13 +01:00
Andreas Kling
dc3bf32307 LibWeb: Add barebones CanvasGradient object
Also add the CanvasRenderingContext2D APIs to go along with it.
Note that it can't be used for anything yet.
2022-02-03 22:35:13 +01:00
Andreas Kling
545ec334f0 LibWeb: Add Document.hasFocus() stub
This always returns true for now. A proper implementation needs to check
if the document is in the focused widget within an active window.
2022-02-03 22:35:13 +01:00
Andreas Kling
90a8744823 LibWeb: Add CanvasRenderingContext2D.bezierCurveTo() 2022-02-03 22:35:13 +01:00
Andreas Kling
34f6c88ffd Revert "Kernel: Protect InodeWatcher internals with spinlock instead of mutex"
This reverts commit 0bebf013e3.

This caused a deadlock when handling a crashed process, so let's revert
it until we can figure out what went wrong.
2022-02-03 18:25:55 +01:00
Andreas Kling
e7dc9f71b8 Kernel: Protect Inode flock list with spinlock instead of mutex 2022-02-03 17:28:45 +01:00
Andreas Kling
a81aebfd6e Kernel: Remove unnecessary mutex for ubsan-is-deadly ProcFS node 2022-02-03 16:11:26 +01:00
Andreas Kling
e86ab57078 AK+Kernel+LibSanitizer: Store "ubsan-is-deadly" flag as Atomic<bool> 2022-02-03 16:11:26 +01:00
Andreas Kling
0bebf013e3 Kernel: Protect InodeWatcher internals with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
64254b5df8 Kernel: Protect PCI access with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
200589ba27 Kernel: Turn VirtIOGPU operation lock from mutex into spinlock 2022-02-03 16:11:26 +01:00
Andreas Kling
ca42621be1 Kernel: Protect FramebufferDevice with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
ddde9e7ee5 Kernel: Protect global device map with spinlock instead of mutx 2022-02-03 16:11:26 +01:00
Andreas Kling
e0d9472ced Kernel: Protect Inode's list of watchers with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
210689281f Kernel: Protect mounted filesystem list with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
3becff9eae Kernel: Protect network adapter list with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
0899153170 Kernel: Protect PTYMultiplexer freelist with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
6fbb924bbf Kernel: Protect ARP table with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Andreas Kling
248832f438 Kernel: Convert OpenFileDescriptor from mutex to spinlock
A mutex is useful when we need to be able to block the current thread
until it's available. This is overkill for OpenFileDescriptor.

First off, this patch wraps the main state member variables inside a
SpinlockProtected<State> to enforce synchronized access. This also
avoids "free locking" where figuring out which variables are guarded
by which lock is left as an unamusing exercise for the reader.

Then we remove mutex locking from the functions that simply call through
to the underlying File or Inode, since those fields never change anyway,
and the target objects perform their own synchronization.
2022-02-03 16:11:26 +01:00
Andreas Kling
35e24bc774 Kernel: Move Spinlock lock/unlock functions out of line
I don't see why these have to be inlined everywhere in the kernel.
2022-02-03 16:11:26 +01:00
Timothy Flynn
362e167239 ClockSettings: Display a text bubble with extra time zone information 2022-02-03 16:11:15 +01:00
Timothy Flynn
4d2ea773db ClockSettings: Display a map to show the current time zone's location 2022-02-03 16:11:15 +01:00
Timothy Flynn
35cacb850a LibGUI: Add a const accessor to ImageWidget's bitmap 2022-02-03 16:11:15 +01:00
Timothy Flynn
4cf4a7cc87 LibGUI: Forward declare ImageWidget 2022-02-03 16:11:15 +01:00
Timothy Flynn
ea814a3ce6 LibTimeZone: Parse and generate time zone coordinate data 2022-02-03 16:11:15 +01:00
Timothy Flynn
7b41a09540 LibGUI: Set a fixed width for the SettingsWindow reset-to-default button
Otherwise, any subclass which increased the size of the window would see
a very large reset button. The width chosen here is the same width as
the other buttons in this window.
2022-02-03 16:11:15 +01:00
Rummskartoffel
2560d0b9ad Documentation: Update reference to obsolete config option 2022-02-03 14:57:46 +01:00
Rummskartoffel
85c3852b8f KeyboardPreferenceLoader: Don't crash when "Keymaps" is empty 2022-02-03 14:57:46 +01:00
Brian Gianforcaro
2b14a11238 LibC: Add IN6_IS_ADDR_LINKLOCAL to in.h
I tried the OpenSSH port but it failed to compile due to a missing
definition of this macro. It's simple enough to add, and it's addition
allowed OpenSSH to compile once again.

I also went ahead and added spec comments for these macros as well.
2022-02-03 14:57:16 +01:00
Brian Gianforcaro
e8857f9b2d CrashReporter: Stop attempting to lockdown the process veil
The idea of locking the process veil in CrashReproter is well
intentioned, but ultimately frought with issues.

The fundamental premise is a bit flawed, as we are using the crashing
program as input to dynamically add new paths to the process veil.
This means that an attacker can potentially produce a custom or
malformed binary to trick CrashReporter into allowing an arbitrary
path to be read.
2022-02-03 14:57:01 +01:00
Timur Sultanov
6edb34aa56 Base: Update keymap man page to include new functionality
Adding examples on how to use keymap tool to set a list of keymaps
2022-02-03 00:47:22 +01:00
Timur Sultanov
c7bd47c87c Base+WindowsServer+keymap: Store multiple keymaps in a config 2022-02-03 00:47:22 +01:00
Timur Sultanov
5a31697bcf Base: Start Keymap.Applet automatically 2022-02-03 00:47:22 +01:00
Timur Sultanov
b9c558f6c6 WindowServer+Keymap+LibGUI: Add widget to display current keymap 2022-02-03 00:47:22 +01:00
Timur Sultanov
68a01f0e27 WindowManager: Basic support for system keymap switching 2022-02-03 00:47:22 +01:00
Sam Atkins
181d1e2dd6 LibWeb: Implement TransformationStyleValue::to_string() 2022-02-03 00:45:49 +01:00
Sam Atkins
5826fe094f LibWeb: Allow comma- or space-separated StyleValueLists
This lets us produce valid CSS in its to_string() method, instead of
always adding commas as before. :^)

Also, finally added a Formatter for StyleValues.
2022-02-03 00:45:49 +01:00
Sam Atkins
f71db4afd8 LibWeb: Make StyleValue::to_string() output valid CSS
Having clear debug output was useful, but most places that use to_string
() expect to get valid CSS, so let's do that. :^)
2022-02-03 00:45:49 +01:00