summaryrefslogtreecommitdiff
path: root/Kernel/Makefile
AgeCommit message (Collapse)Author
2019-02-25AK: Add Retained<T>, like RetainPtr, but never null.Andreas Kling
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-22Switch over to building everything with i686-elf-g++.Andreas Kling
2019-02-17Prune compiler flags a bit. Let's go with -march=i686 for now.Andreas Kling
2019-02-17Kernel: Rename BochsVGADevice to BXVGADevice.Andreas Kling
2019-02-17Kernel: Rename Keyboard to KeyboardDevice.Andreas Kling
2019-02-17Move WindowServer to userspace.Andreas Kling
This is a monster patch that required changing a whole bunch of things. There are performance and stability issues all over the place, but it works. Pretty cool, I have to admit :^)
2019-02-16Kernel: Add empty BlockDevice class.Andreas Kling
2019-02-16Kernel: Add Device base class for CharacterDevice.Andreas Kling
..to prepare for adding a BlockDevice class.
2019-02-15Enable -Wimplicit-fallthrough.Andreas Kling
2019-02-15Kernel: Remove GUIEventDevice.Andreas Kling
It's no longer used since all communication now happens across sockets. :^)
2019-02-14Kernel: Begin implementing UNIX domain sockets.Andreas Kling
2019-02-14Kernel: Remove ProcessGUI.cpp, merging remainders into Process.cpp.Andreas Kling
2019-02-14WindowServer: Add WSClientConnection class to manage an individual client.Andreas Kling
This makes both object lifetimes and object ID's a lot easier to understand.
2019-02-11WindowServer: Start implementing a menu system.Andreas Kling
I'm going with a global top-of-the-screen menu instead of per-window menus. The basic idea is that menus will live in the WindowServer and clients can create menus via WindowServer requests.
2019-02-07Add a fast memcpy() using MMX when we're moving >= 1KB.Andreas Kling
This is a nice speedup for WindowServer. I'll eventually have to do this with SSE but the kernel doesn't support SSE yet so this is it for now.
2019-02-06Clean up LDFLAGS a bit.Andreas Kling
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-06Kernel: Much improved BochsVGA (BXVGA) support.Andreas Kling
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-03Kernel: Rewrite ProcFS.Andreas Kling
Now the filesystem is generated on-the-fly instead of manually adding and removing inodes as processes spawn and die. The code is convoluted and bloated as I wrote it while sleepless. However, it's still vastly better than the old ProcFS, so I'm committing it. I also added /proc/PID/fd/N symlinks for each of a process's open fd's.
2019-02-02Add basic automatic dependency management to Makefiles.Andreas Kling
2019-01-30Add a /dev/pts filesystem and make PTY allocation dynamic.Andreas Kling
You can now open as many PTY pairs as you like. Well, it's actually capped at 8 for now, but it's just a constant and trivial to change. Unregistering a PTY pair is untested because I didn't want to start mucking with that in Terminal right now.
2019-01-26WindowServer: Rename WSEvent to WSMessage.Andreas Kling
Also do the same for WSMessageLoop and WSMessageReceiver. More to come.
2019-01-23Kernel: Get rid of Unix namespace.Andreas Kling
This is no longer needed as the Kernel can stand on its own legs now and there won't be any conflict with host system data types.
2019-01-23Move VFS sources into Kernel/.Andreas Kling
2019-01-19Make a SharedGraphics directory for classes shared between Kernel and LibGUI.Andreas Kling
2019-01-18WindowServer: Merge WSFrameBuffer into WSScreen.Andreas Kling
2019-01-16Tear out or duplicate what's unique for WindowServer from Widgets.Andreas Kling
This turned into a huge refactoring that somehow also includes making locks recursive/reentrant.
2019-01-16Add a PTY multiplexer (/dev/ptmx) device.Andreas Kling
When you open /dev/ptmx, you get a file descriptor pointing to one of the available MasterPTY's. If none are available, you get an EBUSY. This makes it possible to open multiple (up to 4) Terminals. :^) To support this, I also added a CharacterDevice::open() that gets control when VFS is opening a CharacterDevice. This is useful when we want to return a custom FileDescriptor like we do here.
2019-01-15Oops, finish WindowServer rename.Andreas Kling
2019-01-15Rename WindowComposer -> WindowServer.Andreas Kling
I keep referring to it as the windowing server anyway.
2019-01-15Add basic PTY support.Andreas Kling
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-14Start refactoring the windowing system to use an event loop.Andreas Kling
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-13Start working on a GUI kernel API.Andreas Kling
2019-01-12Get rid of the "root widget" concept in WindowManager.Andreas Kling
Instead just create a GraphicsBitmap wrapper around the display framebuffer and teach Painter how to draw directly into a GraphicsBitmap.
2019-01-11Throw up some widgets on screen so we can see what they look like.Andreas Kling
2019-01-11Add a simple PS/2 mouse device.Andreas Kling
It's not hooked up to anything just yet, but it does read movement deltas.
2019-01-10Hook everything up to run the GUI on top of the kernel.Andreas Kling
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-09Switch into 1024x768x32bpp VESA LFB mode at boot.Andreas Kling
This is going to be pretty cool once I can hook up the Widgets/ code to it.
2019-01-04Don't omit frame pointers. Duh. This fixes /proc/PID/stack listings.Andreas Kling
2018-12-24Move kernel symbolication code out of init.cpp and into its own KSym files.Andreas Kling
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-21Remove FS::read_entire_inode() in favor of Inode::read_entire().Andreas Kling
2018-12-03Move DoubleBuffer to its own files.Andreas Kling
2018-12-02Move ELFLoader code into Kernel/.Andreas Kling
2018-11-18Finally hook up the mkdir code to a syscall.Andreas Kling
Added a /bin/mkdir that makes directories. How very neat :^) There are various limitations because of missing functionality.
2018-11-12Add primitive FIFO and hook it up to sys$pipe().Andreas Kling
It's now possible to do this in bash: cat kernel.map | fgrep List This is very cool! :^)
2018-11-10Merge VGA into VirtualConsole.Andreas Kling
2018-11-10Merge Disk namespace into the IDEDiskDevice class.Andreas Kling
2018-11-09Make kernel build with clang.Andreas Kling
It's a bit faster than g++ and seems to generate perfectly fine code. The kernel is also roughly 10% smaller(!)
2018-11-09Fix all current build warnings in the kernel.Andreas Kling
2018-11-08Make it run in QEMU.Andreas Kling
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-07Move the scheduler code to its own class.Andreas Kling
This is very mechanical.