summaryrefslogtreecommitdiff
path: root/Kernel/Console.cpp
AgeCommit message (Collapse)Author
2019-07-03AK: Rename the common integer typedefs to make it obvious what they are.Andreas Kling
These types can be picked up by including <AK/Types.h>: * u8, u16, u32, u64 (unsigned) * i8, i16, i32, i64 (signed)
2019-06-07Kernel: Rename FileDescriptor to FileDescription.Andreas Kling
After reading a bunch of POSIX specs, I've learned that a file descriptor is the number that refers to a file description, not the description itself. So this patch renames FileDescriptor to FileDescription, and Process now has FileDescription* file_description(int fd).
2019-04-29Kernel: Have File virtuals take a FileDescriptor& rather than a Process&.Andreas Kling
This will allow us to implement different behaviors depending on the role of the descriptor a File is being accessed through.
2019-04-10Kernel: Remove two unneeded headers.Andreas Kling
2019-02-25Kernel: Make syscalls that take a buffer size use ssize_t instead of size_t.Andreas Kling
Dealing with the unsigned overflow propagation here just seems unreasonably error prone. Let's limit ourselves to 2GB buffer sizes instead.
2019-01-28Expose the kernel log buffer through /proc/dmesg.Andreas Kling
Also add a /bin/dmesg program for convenience.
2019-01-16Pass the process to CharacterDevice::read/write.Andreas Kling
This is much nicer than grabbing directly at 'current' inside a read().
2019-01-16Rename CharacterDevice::has_data_available_for_reading() -> can_read().Andreas Kling
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.
2018-12-03Yet more coding style fixes.Andreas Kling
2018-12-03More coding style changes.Andreas Kling
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-10-30Fix bug where Console::the() was initialized too late.Andreas Kling
Yet another problem due to lack of BSS zeroing in the kernel loader...
2018-10-30Start working on virtual consoles/TTYs.Andreas Kling
This is a mess right now, but I'd rather commit as I go.
2018-10-30Basic support the backspace key.Andreas Kling
This doesn't mean we get any line editing just yet. But the keyboard device now recognizes the backspace key, and the console device knows what to do with the backspace characters.
2018-10-29Fix broken SpinLock.Andreas Kling
The SpinLock was all backwards and didn't actually work. Fixing it exposed how wrong most of the locking here is. I need to come up with a better granularity here.
2018-10-28Add save/unsave cursor escape sequences.Andreas Kling
Also added a little terminal test program called /bin/tst.
2018-10-28Add basic support for ANSI color escape sequences.Andreas Kling
2018-10-27Implement 'H' and 'J' escape sequences.Andreas Kling
2018-10-26Remove logspam in /dev/{full,null,zero} now that they work just fine.Andreas Kling
Also don't echo anything to console when putch'ing '\0'.
2018-10-25Implement a basic way for read() to block.Andreas Kling
FileHandle gets a hasDataAvailableForRead() getter. If this returns true in sys$read(), the task will block(BlockedRead) + yield. The fd blocked on is stored in Task::m_fdBlockedOnRead. The scheduler then looks at the state of that fd during the unblock phase. This makes "sh" restful. :^) There's still some problem with the kernel not surviving the colonel task getting scheduled. I need to figure that out and fix it.
2018-10-23Remove remains of the old "panel" task.Andreas Kling
...and grow the console by 1 row! :^)
2018-10-23Also send console output to port 0xe9 (bochs console.)Andreas Kling
This is very handy for debugging.
2018-10-22A lot of hacking:Andreas Kling
- More work on funneling console output through Console. - init() now breaks off into a separate task ASAP. - ..this leaves the "colonel" task as a simple hlt idle loop. - Mask all IRQs on startup (except IRQ2 for slave passthru) - Fix underallocation bug in Task::allocateRegion(). - Remember how many times each Task has been scheduled. The panel and scheduling banner are disabled until I get things working nicely in the (brave) new Console world.
2018-10-21Have Console::write() directly call vga_putch.Andreas Kling
2018-10-21Add a Console device and start refactoring screen output.Andreas Kling