Jonas 'Sortie' Termansen
66d7234ab1
Thread secured logterminal class and implemented VEOF.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
bf07674d7a
Thread secured the keyboard driver.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
af015491db
sortix/io.cpp is now ready for new system call semantics.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
4810ccae39
Added warning in case the laws of logic changes.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
2e3843ffce
Fixed incorrect x86-family protection flags.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
49ad293d1d
Thread secured the physical page allocator.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
459a1b2b3f
Thread secured initfs.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
f00c8b3d63
Thread secured the kernel device class.
2012-08-04 18:35:23 +02:00
Jonas 'Sortie' Termansen
38349da082
Thread secured the COM driver.
2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
f3f33e22e7
Thread secured ATA driver.
2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
eb4f179330
Added DEBUG_KERNEL option to kernel makefile.
2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
199fec6674
Hack: ReadParamString supports "STOP" because of stdarg bug.
2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
14d709c136
Added support for gcc 4.7.1.
2012-08-04 18:33:47 +02:00
Jonas 'Sortie' Termansen
78300931ba
Workarounds for older gcc releases such that endian.h works.
2012-08-02 16:24:51 +02:00
Jonas 'Sortie' Termansen
86f8662a4e
The VGA font is now available as /dev/vga.
2012-08-01 13:07:47 +02:00
Jonas 'Sortie' Termansen
f3532081aa
Added a filesystem utility class for providing a fixed buffer.
2012-08-01 13:07:31 +02:00
Jonas 'Sortie' Termansen
8dc5955f5e
Wrote a driver for the Bochs VBE Extensions (BGA).
2012-07-30 19:03:48 +02:00
Jonas 'Sortie' Termansen
cb5a242dfc
Added a text buffer that works with graphical linear frame buffers.
2012-07-30 19:02:05 +02:00
Jonas 'Sortie' Termansen
78f0c6c094
The video framework is now exposed as /dev/video.
...
This provides easy user-space access to the framebuffer.
2012-07-30 19:00:24 +02:00
Jonas 'Sortie' Termansen
1ce55af846
Created framework for video drivers.
...
This supports dynamic loading and unloading of graphics drivers, mode
switching and detection and flexible kernel access to the framebuffer.
2012-07-30 19:00:24 +02:00
Jonas 'Sortie' Termansen
d27a2bdcbf
Better detection of panicing while panicing.
2012-07-30 18:59:13 +02:00
Jonas 'Sortie' Termansen
1041823d42
Fixed VGA text buffer rendering non-ascii text incorrectly.
2012-07-30 18:56:47 +02:00
Jonas 'Sortie' Termansen
3b0f165c4f
Fixed bad declaration of MapPAT in x86-family/memorymanagement.h.
2012-07-30 18:56:02 +02:00
Jonas 'Sortie' Termansen
19b5451f3b
Refactored the PCI code to become a library of utility functions.
2012-07-29 23:45:54 +02:00
Jonas 'Sortie' Termansen
5f6ca5e729
Added a kernel endian.h header for easy conversion.
2012-07-29 23:45:54 +02:00
Jonas 'Sortie' Termansen
f390418515
Preallocated kernel address space for video memory.
2012-07-24 20:08:51 +02:00
Jonas 'Sortie' Termansen
494636b8eb
Added some filesystem utility classes.
2012-07-24 19:56:33 +02:00
Jonas 'Sortie' Termansen
143120d160
Added tcgetwinsize(2) for determining terminal resolution.
...
Unfortunately this area is not standardized by POSIX. Linux uses an ioctl
which is not that bad, but I'd like to have a designated function. I'm not
sure if this facility is powerful enough and whether it should be improved.
Also note that I use a struct winsize as on Linux, but I use size_ts instead
for the heck of it. Perhaps I should use another name for the struct.
2012-07-24 18:43:34 +02:00
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
Jonas 'Sortie' Termansen
cadac5ce2a
Moved the /bin and /dev hack into the kernel.
...
This makes ls seem less hacky.
2012-03-11 17:25:32 +01:00
Jonas 'Sortie' Termansen
8a9a0c58ea
Added kernelinfo(2), which reads a kernel information string.
...
Currently it lets you query the name of the kernel, its version, and the
build timestamp of the kernelinfo.cpp file.
2012-03-07 18:04:59 +01:00
Jonas 'Sortie' Termansen
6bcb3d7384
Added stat(2) and fstat(2) in the kernel.
...
It's a bit hacky, but it works.
lstat(2) currently redirects to stat(2).
2012-03-06 13:10:59 +01:00
Jonas 'Sortie' Termansen
4b2c22d480
Added access(2).
2012-03-05 15:46:23 +01:00
Jonas 'Sortie' Termansen
d3c4df72b1
Added st_{a,c,m}time to struct stat.
2012-03-04 22:25:47 +01:00
Jonas 'Sortie' Termansen
aa72efdb2c
Added <sortix/timeval.h> to the list of public headers.
2012-03-04 22:18:53 +01:00
Jonas 'Sortie' Termansen
c0a02248da
Added <sys/time.h>, struct timeval and gettimeofday(3) stub.
2012-03-04 22:05:52 +01:00
Jonas 'Sortie' Termansen
5e75f5c428
Added fcntl(3) with FD_GET and FD_SET.
2012-03-04 21:36:40 +01:00
Jonas 'Sortie' Termansen
75b14aa821
Refactored the descriptor table and added FD_CLOEXEC and FD_CLOFORK.
...
open(2) now also respects O_CLOEXEC and O_CLOFORK.
2012-03-04 21:06:49 +01:00
Jonas 'Sortie' Termansen
777fc04682
Added <time.h>, clock_t, and a stub for clock(3).
2012-03-04 18:38:23 +01:00
Jonas 'Sortie' Termansen
ac7e55ffbd
Added st_dev to struct stat.
2012-03-04 16:48:24 +01:00
Jonas 'Sortie' Termansen
db7781c54a
Install <sortix/*.h> headers in sysroot.
2012-03-04 16:04:12 +01:00
Jonas 'Sortie' Termansen
0ed0082070
Added execv(3) and execve(3).
...
Removed the older libmaxsi system call.
2012-03-02 15:00:11 +01:00
Jonas 'Sortie' Termansen
93a9ee334d
Removed a debug ifdef that isn't used.
2012-03-02 14:25:48 +01:00
Jonas 'Sortie' Termansen
cfbbf67247
make CALLTRACE=1 to enable printing primitive calltraces upon panic.
...
This won't work with optimizations turned fully on.
Added protection against double panics.
2012-03-02 14:08:25 +01:00
Jonas 'Sortie' Termansen
6dd0e586ff
Added protection against bad addrspace vars and bad Page::Put() calls.
...
This will offer protection against the bug fixed in the previous commit.
2012-03-02 13:51:03 +01:00
Jonas 'Sortie' Termansen
5e5991ce19
Fixed x86 addrspace destroy code calling Page::Put with garbage.
2012-03-02 13:45:33 +01:00
Jonas 'Sortie' Termansen
a7c38cb997
Improved bad currentdir variable panic message.
2012-03-02 00:09:08 +01:00
Jonas 'Sortie' Termansen
9c193777a9
Pipes now return 0 (EOF) if no data and no fds can write.
2012-03-01 14:31:12 +01:00
Jonas 'Sortie' Termansen
b4f47f0f79
Split descriptor_tables.cpp into a gdt.cpp and idt.cpp.
...
This was about time, since descriptor_tables was a really bad name!
2012-03-01 00:15:28 +01:00
Jonas 'Sortie' Termansen
5162a12d03
Further cleanup and refactoring of the interrupt code.
2012-02-29 23:03:40 +01:00
Jonas 'Sortie' Termansen
0e48b23429
Refactored the interrupt code to make it cleaner and more flexible.
...
Added support for hooking directly into an interrupt with your own
interrupt handler.
2012-02-29 15:40:30 +01:00