summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-12-25crash: Add "-X" option for attempting to execute non-executable memoryAndreas Kling
2019-12-25Kernel: Use the CPU's NX bit to enforce PROT_EXEC on memory mappingsAndreas Kling
Now that we have PAE support, we can ask the CPU to crash processes for trying to execute non-executable memory. This is pretty cool! :^)
2019-12-25Kernel: Interpret "reserved bit violation" page faults correctlyAndreas Kling
We don't actually react to these in any meaningful way other than crashing, but let's at least print the correct information. :^)
2019-12-25Kernel: Enable PAE (Physical Address Extension)Andreas Kling
Introduce one more (CPU) indirection layer in the paging code: the page directory pointer table (PDPT). Each PageDirectory now has 4 separate PageDirectoryEntry arrays, governing 1 GB of VM each. A really neat side-effect of this is that we can now share the physical page containing the >=3GB kernel-only address space metadata between all processes, instead of lazily cloning it on page faults. This will give us access to the NX (No eXecute) bit, allowing us to prevent execution of memory that's not supposed to be executed.
2019-12-25Build: Make sure we build everyone's STATIC_LIB_DEPS firstAndreas Kling
If a program's compilation depends on something generated by a library, we need to make sure that library is built before any of the program's own compilation units.
2019-12-25Build: add explicit 'all' target in root Makefilejoshua stein
2019-12-25Build: support library and generator dependenciesjoshua stein
Instead of directly manipulating LDFLAGS, set LIB_DEPS in each subdirectory Makefile listing the libraries needed for building/linking such as "LIB_DEPS = Core GUI Draw IPC Core". This adds each library as an -L and -l argument in LDFLAGS, but also adds the library.a file as a link dependency on the current $(PROGRAM). This causes the given library to be (re)built before linking the current $(PROGRAM), but will also re-link any binaries depending on that library when it is modified, when running make from the root directory. Also turn generator tools like IPCCompiler into dependencies on the files they generate, so they are built on-demand when a particular directory needs them. This all allows the root Makefile to just list directories and not care about the order, as all of the dependency tracking will figure it out.
2019-12-25LibCore: compile puff.c as a separate objectjoshua stein
2019-12-25Build: support compilation of .c filesjoshua stein
2019-12-25Kernel: Rename PageDirectory::find_by_pdb() => find_by_cr3()Andreas Kling
I caught myself wondering what "pdb" stood for, so let's rename this to something more obvious.
2019-12-25Kernel: Clean up Region access bit setters a littleAndreas Kling
2019-12-25Kernel: Clean up CPU fault register dumpsAndreas Kling
These were looking a bit messy after we started using 32-bit fields to store segment registers in RegisterDumps.
2019-12-25Kernel: Uh, actually *actually* turn on CR4.PGEAndreas Kling
I'm not sure how I managed to misread the location of this bit twice. But I did! Here is finally the correct value, according to Intel: "Page Global Enable (bit 7 of CR4)" Jeez! :^)
2019-12-24Kernel: Implement recursion limit on path resolutionShannon Booth
Cautiously use 5 as a limit for now so that we don't blow the stack. This can be increased in the future if we are sure that we won't be blowing the stack, or if the implementation is changed to not use recursion :^)
2019-12-24Kernel: Oops, actually enable CR4.PGE (page table global bit)Andreas Kling
Turns out we were setting the wrong bit here. Now we will actually keep kernel memory mappings in the TLB across context switches.
2019-12-24LibGUI: Use ColorRole::BaseText for the GCheckBox checkmarkAndreas Kling
2019-12-24CPUGraph.MenuApplet: Use a palette color for the graphAndreas Kling
2019-12-24LibDraw: Teach progress bar painting about palettesAndreas Kling
2019-12-24LibDraw: Add ColorRole::BaseText (to be painted on ColorRole::Base)Andreas Kling
2019-12-24LibGUI+LibDraw: Add "Palette" concept for scoped color themingAndreas Kling
GApplication now has a palette. This palette contains all the system theme colors by default, and is inherited by a new top-level GWidget. New child widgets inherit their parents palette. It is possible to override the GApplication palette, and the palette of any GWidget. The Palette object contains a bunch of colors, each corresponding to a ColorRole. Each role has a convenience getter as well. Each GWidget now has a background_role() and foreground_role(), which are then looked up in their current palette when painting. This means that you no longer alter the background color of a widget by setting it directly, rather you alter either its background role, or the widget's palette.
2019-12-24Userland: Add syscall -l option and man pageMauri de Souza Nunes
2019-12-24LibDraw: Add Selection and SelectionText system theme colorsAndreas Kling
2019-12-24Base: Describe kernel modules, syscalls, and programsConrad Pankoff
2019-12-24Kernel: Fail module loading if any symbols can not be resolvedConrad Pankoff
2019-12-24Docs: Add cal(1) man pageAndrés Vieira
2019-12-24Userland: Add support for printing multiple columns to the cal commandAndrés Vieira
Now cal is able to print the entire year when only that is passed as an argument. For example: `cal 1992`. However this meant breaking the highlighted day escape sequence as it messed up the layout and the character count for each of the rows :( Now the current day is specified like 17* (for example for day 17).
2019-12-24Meta: refresh-serenity-qtcreator.sh now checks if SERENITY_ROOT is setanon
2019-12-24SystemMonitor: Remove uneeded cast from unsigned to intShannon Booth
GVariant now supports unsigned ints :^)
2019-12-24LibDraw: Use SystemColor::ThreedHighlight everywhere in StylePainterAndreas Kling
2019-12-24LibGUI: Respect more theme colors in GTextEditorAndreas Kling
2019-12-24LibGUI: Respect more system theme colors in GToolBarAndreas Kling
2019-12-24LibGUI: More system theme support in GTabWidget and GTableViewAndreas Kling
2019-12-24LibDraw: Give Color::lightened() an amount argumentAndreas Kling
2019-12-24Themes: Add a simple "Dark" theme :^)Andreas Kling
2019-12-24LibDraw: Add Button and ButtonText system theme colorsAndreas Kling
These are now separate from the Window and WindowText colors.
2019-12-24LibGUI: Use SystemColor::Text in more placesAndreas Kling
2019-12-24WindowServer: Paint window frame button symbols in SystemColor::TextAndreas Kling
2019-12-24Kernel: Disallow loading a module twice without explicitly unloading itConrad Pankoff
This ensures that a module has the chance to run its cleanup functions before it's taken out of service.
2019-12-24Meta: Add ccls-cache to gitignoreShannon Booth
2019-12-24Build: Fix shellcheck warnings in makeall.shShannon Booth
"SC2115: Declare and assign separately to avoid masking return values."
2019-12-24Build: Meta: Allow makeall.sh and run to be called from any directoryShannon Booth
These scripts assume that they are called from within Kernel/ directory. For convenience, set the current working directory in the scripts to the path where they are located.
2019-12-24Kernel: Fix debug message and kernel stack region names in thread setupConrad Pankoff
2019-12-24Kernel: Mark kernel stack regions as... stack regionsConrad Pankoff
2019-12-24Kernel: Move ring0 stacks out of kmalloc_eternalConrad Pankoff
This allows us to use all the same fun memory protection features as the rest of the system for ring0 processes. Previously a ring0 process could over- or underrun its stack and nobody cared, since kmalloc_eternal is the wild west of memory.
2019-12-24Kernel: Add a size argument to validate_read_from_kernelConrad Pankoff
2019-12-24LibGUI: Paint GResizeCorner with SystemColor::Window backgroundAndreas Kling
2019-12-24Browser: Stop reloads from pushing to historyShannon Booth
2019-12-23Meta: Add environment variable to specify bochs command in run scriptConrad Pankoff
2019-12-23WindowServer+LibGUI: Implement basic color themingAndreas Kling
Color themes are loaded from .ini files in /res/themes/ The theme can be switched from the "Themes" section in the system menu. The basic mechanism is that WindowServer broadcasts a SharedBuffer with all of the color values of the current theme. Clients receive this with the response to their initial WindowServer::Greet handshake. When the theme is changed, WindowServer tells everyone by sending out an UpdateSystemTheme message with a new SharedBuffer to use. This does feel somewhat bloated somehow, but I'm sure we can iterate on it over time and improve things. To get one of the theme colors, use the Color(SystemColor) constructor: painter.fill_rect(rect, SystemColor::HoverHighlight); Some things don't work 100% right without a reboot. Specifically, when constructing a GWidget, it will set its own background and foreground colors based on the current SystemColor::Window and SystemColor::Text. The widget is then stuck with these values, and they don't update on system theme change, only on app restart. All in all though, this is pretty cool. Merry Christmas! :^)
2019-12-23Piano: Add piano rollWilliam McPherson
m_roll_notes[] is an array of 2 bools, pressed and playing. A roll note is highlighted if it is pressed or in the currently playing column, but the note is only actually played if the roll note is both pressed and playing. We change columns every m_tick which is currently 10 frames. The delay is synchronised with this. change_roll_column() tracks the previous column and current column to be played. Each roll note in the previous column is set to "not playing" and the underlying audio note is turned off if it was pressed. For the current column, each roll note is set to playing and the underlying audio note is turned on if pressed.