Commit Graph

582 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen ba07631aa2 uname(1) now behaves much more like its GNU coreutils counterpart. 2012-07-26 16:04:45 +02:00
Jonas 'Sortie' Termansen 87c8120b95 Refactored libmaxsi/string.cpp into multiple files.
However, parts libmaxsi/string.cpp remains as the kernel and parts of the
standard library still rely on <libmaxsi/string.h>.
2012-07-26 14:17:56 +02:00
Jonas 'Sortie' Termansen 01df97080e Refactored libmaxsi/io.cpp into multiple files.
This creates more object files in the static library which reduces the size
of statically linked files as only the relevant object files are included.
In my experience, it reduced the size of the system initrd from 1.9 MiB to
1.6 MiB which is valuable.
2012-07-25 23:05:05 +02:00
Jonas 'Sortie' Termansen db5d216cbe Added ReadParamString to libmaxsi as a hack. 2012-07-24 21:26:09 +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 38f06d505c Better detection of environmental variables in mxsh. 2012-07-24 19:56:33 +02:00
Jonas 'Sortie' Termansen b7788610da Added error detection to echo(1). 2012-07-24 19:56:32 +02:00
Jonas 'Sortie' Termansen 4dda38cab3 Added ENODRV. 2012-07-24 19:56:32 +02:00
Jonas 'Sortie' Termansen 12326f2e34 Added $LINES and $COLUMNS to the shell.
This tests the fancy new system call tcgetwinsize(2).
2012-07-24 18:51:22 +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 1761db9f27 Updated copyright format in unistd.h.
This is because I usually copy the header of new files from unistd.h.
2012-07-24 17:03:14 +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 887abdfe87 Added a CRC32 function to libmaxsi. 2012-07-02 17:16:23 +02:00
Jonas 'Sortie' Termansen 0ab2bbbd1b Finally fixed the loaderbug!
Programs were crashing randomly at startup on the kthread branch. After some
investigation, it turned out that the programs weren't correctly loaded by
the program loader in rare cases. Although, all investigation showed that
the program loader was correct and so was the interrupt routines (well,
almost, but nothing that could really trigger this). Yada yada, a few months
later I discovered that memcpy(3) was being corrupted by an interrupt handler
(which was correct). Turns out memcpy used stack space it hadn't allocated.
This is a Linux optimization that I had forgotten to disable with
-mno-red-zone in libmaxsi and thus interrupts just overwrote the stack of
optimized functions. Eek!
2012-07-02 16:09:13 +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 aac12add54 Added stubs for functions in dlfcn.h. 2012-05-30 23:58:04 +02:00
Jonas 'Sortie' Termansen 6eb6a14ace Added stubs for fscanf(3) and mbtowc(3).
This helps gzip build.
2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen 622e0176e3 Added stubs for gmtime(3), localtime(3) and utime(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen 45981431de Added atexit(3) and on_exit(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen c5c92d9615 Added ungetc(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen b2b54d108d Added getdtablesize(3) for gzip compatibility.
Remove this once sysconf(_SC_OPEN_MAX) is implemented.
2012-05-28 23:11:44 +02:00
Jonas 'Sortie' Termansen 35347ec709 Added raise(3). 2012-05-28 23:10:55 +02:00
Jonas 'Sortie' Termansen 309416c291 Renamed error(3) to gnu_error(3), but with a redirect.
This fixes compatibility issues with programs that like to make their own
error function. This includes zlib and gzip.
2012-05-28 23:03:03 +02:00
Jonas 'Sortie' Termansen 271c64e537 Added a stub locale.h header. 2012-05-28 22:57:03 +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 8ae9f6bd79 Added struct tm and implemented a gettimeofday stub.
Note that gettimeofday calls uptime() and has no idea what the time was when
the system booted.
2012-05-28 22:51:20 +02:00
Jonas 'Sortie' Termansen 341bd73cb0 GCC no longer fixes stdio.h because of va_list.
Note that for non-ANSI C programs, stdio.h includes stdarg.h which defines
macros that stdio.h wasn't supposed to define.
2012-05-28 22:37:45 +02:00
Jonas 'Sortie' Termansen 500f8651bb Prevent GCC from fixing headers that are OK. 2012-05-27 23:46:59 +02:00
Jonas 'Sortie' Termansen 4b252fc55e <libmaxsi/platform.h> now autodetects the current platform. 2012-05-27 23:08:20 +02:00
Jonas 'Sortie' Termansen 87b81080d5 Added sortix_strerror(3) which replaces strerror(3).
The string returned is now const - POSIX did not allow modifying the string
in any case, conforming applications should not break. If _SORTIX_SOURCE is
defined strerror(3) automatically redirects to sortix_strerror(3),
otherwise the application will receive the traditional function.
2012-05-27 17:38:00 +02:00
Jonas 'Sortie' Termansen 9905a2f2d6 Added EINIT, "Not initialized". 2012-05-27 17:20:33 +02:00
Jonas 'Sortie' Termansen e8d75643ea More efficient memcpy(3) for aligned data. 2012-05-27 14:11:35 +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 a75b215fe3 Added fpipe(3) providing pipe(2) through the FILE interface. 2012-05-21 12:52:27 +02:00
Jonas 'Sortie' Termansen 795b1ef4fd Added String::Combine.
It was previously commented out because it was broken.
2012-05-04 13:36:21 +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