Commit Graph

260 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen f5c4b64aff The console can now be rendered to any text buffer.
The console renderer now renders to a text buffer, which can be implemented
on any device, whether it's the VGA text buffer or a bitmap graphics device
with font rendering. This replaces the older code that could only render to
a VGA framebuffer and where the input parsing was tightly coupled with the
device rendering phase.
2012-07-24 14:48:14 +02:00
Jonas 'Sortie' Termansen 8c5ab54c9b Updated refcount.cpp to a newer coding convention. 2012-07-23 00:05:31 +02:00
Jonas 'Sortie' Termansen 3907e14cb8 Updated vgaterminal.cpp to newer coding conventions. 2012-07-23 00:05:31 +02:00
Jonas 'Sortie' Termansen d75a7145ef Updated vga code to newer coding conventions. 2012-07-23 00:05:31 +02:00
Jonas 'Sortie' Termansen b2814db927 Added support for getting a copy of the VGA Font.
This will be useful for providing a text-mode like environment (console)
after having switched to graphical mode where the system needs a font.
2012-07-22 15:51:38 +02:00
Jonas 'Sortie' Termansen 476ba278da Improved VGA scroll performance using memcpy(3). 2012-07-17 16:23:00 +02:00
Jonas 'Sortie' Termansen ebc0b064c3 Added a function to get the current address space pointer. 2012-07-06 17:18:07 +02:00
Jonas 'Sortie' Termansen d59c0cb3ed getpagesize(2) now call Sortix::Page::Size(). 2012-07-06 17:18:07 +02:00
Jonas 'Sortie' Termansen 22990b77b8 Refactored the internal kernel memory management API.
It is now permission-oriented, not just user/kernel oriented.

Added <sys/mman.h> with nice PROT_{READ,WRITE,EXEC,FORK} constants.
2012-07-06 17:18:07 +02:00
Jonas 'Sortie' Termansen ec5fa92761 Programmers can now redirect what the errno macro refers to. 2012-07-06 17:18:06 +02:00
Jonas 'Sortie' Termansen e7baf6a4b0 Updated the kthread compatibility layer with signal support. 2012-07-06 17:17:45 +02:00
Jonas 'Sortie' Termansen c39473157a Implemented a new initrd format with better inode support.
This enables useful features such as directories, CRC32 checksums, and other
useful features. The initrdfs in the kernel is now hooked up against the new
API, although the kernel's current limited FS support is a problem for now.
To work around that, directories are not supported at runtime, although the
internal API understands them wonderfully. This will be fixed when the
kernel gets a real VFS.
2012-07-02 17:40:52 +02:00
Jonas 'Sortie' Termansen 2046482e77 Added support for MSRs, PAT and MTRRs.
This provides control over the caching of memory, which makes write-combined
IO possible. Graphics drivers can use this to transfer data at a much higher
rate to the video memory.

The implementation is a bit hacky but it'll do for now. It provides enough
support for the experimental VBE driver to work on the real computers I
tested it on, even if the BIOS uses screwed up default MTRRs.

The virtual memory layer now automatically uses the PAT feature if available
but in a backwards compatible manner and otherwise just tries to approximate
PAT features if they are asked for.
2012-07-01 00:55:36 +02:00
Jonas 'Sortie' Termansen b650c9a8f0 Added a O_ACCMODE flag for GNU compatibility. 2012-05-28 22:52:11 +02:00
Jonas 'Sortie' Termansen 00869bcdc1 The PIC can now be deprogrammed and reprogrammed. 2012-05-26 14:00:24 +02:00
Jonas 'Sortie' Termansen bd489eb73a Forward compatbility with the kthread branch. 2012-05-04 13:13:44 +02:00
Jonas 'Sortie' Termansen 92c5533820 Improved the implementation of the exec* functions. 2012-04-30 21:10:02 +02:00
Jonas 'Sortie' Termansen 93abeda32e Fixed buffer overflow in devfs.cpp. 2012-04-14 22:03:55 +02:00
Jonas 'Sortie' Termansen 3b63a70191 Added Interrupt::SetEnabled(bool). 2012-04-13 17:42:21 +02:00
Jonas 'Sortie' Termansen f59b53ddce Ported x64 interrupt assembly to the GNU assembler. 2012-04-13 17:34:17 +02:00
Jonas 'Sortie' Termansen 8cbf9ff8f0 Added Interrupt::IsEnabled(). 2012-04-11 15:46:32 +02:00
Jonas 'Sortie' Termansen 36ff6c7f96 seek(2) now correctly rejects a bad whence value. 2012-04-10 13:20:33 +02:00
Jonas 'Sortie' Termansen 6367a2352e Added sforkr(2) that controls the child registers as well.
sfork(2) now calls sforkr(2) with the current registers.

This will prove useful in creating threads, where user-space now can fully
control what state the child will start in. This is unlike the Linux clone
system call that accepts a pointer to the child stack; this is more powerful
and somehow simpler. Note that this will create a rather raw thread; no
thread initization has been done by the standard thread API (when it is
implemented), so this feature shouldn't be used by programmers unless they
know what they are doing.

fork(2) now calls sfork(2) directly. Also removed fork(2) and sfork(2) from
the kernel as they are done using sforkr(2) now. So technically they aren't
system calls right now, but that could always change.
2012-04-05 23:00:47 +02:00
Jonas 'Sortie' Termansen 6f36ecf0b3 execve(2) now pushes envp to the new stack and sets up registers.
This fully implements environmental variables over exec.
2012-04-04 01:49:14 +02:00
Jonas 'Sortie' Termansen 05b29ce25a Renamed rfork(2) to sfork(2) to avoid compatibility issues.
sfork is much like rfork except sharing is default for everything.

