summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-12-23Kernel: Make major and minor numbers to be DistinctNumericsLiav A
This helps avoid confusion in general, and make constructors, methods and code patterns much more clean and understandable.
2021-12-23Profiler: Use AK::any_of for process filtrationHendiadyoin1
Equivalent to std::ranges::any_of as clang-tidy suggests.
2021-12-23Profiler: Always use FlyString const&'s in ProfileNode constructionHendiadyoin1
No need to copy and move them around, just to pass them as a `String const&` to the constructor. We still end up copying it to a normal String in the end though...
2021-12-23Profiler: Remove one else-after-returnHendiadyoin1
2021-12-23Profiler: Don't return constant copies of GUI::ModelIndexHendiadyoin1
2021-12-23Profiler: Add some implied auto qualifiersHendiadyoin1
2021-12-23LibX86: Mark two InstructionDescriptor functions as constHendiadyoin1
Thanks clang-tidy
2021-12-23UserspaceEmulator: Return ValueAndShadowReference& on operator=Hendiadyoin1
This is what normal assign operators do and what clang-tidy expects form us.
2021-12-23UserspaceEmulator: Avoid copies of non trivial types on invocationsHendiadyoin1
These include AK::String and X86::Instruction
2021-12-23UserspaceEmulator: Remove redundant private specifier in SoftCPU.hHendiadyoin1
2021-12-23UserspaceEmulator: Remove some else-after-returnsHendiadyoin1
2021-12-23UserspaceEmulator: Add some implied auto qualifiersHendiadyoin1
2021-12-23LibMain: Make "Runtime error" `warnln` redJames Puleo
Stealing what Andreas did for the `dbgln` output, I think it also looks nice inside of Terminal :^)
2021-12-23Kernel: Enter new address space before destroying old in sys$execve()Andreas Kling
Previously we were assigning to Process::m_space before actually entering the new address space (assigning it to CR3.) If a thread was preempted by the scheduler while destroying the old address space, we'd then attempt to resume the thread with CR3 pointing at a partially destroyed address space. We could then crash immediately in write_cr3(), right after assigning the new value to CR3. I am hopeful that this may have been the bug haunting our CI for months. :^)
2021-12-23Kernel: Don't honor userspace SIGSTOP requests in Thread::block()Andreas Kling
Instead, wait until we transition back to userspace. This stops userspace from being able to suspend a thread indefinitely while it's running in kernelspace (potentially holding some blocking mutex.)
2021-12-22Base: Add remaining Geometric Shapes to font Katica Regular 10Lady Gegga
25B2-25FF https://www.unicode.org/charts/PDF/U25A0.pdf
2021-12-22Base: Add some General Punctuation glyphs to font Katica Regular 10Lady Gegga
2038, 203F, 2040, 2045, 2046, 2054 https://www.unicode.org/charts/PDF/U2000.pdf
2021-12-22Base: Add some Katakana characters to font Katica Regular 10Lady Gegga
30A0, 30B3, 30C3, 30C4, 30FB, 30FC, 30FF https://www.unicode.org/charts/PDF/U30A0.pdf
2021-12-22Base: Add Half- and Fullwidth Forms glyphs to font Katica Regular 10Lady Gegga
FF01-FF02, FF07-FF0F, FF3B-FF3D https://www.unicode.org/charts/PDF/UFF00.pdf
2021-12-22Kernel: Initialize SupriousInterruptHandler::m_enabled on constructionBrian Gianforcaro
Found by PVS Studio Static Analysis
2021-12-22Kernel: Always initialize ext2_inode and ext_super_block structsBrian Gianforcaro
Found by PVS Studio Static Analysis
2021-12-22Kernel: Initialize PhysicalRegion::m_large_zones, remove m_small_zonesBrian Gianforcaro
Found by PVS Studio Static Analysis.
2021-12-22IPCCompiler: Default initialize all parameter member variablesBrian Gianforcaro
PVS Studio static analysis noticed we didn't initialize these in a bunch of cases. This change fixes that so we will always initialize these using universal initialization.
2021-12-22Ports: Add `fio` portBrian Gianforcaro
fio allows you to test various different IO subsystems and patterns. It can help us test and benchmark the I/O subsystems of Serenity. This port gets the fio bootstrapped and working, using the included .fio file, I have been able to test the file I/O performance already.
2021-12-22LibC: Add support for `posix_madvise(..)`Brian Gianforcaro
Add the `posix_madvise(..)` LibC implementation that just forwards to the normal `madvise(..)` implementation. Also define a few POSIX_MADV_DONTNEED and POSIX_MADV_NORMAL as they are part of the POSIX API for `posix_madvise(..)`. This is needed by the `fio` port.
2021-12-22Ports: Remove obsolete siginfo_t::si_error Python3 patchIdan Horowitz
2021-12-22Kernel: Add the si_errno and si_band siginfo_t membersIdan Horowitz
These 2 members are required by POSIX and are also used by some ports. Zero is a valid value for both of these, so no further work to support them is required.
2021-12-22Meta: Add a cmake flag for building for compiler explorerAli Mohammad Pur
We don't need to build tests/binaries for CE.
2021-12-22Base: Add a stack of quotes I collected :^)kleines Filmröllchen
2021-12-22LibJS: Avoid crashing when the Unicode data generators are disabledTimothy Flynn
The general idea when ENABLE_UNICODE_DATABASE_DOWNLOAD is OFF has been that the Intl APIs will provide obviously incorrect results, but should not crash. This regressed a bit with NumberFormat and DateTimeFormat.
2021-12-22Ports: Update Python patches for the recent signal changesTim Schumacher
The old patch to define `HAVE_SIGSET_T` is no longer needed, as we now have implementations for `sigwaitinfo` and `sigtimedwait`. Instead, for the same reason, we now have to remove a reference to `si_errno`, which we haven't implemented yet but is just assumed to be there.
2021-12-22LibJS: Fix modulo in get_iso_parts_from_epoch() for negative epoch nsLinus Groh
This now matches the spec change from reminder() to modulo which was done here: https://github.com/tc39/proposal-temporal/commit/bdf60f5
2021-12-22LibJS: Add modulo(x, y) overload for Crypto::{Unsigned,Signed}BigIntegerLinus Groh
Just like with integral and floating numbers, doing it manually is error-prone: when we get a negative remainder, y has to be added to the result to match the spec's modulo. Solve this by just adding another (templated) overload to also permit using the function for LibCrypto BigInts.
2021-12-22LibCrypto: Add the BigInteger conceptLinus Groh
This makes it much easier to write (template) functions that accept either a signed or unsigned bigint parameter.
2021-12-22LibJS: Support modulo(x, y) with different typesLinus Groh
It's a bit annoying having to add '.0' to y given that it's an integral number in most cases. This turns the single template parameter T into T and U to permit that.
2021-12-22HackStudio: Attach debuggee to "Console" terminal tabItamar
Previously the debuggee process used the same tty of the HackStudio process. We now set things up so the debuggee gets attached to the TerminalWrapper in the "Console" tab.
2021-12-22LibDebug: Add optional setup_child() callback to debuggerItamar
If set, this callback gets called right after fork() in the child process. It can be used by the caller if it wants to perform some logic in the child process before it starts executing the debuggee program.
2021-12-22HackStudio: Separate master & slave PTY setup in TerminalWrapperItamar
Previously the setup for both the master and slave pseudoterminals was done in TerminalWrapper::run_command. This commit separates the relevant logic into TerminalWrapper::setup_master_pseudoterminal and TerminalWrapper::setup_slave_pseudoterminal.
2021-12-22HackStudio: Rename "Build" tab to "Console"Itamar
The TerminalWrapper in this tab is not only used for displaying build output, so "Console" would be a better name.
2021-12-22Calculator: Make double construction and conversion privatecreator1creeper1
At this point, the double conversions should really only be implementation details of the KeypadValue class. Therefore, the constructor-from double and conversion-operator-to double of KeypadValue are made private. Instead, the required functionality is provided by KeypadValue itself. The internal implementation is still done using doubles. However, this opens us up to the possibility of having loss-free square root, inversion and division in the future.
2021-12-22Kernel: Switch KUBSAN prints to use critical_dmesgln instead of dbglnIdan Horowitz
This allows to KUBSAN to print correctly in strictier memory conditions. This patch also removes some useless curly braces around single line ifs.
2021-12-22Kernel: Move userspace virtual address range base to 0x10000Idan Horowitz
Now that the shared bottom 2 MiB virtual address mappings are gone userspace can use lower virtual addresses.
2021-12-22Kernel: Don't share the bottom 2 MiB of kernel mappings with processesIdan Horowitz
Now that the last 2 users of these mappings (the Prekernel and the APIC ap boot environment) were removed, these are no longer used.
2021-12-22Kernel: Unmap Prekernel pages after they are no longer neededDaniel Bertalan
The Prekernel's memory is only accessed until MemoryManager has been initialized. Keeping them around afterwards is both unnecessary and bad, as it prevents the userland from using the 0x100000-0x155000 virtual address range. Co-authored-by: Idan Horowitz <idan.horowitz@gmail.com>
2021-12-22Kernel: Exclude PROT_NONE regions from coredumpsDaniel Bertalan
As PROT_NONE regions can't be accessed by processes, and their only real use is for reserving ranges of virtual memory, there's no point in including them in coredumps.
2021-12-22Kernel: Replace intersecting ranges in mmap when MAP_FIXED is specifiedDaniel Bertalan
This behavior is mandated by POSIX and is used by software like Wine after reserving large chunks of the address range.
2021-12-22Kernel: Setup APIC AP cores boot environment before init_stage2Idan Horowitz
Since this range is mapped in already in the kernel page directory, we can initialize it before jumping into the first kernel process which lets us avoid mapping in the range into init_stage2's address space. This brings us half-way to removing the shared bottom 2 MiB mapping in every process, leaving only the Prekernel.
2021-12-22LibELF: Ignore unknown dynamic tags instead of assertingIdan Horowitz
Some programs (like wine) add custom dynamic tags to their binaries that are used internally by them, so we can just ignore them.
2021-12-22Kernel+LibC: Stub out getifaddrs() and freeifaddrs()Idan Horowitz
These are required for some ports.
2021-12-22Kernel+LibC: Stub out if_nameindex() and if_freenameindex()Idan Horowitz
These should allow users to receive the names of network interfaces in the system, but for now these are only stubs required to compile some ports.