Andreas Kling
cac557eee0
Kernel: Make Region::try_create_user_accessible() OOM-safe
...
Previously we would simply assume that Region allocation always
succeeded. There is still one such assumption when splitting user
regions inside a Space. That will be dealt with in a separate commit.
2021-07-11 18:11:31 +02:00
Andreas Kling
241bbce264
Kernel: LoopbackAdapter::create() => try_create()
...
Allow this to fail (although we VERIFY that it succeeds during boot
for now, since we don't want to boot without a loopback adapter.)
2021-07-11 18:00:31 +02:00
Andreas Kling
e4dfb0fdf3
Kernel: Make NetworkAdapter::class_name() return a StringView
2021-07-11 17:59:38 +02:00
Andreas Kling
68f2250768
Kernel: Make VMObject::class_name() return a StringView
2021-07-11 17:57:52 +02:00
Andreas Kling
88d490566f
Kernel: Rename various *VMObject::create*() => try_create()
...
try_*() implies that it can fail (and they all return RefPtr with
nullptr signalling failure.)
2021-07-11 17:55:29 +02:00
Andreas Kling
af8c74a328
Kernel: Make SharedInodeVMObject allocation OOM-safe
2021-07-11 17:52:07 +02:00
Andreas Kling
59049ae4b7
Kernel: Store VMObject physical pages in a FixedArray
...
Let's enforce the invariant that VMObjects don't shrink or grow by
storing the pages in a FixedArray.
2021-07-11 17:42:31 +02:00
Andreas Kling
7d096a1287
Kernel: Make VMObject vend physical page range as a span
...
Stop exposing the internal data structure used for storing the physical
pages and return a Span<RefPtr<PhysicalPage>> instead.
2021-07-11 17:42:31 +02:00
Andreas Kling
846685fca2
Kernel: Remove bogus VMObject resizing in VirtIOGPU
...
It is not legal to resize a VMObject after it has been created.
As far as I can tell, this code would never actually run since the
object was already populated with physical pages due to using
AllocationStrategy::AllocateNow.
2021-07-11 17:42:31 +02:00
Andreas Kling
055726ecf5
Kernel: Remove unused MemoryManager::find_region_from_vaddr()
2021-07-11 17:42:31 +02:00
Andreas Kling
112c7f9a5b
Kernel: Remove unused MemoryManager::m_physical_page_entries_free
2021-07-11 15:15:57 +02:00
Andreas Kling
0afccb560b
Kernel: Remove some duplicate forward declarations
2021-07-11 15:15:57 +02:00
Andreas Kling
b2cd9b2c88
Kernel: Remove pointless ref-counting from PhysicalRegion
...
These are not multiple-owner objects and have no use for ref-counting.
Make them simple value types instead (not eternal heap-allocated.)
2021-07-11 15:15:57 +02:00
Max Wipfli
29d53cbee2
Kernel: Return correct error numbers for the mkdir syscall
...
Previously, VirtualFileSystem::mkdir() would always return ENOENT if
no parent custody was returned by resolve_path(). This is incorrect when
e.g. the user has no search permission in a component of the path
prefix (=> EACCES), or if on component of the path prefix is a file (=>
ENOTDIR). This patch fixes that behavior.
2021-07-11 14:59:57 +02:00
Andreas Kling
25e850ebb1
Kernel: Remove krealloc()
...
This was only used by a single class (AK::ByteBuffer) in the kernel
and not in an OOM-safe way.
Now that ByteBuffer no longer uses it, there's no need for the kernel
heap to burden itself with supporting this.
2021-07-11 14:14:51 +02:00
Andreas Kling
0718bd264c
Kernel: Remove some no-longer-needed C library functions
...
Now that we no longer demangle symbols in the kernel, we don't need to
provide stuff like malloc(), memchr(), free(), etc to the demangler.
2021-07-11 14:14:51 +02:00
Andreas Kling
f684742f15
Kernel: VERIFY_NOT_REACHED in un-sized operator delete
...
All deletes in kernel code should now be of known size. :^)
2021-07-11 14:14:51 +02:00
Andreas Kling
43d7a7f274
Kernel: Use kfree_sized() in KString
2021-07-11 14:14:51 +02:00
Andreas Kling
d38b4e4665
Kernel: Add kfree_sized(), kfree() with a known allocation size
...
C++14 gave us sized operator delete, but we haven't been taking
advantage of it. Let's get to a point where it can help us by
adding kfree_sized(void*, size_t).
2021-07-11 14:14:51 +02:00
Andreas Kling
98080497d2
Kernel: Use Forward.h headers more
2021-07-11 14:14:51 +02:00
Max Wipfli
9ab528ff5c
Kernel: Make KLexicalPath::basename() more compliant
...
This removes some assertions from KLexicalPath::basename() by supporting
paths with trailing slashes, empty paths, paths consisting of only
slashes and paths with ending "." and ".." segments.
2021-07-11 14:10:58 +02:00
Andreas Kling
c9f6786e8b
Kernel: Make various T::class_name() and similar return StringView
...
Instead of returning char const*, we can also give you a StringView.
2021-07-11 01:46:59 +02:00
Andreas Kling
fa9111ac46
Kernel: Rename ProcFSComponentsRegistrar => ProcFSComponentRegistry
...
This matches the formatting used in SysFS.
2021-07-11 01:40:26 +02:00
Andreas Kling
c1143e1bae
Kernel: Remove friend classes from ProcFSComponentsRegistrar
2021-07-11 01:39:51 +02:00
Andreas Kling
358a7cc448
Kernel: Rename SysFS related classes in BIOS code
...
Give them names that sound related to SysFS.
2021-07-11 01:38:01 +02:00
Andreas Kling
84ae2b6f00
Kernel: Use nested namespace declarations in ACPI code
2021-07-11 01:36:30 +02:00
Andreas Kling
b1c68dd235
Kernel: Rename SysFS related classes in ACPI code
...
Give them names that sound related to SysFS.
2021-07-11 01:35:17 +02:00
Andreas Kling
805319ed30
Kernel: Replace "Folder" => "Directory" everywhere
...
Folders are a GUI concept, file systems have directories. :^)
2021-07-11 01:33:40 +02:00
Andreas Kling
5ec3f5433e
Kernel: Rename SysFS related classes in PCI code
...
Give them names that sound related to SysFS.
2021-07-11 01:31:48 +02:00
Andreas Kling
c74b3a310f
Kernel: Remove pointless lock/unlock in SysFS constructor
2021-07-11 01:18:20 +02:00
Andreas Kling
a9decf5aa6
Kernel: Remove all friend declarations from SysFSComponentRegistry
...
Let them access the class using public API instead.
2021-07-11 01:17:57 +02:00
Andreas Kling
d40ea1a0a8
Kernel: Move SystemExposed.* => FileSystem/SysFSComponent.*
2021-07-11 01:14:53 +02:00
Andreas Kling
807aadbe6e
Kernel: Remove some dead code and unused includes in SysFS files
2021-07-11 01:13:24 +02:00
Andreas Kling
98acebf56b
Kernel: Move SysFS forward declarations to FileSystem/Forward.h
2021-07-11 01:09:48 +02:00
Andreas Kling
60a7a9d523
Kernel: Rename SystemExposedFolder => SysFSDirectory
...
"Folder" is a GUI concept, let's call this "Directory".
Also, "System" is completely generic, so let's be more specific and
call this "SysFS..."
2021-07-11 01:07:27 +02:00
Andreas Kling
517170a986
Kernel: Rename SystemExposedComponent => SysFSComponent
2021-07-11 01:06:27 +02:00
Andreas Kling
27244eb0ee
Kernel: Rename SystemRegistrar => SysFSComponentRegistry
2021-07-11 01:05:26 +02:00
Andreas Kling
ea8578bf11
Kernel: Remove unnecessary includes in FileSystem.{cpp,h}
2021-07-11 01:01:54 +02:00
Andreas Kling
55c6e08c9e
Kernel: Remove unnecessary String allocation in SystemExposedFolder
2021-07-11 00:58:23 +02:00
Andreas Kling
66f483b1a1
Kerne: Switch SysFS to east-const style
2021-07-11 00:56:53 +02:00
Andreas Kling
7a4e6257b7
Kernel: Switch Custody to east-const style
2021-07-11 00:51:38 +02:00
Andreas Kling
4238e2e9be
Kernel: Only allow looking up Mounts by InodeIdentifier
...
Let's simplify the interface by not allowing lookup by Inode&.
2021-07-11 00:51:06 +02:00
Andreas Kling
6a27de2d94
Kernel: Make VirtualFileSystem::Mount a top-level class
...
And move it to its own compilation unit.
2021-07-11 00:51:06 +02:00
Andreas Kling
79552c91d5
Kernel: Rename BlockBasedFS => BlockBasedFileSystem
2021-07-11 00:34:36 +02:00
Andreas Kling
502bbacea0
Kernel: Rename FileBackedFS => FileBackedFileSystem
2021-07-11 00:33:27 +02:00
Andreas Kling
07c4c89297
Kernel: Make VirtualFileSystem::sync() static
2021-07-11 00:26:17 +02:00
Andreas Kling
0d39bd04d3
Kernel: Rename VFS => VirtualFileSystem
2021-07-11 00:25:24 +02:00
Andreas Kling
d53d9d3677
Kernel: Rename FS => FileSystem
...
This matches our common naming style better.
2021-07-11 00:20:38 +02:00
Ralf Donau
8ee3a5e09e
Kernel: Logic fix in the pledge syscall
...
Pledge should check m_has_promises. Calling pledge("", nullptr)
does not fail on an already pledged process anymore.
2021-07-10 21:59:29 +02:00
Tom
02651f8dc6
Kernel: Make VirtIO GPU buffer flipping more spec compliant
...
The spec requires a flush after setting the new buffer resource id,
which is required by QEMUs SDL backend but not the GTK backend. This
brings us in line with the spec and makes it work for the SDL backend.
2021-07-10 21:24:52 +02:00