Eventually, I'll make a rfork(3) wrapper function around sfork(2) to
provide compatibility to BSD programs.

I don't like Linux clone(2): that's some messy function.
2012-04-04 00:29:25 +02:00
Jonas 'Sortie' Termansen 95a088fec5 Added a dummy implementation rfork(2) equal to fork(2).
Note that in my implementation, you share per default, unless you ask.
2012-04-02 16:30:13 +02:00
Jonas 'Sortie' Termansen b3b1f6af66 Make sure that the right bits.h file is always included. 2012-03-27 16:36:55 +02:00
Jonas 'Sortie' Termansen 554b2e44cc Added a Page::IsAligned inline function. 2012-03-26 16:46:26 +02:00
Jonas 'Sortie' Termansen c62eb09cdc Added stubs for pread(2) and pwrite(2).
These are not implemented yet because the current kernel design is bad.

However, I need the stubs for other code.
2012-03-24 15:23:07 +01:00
Jonas 'Sortie' Termansen 1ba4417b19 Removed dead ancient code. 2012-03-22 01:04:27 +01:00
Jonas 'Sortie' Termansen db79994e64 Refactored all the sortix headers into a include directory.
Also got rid of trailing white space. That corrupted .git/.

Big ass-commit because of recovered .git directory.
2012-03-22 00:52:29 +01:00
Jonas 'Sortie' Termansen ea11c20689 Added a way for discover refcount of Refcounted classes. 2012-03-21 16:20:41 +01:00
Jonas 'Sortie' Termansen 0f099c65ca The virtual memory fork code can now handle ENOMEM conditions.
(forkbombs now don't panic the system!)
2012-03-19 02:39:11 +01:00
Jonas 'Sortie' Termansen c9ab4fa6b4 The sortix vga terminal now can delete tabs and newlines properly.
A nice little vga attribute array takes care of remembering what indexes
actually contains a character.
2012-03-18 18:06:13 +01:00
Jonas 'Sortie' Termansen 14a9149f17 Added detection for an obscure bug to let users know I know about it. 2012-03-18 17:36:31 +01:00
Jonas 'Sortie' Termansen d564603460 Fixed kernel stack overflow and premature EOF in the unix pipe code.
This usually caused the system to lock up when much data was transferred
over pipes, for instance: $ cd /bin ; cat cat | cat
2012-03-18 16:14:26 +01:00
Jonas 'Sortie' Termansen c7c0fc603a Fixed initial kernel stack being wrong size. 2012-03-17 20:17:12 +01:00
Jonas 'Sortie' Termansen 969c0e8048 Cleaned up sortix/kernel.cpp and it now uses the new coding style.
All kernel.cpp code related to jssortix was removed as it is not supported
any longer.
2012-03-17 20:11:37 +01:00
Jonas 'Sortie' Termansen 4f3e22140c Fixed x64 memory leaks upon process termination. 2012-03-17 18:14:57 +01:00
Jonas 'Sortie' Termansen 0364ce6f55 Added a new COM Port driver.
Any detected COM ports available as /dev/comN.

It currently utilizes AGAIN to do polling in user-space. This prevents it
from locking up the whole system and makes it respond to the SIGINT hack.

There is also a more reliable and faster polling-blocking mode, but it locks
up the entire system.

The main interrupt mode is broken, perhaps by a bug in VirtualBox.
2012-03-17 15:48:42 +01:00
Jonas 'Sortie' Termansen 1ff0321400 Added a stub for Syscall::Yield() which is used by broken code.
The whole system call interface is currently stupid.
2012-03-17 15:14:42 +01:00
Jonas 'Sortie' Termansen 798b421d16 Refactored devfs so new devices can easily be added. 2012-03-17 15:11:35 +01:00
Jonas 'Sortie' Termansen 5ec4e33196 Removed the last reference to the old kernel HTTP server. 2012-03-16 16:56:16 +01:00
Jonas 'Sortie' Termansen 2cdeb575f8 Renamed EACCESS to EACCES.
Stupid POSIX.
2012-03-12 01:43:00 +01:00
Jonas 'Sortie' Termansen 5b916b5f63 Added F_SETFL and F_GETFL to fcntl(2).
This is a bit of a hacky implementation.
2012-03-11 20:29:00 +01:00
Jonas 'Sortie' Termansen 868ed43e05 Removed sortix/mxfs.
It's unbelievable that this piece of dead code survived 8 months of
development on git. It doesn't even work, despit the comment that it
does.
2012-03-11 18:07:01 +01:00
Jonas 'Sortie' Termansen f01d7951c1 stat(2) now supports directories.
A bit hackily, though.
2012-03-11 17:56:20 +01:00
Jonas 'Sortie' Termansen 6e536ba8f9 Fixed error codes in sortix/fs/devfs. 2012-03-11 17:55:52 +01:00
Jonas 'Sortie' Termansen 245e8bf0e3 Fixed error codes in sortix/fs/initfs. 2012-03-11 17:55:23 +01:00
Jonas 'Sortie' Termansen f45cf8327a Forgot to enable the /bin /dev hack in sortix/fs/ramfs.cpp. 2012-03-11 17:30:13 +01:00