Andreas Kling
d0b2949b4d
AK: Lock should ASSERT_INTERRUPTS_ENABLED().
...
Trying to take a Lock while interrupts are disabled is always a bug.
2019-02-06 17:34:24 +01:00
Andreas Kling
a1b63bb6d4
Bootloader: Locate the kernel's data segment and clear it.
...
This was a constant source of stupid bugs and I kept postponing it because
I wasn't in the mood to write assembly code. Until now! :^)
2019-02-06 16:02:10 +01:00
Andreas Kling
781f216676
AK: Add a TemporaryChange helper class.
2019-02-06 16:01:59 +01:00
Andreas Kling
8cc6e304ca
Kernel: Clean up around Scheduler::yield() a bit.
...
Also add assertion in Lock that the scheduler isn't currently active.
I've been seeing occasional fuckups that I suspect might be someone called
by the scheduler trying to take a busy lock.
2019-02-06 15:06:48 +01:00
Andreas Kling
27263b6172
Clean up LDFLAGS a bit.
...
While working on the ELF loader I was trying to keep binaries as simple as
possible so I could understand them easily. Now that the ELF loader is mature
and working fine, we can move closer towards ld defaults.
2019-02-06 14:48:09 +01:00
Andreas Kling
353b191a49
Clean up some uninteresting log spam.
2019-02-06 11:32:23 +01:00
Andreas Kling
39c3b117c9
SharedGraphics: Fix broken rendering of partially clipped GlyphBitmaps.
2019-02-06 10:39:24 +01:00
Andreas Kling
b3b28b8b15
Kernel: Add /proc/pci so we can see what's on the PCI bus.
2019-02-06 10:29:35 +01:00
Andreas Kling
731fc5a7c8
Kernel: Much improved BochsVGA (BXVGA) support.
...
Instead of cowboy-calling the VESA BIOS in the bootloader, find the emulator
VGA adapter by scanning the PCI bus. Then set up the desired video mode by
sending device commands.
2019-02-06 10:17:26 +01:00
Andreas Kling
e9f6508ada
Remove some unused files.
2019-02-05 15:36:26 +01:00
Andreas Kling
ddb13ae6d8
LibC: Add some integer functionality needed for NASM.
2019-02-05 13:38:32 +01:00
Andreas Kling
caff611ca3
WindowServer: Tweak window title bar look.
2019-02-05 13:20:36 +01:00
Andreas Kling
0669ef8977
Kernel: Writing to a slave PTY should yield EIO if the master is closed.
2019-02-05 13:09:01 +01:00
Andreas Kling
2a0700af9a
Kernel: Closing a MasterPTY should generate a TTY hangup.
2019-02-05 12:55:19 +01:00
Andreas Kling
378e20c535
Kernel: Reading from a slave PTY should give EOF if master PTY is closed.
2019-02-05 12:27:32 +01:00
Andreas Kling
3accdb0e93
Handle WindowCloseRequest in FontEditor and /bin/guitest.
2019-02-05 12:07:06 +01:00
Andreas Kling
0a183df655
WindowServer: Tweak look of window close button.
2019-02-05 12:01:47 +01:00
Andreas Kling
0f15093e96
LizaRegular8x10: Tweak some glyphs.
2019-02-05 11:53:06 +01:00
Andreas Kling
38f589a9cb
SharedGraphics: Add some useful painting helpers and make use of them.
2019-02-05 11:42:58 +01:00
Andreas Kling
b782055b96
Kernel: Add an InterruptFlagSaver helper class.
...
This is useful instead of InterruptDisabler in some cases.
2019-02-05 11:14:09 +01:00
Andreas Kling
cd1bbdf052
WindowServer: Make the window close button look a bit nicer.
2019-02-05 11:05:24 +01:00
Andreas Kling
11db8c1697
Add a simple close button ("X") to windows.
...
Clicking the button generates a WindowCloseRequest event which the client app
then has to deal with. The default behavior for GWindow is to close() itself.
I also added a flag, GWindow::should_exit_event_loop_on_close() which does
what it sounds like it does.
This patch exposed some bugs in GWindow and GWidget teardown.
2019-02-05 10:31:37 +01:00
Andreas Kling
d0078b6574
Clock: Turns the clock window from guitest2 into a separate program.
...
We can't not have a desktop clock app. :^)
2019-02-05 09:44:13 +01:00
Andreas Kling
41567c5bb9
Show the amount of memory in GraphicsBitmaps in /bin/top.
...
This seems like an extremely relevant metric to track.
2019-02-05 09:27:27 +01:00
Andreas Kling
b1e054ffe8
Rename LizaBold to LizaRegular and LizaBlack to LizaBold.
...
LizaRegular is quickly becoming my favorite bitmap font. It's so pretty :^)
2019-02-05 09:08:25 +01:00
Andreas Kling
0c38a4c30f
WindowServer: Sever the WSWindow/Process link when the process dies.
...
This fixes a deadlock where the WindowServer would get stuck trying to
acquire a dead process's event stream lock.
2019-02-05 08:32:32 +01:00
Andreas Kling
ca16d9d98e
Kernel: Invalidate file-backed VMO's when inodes are written.
...
The current strategy is simply to nuke all physical pages and force
reload them from disk. This is obviously not optimal and should eventually
be optimized. It should be fairly straightforward.
2019-02-05 08:17:46 +01:00
Andreas Kling
af21a45b1a
FontEditor: Allow specifying which font to edit on the command line.
...
Also add a quit button. The quit button has a tendency to freeze the kernel.
That doesn't seem entirely right.
2019-02-05 07:23:01 +01:00
Andreas Kling
d459525725
AK: Vector::data() shouldn't crash if the vector is empty.
...
It's up to the caller to check size() and stay within the bounds.
2019-02-05 07:12:45 +01:00
Andreas Kling
a32b33621f
LizaBlack8x10: Tweak some glyphs.
2019-02-05 07:12:25 +01:00
Andreas Kling
a258d6507a
mmap all the font files!
...
Font now uses the same in-memory format as the font files we have on disk.
This allows us to simply mmap() the font files and not use any additional
memory for them. Very cool! :^)
Hacking on this exposed a bug in file-backed VMObjects where the first client
to instantiate a VMObject for a specific inode also got to decide its size.
Since file-backed VMObjects always have the same size as the underlying file,
this made no sense, so I removed the ability to even set a size in that case.
2019-02-05 06:43:33 +01:00
Andreas Kling
612c02307e
AK: Add bounds assertions in Vector::operator[].
...
I was sure I had this already.
2019-02-05 06:37:03 +01:00
Andreas Kling
c77f32d2f0
LizaBlack8x10: Import a very heavy variant of Liza.
2019-02-04 16:02:30 +01:00
Andreas Kling
d4aaba6bed
FontEditor: Minor UI improvements.
...
- Implement focus for custom widgets.
- Add two live demo labels with an English pangram in upper/lower case.
2019-02-04 15:38:03 +01:00
Andreas Kling
d7307c3119
Kernel: Ignore SIGCHLD by default.
...
Also use an enum for the rather-confusing return value in dispatch_signal().
I will go through the rest of the signals and set them up with the
appropriate default dispositions at some other point.
2019-02-04 14:06:38 +01:00
Andreas Kling
ba6ffea03c
Kernel: Process should send SIGCHLD to its parent when it dies.
2019-02-04 13:30:03 +01:00
Andreas Kling
7fe600f250
LibGUI: Use LightGray as the base UI color.
...
This feels nicely reminiscent of the gap in time between Win3.11 and Win95,
one of my favorite eras in UI look-and-feel.
2019-02-04 11:53:26 +01:00
Andreas Kling
6f787f6877
LibGUI: Use LizaBold as the default button font.
2019-02-04 11:41:01 +01:00
Andreas Kling
cacba45f1c
LizaBold8x10: Import a bold variant of Liza8x10 and make it the default bold.
...
Start using it right away for window titles.
2019-02-04 11:37:15 +01:00
Andreas Kling
ac11c90dee
ProcFS: Fix wrong linkage for /proc/cpuinfo inode.
2019-02-04 10:38:54 +01:00
Andreas Kling
bc6ff35428
LibGUI: GTextBox should only run a caret blink timer when focused.
2019-02-04 10:34:56 +01:00
Andreas Kling
c0cffe1134
Add a /bin/top program for process table monitoring.
...
It automagically computes %CPU usage based on the number of times a process
has been scheduled between samples. The colonel task is used as idle timer.
This is pretty cool. :^)
2019-02-04 10:28:12 +01:00
Andreas Kling
642e2447c9
Terminal: Fix broken parsing of background color escape.
2019-02-04 10:22:47 +01:00
Andreas Kling
356abbb7ee
Kernel: Process should disassociate from its TTY when it dies.
...
Just because we die doesn't mean we got waited on yet, so keeping around
a dangling TTY pointer is just asking for trouble.
2019-02-04 10:21:15 +01:00
Andreas Kling
9126d08a43
Terminal: Avoid dirtying lines when clearing them has no visual effect.
2019-02-04 08:53:53 +01:00
Andreas Kling
e88c8eae6a
AK: Fix leak in HashTable move assignment operator.
2019-02-04 08:53:12 +01:00
Andreas Kling
b51031bb54
Kernel: Add a /proc/all process table dump.
...
This will be useful for implementing some process-related utilities.
2019-02-03 18:53:18 +01:00
Andreas Kling
dddd0e7b03
Get nyancat nyanning in Serenity.
...
I found a cute program that renders an animated nyancat in the terminal.
This patch adds enough hackery to get it working correctly. :^)
2019-02-03 16:11:28 +01:00
Andreas Kling
3944c00f23
Terminal: Add limited support for 'M' escape sequence (delete line.)
2019-02-03 14:00:48 +01:00
Andreas Kling
31f44481f3
Add /dev/{stdin,stdout,stderr} as symlinks to /proc/self/fd/{0,1,2}
...
Also change /bin/cat to open /dev/stdin if no arguments are provided.
2019-02-03 12:38:03 +01:00