Commit Graph

216 Commits

Author SHA1 Message Date
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
Jonas 'Sortie' Termansen 7ebed6dd6a sortix/io.cpp now uses <sortix/seek.h>. 2012-02-24 22:02:01 +01:00
Jonas 'Sortie' Termansen cbdf54fcdd Moved SEEK_SET, SEEK_CUR, and SEEK_SET to <sortix/seek.h>. 2012-02-24 17:34:50 +01:00
Jonas 'Sortie' Termansen 5de83df6ec Unified constants from sortix/filesystem.h and <fcntl.h> in <sortix/fcntl.h>. 2012-02-23 13:15:40 +01:00
Jonas 'Sortie' Termansen 03273d0076 Added stubs for stat(2), and fstat(2). 2012-02-22 00:30:34 +01:00
Jonas 'Sortie' Termansen edd806fc74 Added a Refcounted class, useful for refcounted objects. 2012-02-21 20:12:52 +01:00
Jonas 'Sortie' Termansen 74dab2cbca Cleaned up the Sortix makefile. 2012-02-13 13:16:43 +01:00
Jonas 'Sortie' Termansen fec176fa15 Refactored the libmaxsi/ directory.
C and C++ files are now kept together and so are the mxmpp declarations.

Header files are now stored in include/ and mxmpp'd into preproc/.

All other code now -I ../libmaxsi/preproc.

And other stuff to make this happen, including refactoring Makefile.
2012-02-12 13:20:53 +01:00
Jonas 'Sortie' Termansen 4e29f2b907 Fixed spelling error in sortix/*/bits.h. 2012-02-11 21:20:49 +01:00
Jonas 'Sortie' Termansen ead53567a1 Made the compile process a little less verbose. 2012-02-11 19:06:00 +01:00
Jonas 'Sortie' Termansen ed68db03fb Replaced SORTIX_EXTENSIONS macro with _SORTIX_SOURCE macro.
<features.h> declares _SORTIX_SOURCE if no conflicting macros are
declared, such as _GNU_SOURCE.

Fixed g++ automatically declaring _GNU_SOURCE, but Sortix isn't GNU.

Replaced SORTIX_UNIMPLEMENTED macro with __SORTIX_SHOW_UNIMPLEMENTED.
2012-02-11 18:51:55 +01:00
Jonas 'Sortie' Termansen 028867ab9d Removed the unused and deprecated old <libmaxsi/sortix-keyboard.h> API.
This has been entirely replaced by stdin and <sys/termmode.h>.
2012-02-10 13:46:26 +01:00
Jonas 'Sortie' Termansen c4264d9c2a Ported the user-space programs to use stdin for keyboard access.
The old keyboard API is hereby deprecated and unused.
2012-02-10 13:46:26 +01:00
Jonas 'Sortie' Termansen fa9c7007b4 Implemented a terminal that reads from keyboard and writes to kernel log.
This terminal will provide the keyboard data in a couple modes as /dev/tty.
2012-02-10 13:28:28 +01:00
Jonas 'Sortie' Termansen 4ba906a157 Added a class for handling terminal linebuffering. 2012-02-10 13:28:28 +01:00
Jonas 'Sortie' Termansen 133fb9871c Fixed buggy and broken KBKEY_ENCODE and KBKEY_DECODE macros. 2012-02-10 13:28:28 +01:00
Jonas 'Sortie' Termansen 5fde8e13ed Blocking systemcalls now return EBLOCKING instead of EWOULDBLOCK.
EWOULDBLOCK is now used when it wanted to block, but didn't.
2012-02-10 13:28:28 +01:00
Jonas 'Sortie' Termansen 9bcfdad174 Added protection against running terminated threads.
A bool is set when a thread is terminated, which may help detect it.

A cached version of the thread's pid is also kept around.

And lastly, the thread is unsubscribed from events upon destruction.
2012-02-10 13:27:11 +01:00
Jonas 'Sortie' Termansen f6f0d24b5c Added TERMMODE_NONBLOCK.
This allows user-space to query whether data is available.
2012-01-22 18:38:46 +01:00
Jonas 'Sortie' Termansen ecc3114f2a Refactored the system to use the new Terminal interface.
This will allow development of a better terminal providing stdin.

Added new system calls settermmode(2) and gettermmode(2) declared in
<sys/termmode.h>. They allow querying and changing the current mode of
terminals (enabling raw keyboard data, signal handling, line buffering,
UTF-8 encoding stdin, and more). However, all that is unsupported by the
current terminal device driver.

Added KBKEY_ENCODE and KBKEY_DECODE macros to <sys/keycodes.h> which allows
encoding the kbkey format in UTF-32 characters.
2012-01-22 16:48:57 +01:00
Jonas 'Sortie' Termansen ead0e1523f Refactored the kernel keyboard API, but kept system calls compatible.
Caps lock now works as caps lock, not as shift lock.

This new design will allow implementing a working tty, such that stdin is
the only way to access the keyboard, instead of the current hacky way of
using a special system call to read from the keyboard.

Added a new system header file <sys/keycodes.h> defining the constants for
every key on the keyboard. This will be used in future APIs.

The main change is to split the keyboard driver into a class that reads
from the keyboard, while another class handles the translation into
printable characters (if possible). This allows a terminal driver based
on logical key presses and printable characters, instead of a terminal
driver based only on unicode-ish codes.
2012-01-22 15:53:50 +01:00
Jonas 'Sortie' Termansen 16dd39e467 Added a nice Log::PrintData function to the kernel.
This allows writing binary data to the kernel log.
2012-01-22 02:12:52 +01:00
Jonas 'Sortie' Termansen 1f3f85b609 Added a simple utf8 encoder in the kernel. 2012-01-22 00:56:58 +01:00