Andreas Kling
46181cf023
Oops, finish WindowServer rename.
2019-01-15 21:46:15 +01:00
Andreas Kling
e42f090ed3
Rename WindowComposer -> WindowServer.
...
I keep referring to it as the windowing server anyway.
2019-01-15 21:16:04 +01:00
Andreas Kling
2f74c2f430
Add basic PTY support.
...
For now, there are four hard-coded PTYs: /dev/pt{m,s}[0123]
Use this in the Terminal to open a pty pair and spawn a shell.
2019-01-15 06:30:19 +01:00
Andreas Kling
b0e3f73375
Start refactoring the windowing system to use an event loop.
...
Userspace programs can now open /dev/gui_events and read a stream of GUI_Event
structs one at a time.
I was stuck on a stupid problem where we'd reenter Scheduler::yield() due to
having one of the has_data_available_for_reading() implementations using locks.
2019-01-14 14:42:49 +01:00
Andreas Kling
8f8c8d1ca3
Start working on a GUI kernel API.
2019-01-13 02:02:34 +01:00
Andreas Kling
bb28c31531
Get rid of the "root widget" concept in WindowManager.
...
Instead just create a GraphicsBitmap wrapper around the display framebuffer
and teach Painter how to draw directly into a GraphicsBitmap.
2019-01-12 03:42:50 +01:00
Andreas Kling
a3c39ea9d6
Throw up some widgets on screen so we can see what they look like.
2019-01-11 04:10:07 +01:00
Andreas Kling
e740f1195a
Add a simple PS/2 mouse device.
...
It's not hooked up to anything just yet, but it does read movement deltas.
2019-01-11 02:28:53 +01:00
Andreas Kling
f6d2c3ed87
Hook everything up to run the GUI on top of the kernel.
...
Okay things kinda sorta work. Both Bochs and QEMU now boot into GUI mode.
There's a ton of stuff that doesn't make sense and so many things to rework.
Still it's quite cool to have made it this far. :^)
2019-01-10 23:19:29 +01:00
Andreas Kling
659c54e32b
Switch into 1024x768x32bpp VESA LFB mode at boot.
...
This is going to be pretty cool once I can hook up the Widgets/ code to it.
2019-01-09 02:29:11 +01:00
Andreas Kling
ba91ab1038
Don't omit frame pointers. Duh. This fixes /proc/PID/stack listings.
2019-01-04 19:02:21 +01:00
Andreas Kling
503e32552c
Move kernel symbolication code out of init.cpp and into its own KSym files.
...
Also use a simple array of { dword, const char* } for the KSyms and put the
whole shebang in kmalloc_eternal() memory. This was a fugly source of
kmalloc perma-frag.
2018-12-24 23:01:09 +01:00
Andreas Kling
7bc41532be
Remove FS::read_entire_inode() in favor of Inode::read_entire().
2018-12-21 17:45:42 +01:00
Andreas Kling
bbfae19238
Move DoubleBuffer to its own files.
2018-12-03 01:51:44 +01:00
Andreas Kling
44036f32bc
Move ELFLoader code into Kernel/.
2018-12-02 20:27:08 +01:00
Andreas Kling
de4604ac95
Finally hook up the mkdir code to a syscall.
...
Added a /bin/mkdir that makes directories. How very neat :^)
There are various limitations because of missing functionality.
2018-11-18 15:02:16 +01:00
Andreas Kling
f1404aa948
Add primitive FIFO and hook it up to sys$pipe().
...
It's now possible to do this in bash:
cat kernel.map | fgrep List
This is very cool! :^)
2018-11-12 01:28:46 +01:00
Andreas Kling
2ac5e14c08
Merge VGA into VirtualConsole.
2018-11-10 16:26:18 +01:00
Andreas Kling
b8264e7d47
Merge Disk namespace into the IDEDiskDevice class.
2018-11-10 15:15:31 +01:00
Andreas Kling
ebf308d413
Make kernel build with clang.
...
It's a bit faster than g++ and seems to generate perfectly fine code.
The kernel is also roughly 10% smaller(!)
2018-11-09 12:22:31 +01:00
Andreas Kling
47b7eeda44
Fix all current build warnings in the kernel.
2018-11-09 10:03:21 +01:00
Andreas Kling
71a2942a0a
Make it run in QEMU.
...
Looks like the problem was the weirdly-sized floppy image file.
I guess QEMU was inferring the floppy disk geometry from the image size.
2018-11-08 02:03:19 +01:00
Andreas Kling
39d2fcbbee
Move the scheduler code to its own class.
...
This is very mechanical.
2018-11-07 22:15:02 +01:00
Andreas Kling
83172e6a4b
Rename FileHandle to FileDescriptor.
2018-11-07 11:37:54 +01:00
Andreas Kling
e088121b3a
Fix sys$sigaction() to return the old action metadata if requested.
2018-11-07 10:48:44 +01:00
Andreas Kling
d7a41579e5
Miscellaneous compat work while seeing if GNU coreutils would build.
2018-11-07 10:23:16 +01:00
Andreas Kling
422b5403e5
Merge ExecSpace into ELFLoader.
2018-11-04 13:52:53 +01:00
Andreas Kling
05565bad58
Make IO helpers inline and use immediate-encoded ports when possible.
2018-11-02 10:14:26 +01:00
Andreas Kling
3e532ac7b6
Process now maps regions immediately when they are allocated.
...
This avoids having to do a separate MM.mapRegionsForTask() pass.
Also, more Task => Process renaming that I apparently hadn't saved yet.
2018-11-01 13:15:46 +01:00
Andreas Kling
68739dc43e
Start working on virtual consoles/TTYs.
...
This is a mess right now, but I'd rather commit as I go.
2018-10-30 13:59:29 +01:00
Andreas Kling
1d4af51250
Add a VFS::absolutePath(InodeIdentifier).
...
This is pretty inefficient for ext2fs. We walk the entire block group
containing the inode, searching through every directory for an entry
referencing this inode.
It might be a good idea to cache this information somehow. I'm not sure
how often we'll be searching for it.
Obviously there are multiple caching layers missing in the file system.
2018-10-28 12:20:25 +01:00
Andreas Kling
e904f193c1
Canonicalize the path used by sh.
...
With a bunch of LibC work to support the feature. LibC now initializes
AK::StringImpl by default. It's now fine to use AK in LibC/Userland! :^)
2018-10-28 09:36:21 +01:00
Andreas Kling
9a71c7759a
Implement loading of linked ELF executables.
...
This took me a couple hours. :^)
The ELF loading code now allocates a single region for the entire
file and creates virtual memory mappings for the sections as needed.
Very nice!
2018-10-27 14:56:52 +02:00
Andreas Kling
5cfeeede7c
Remove the obsolete "Userspace" stuff.
2018-10-27 00:41:23 +02:00
Andreas Kling
c928b06218
Add a very hackish /proc/PID/stack.
...
It walks the stack and identifies anything that looks like a kernel symbol.
This could be a lot more sophisticated.
2018-10-26 22:33:15 +02:00
Andreas Kling
dc6f57f19c
Add gettimeofday() syscall and LibC wrappers gettimeofday() and time().
...
This only has second accuracy right now, I'll work out subseconds later.
2018-10-25 17:36:18 +02:00
Andreas Kling
4bd69d4352
Remove old DatBuffer class.
...
(also increase the number of sectors loaded by the bootloader in the
since I just noticed we were at the limit. This is not the ideal way
of doing this.)
2018-10-25 10:50:30 +02:00
Andreas Kling
de7c54545a
Remove age-old IPC stuff that wasn't working anyway.
...
I'll make a fresh start with IPC code when I get there.
2018-10-25 10:39:39 +02:00
Andreas Kling
3676214a62
Remove remains of the old "panel" task.
...
...and grow the console by 1 row! :^)
2018-10-23 15:47:03 +02:00
Andreas Kling
ed2422d7af
Start adding a basic /proc filesystem and a "ps" utility.
2018-10-23 12:04:03 +02:00
Andreas Kling
63764b3a65
Import very modest Userland.
2018-10-22 14:06:22 +02:00
Andreas Kling
bae59609e3
Move kprintf to its own file. It has nothing to do with VGA anymore.
2018-10-22 13:20:35 +02:00
Andreas Kling
a9ca75c98b
Add IRQHandler class that can be subclasses to handle an IRQ.
...
Also move Keyboard to a class implementation using this pattern.
2018-10-22 12:58:29 +02:00
Andreas Kling
a70bfb87d5
Add a Console device and start refactoring screen output.
2018-10-21 21:59:43 +02:00
Andreas Kling
c149d2a8f0
Build ELFLoader into Kernel.
2018-10-18 15:03:10 +02:00
Andreas Kling
77299cf54d
Add basic paging. Only identity maps the bottom 4MB as a start.
2018-10-17 23:13:55 +02:00
Andreas Kling
e0f31d38a2
Add -fno-pic -fno-pie to build flags.
2018-10-17 16:49:30 +02:00
Andreas Kling
39fa1eb2c2
Print the contents of motd.txt on boot.
2018-10-17 12:07:39 +02:00
Andreas Kling
705832f387
List the root directory after mounting /.
...
So cool that it works! It's spewing out a bunch of terminal escape sequences
that the OS console obviously doesn't support, but we'll get there too.
2018-10-17 11:47:14 +02:00
Andreas Kling
d2425495ca
VirtualFileSystem class builds inside Kernel.
2018-10-17 11:40:58 +02:00
Andreas Kling
9171521752
Integrate ext2 from VFS into Kernel.
2018-10-17 10:57:23 +02:00
Andreas Kling
aec8ab0a60
Add the basic character devices to kernel.
2018-10-16 14:33:16 +02:00
Andreas Kling
12e515735b
Add a simple IDEDiskDevice class that implements DiskDevice from VFS.
2018-10-16 14:17:43 +02:00
Andreas Kling
9396108034
Import the "gerbert" kernel I worked on earlier this year.
...
It's a lot crappier than I remembered it. It's gonna need a lot of work.
2018-10-16 11:02:00 +02:00