Commit graph

751 commits

Author SHA1 Message Date
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
260eab8e44 Fixed problems in strncmp(3) and strncasecmp(3).
This was introduced during the recent refactoring.
2012-07-31 20:41:19 +02:00
Jonas 'Sortie' Termansen
47ae712419 pager(1) now detects the terminal resolution. 2012-07-31 16:48:56 +02:00
Jonas 'Sortie' Termansen
261c063f4f Refactored libmaxsi/file.c into a multiple files. 2012-07-31 14:35:54 +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
ce43f9c306 Add chvideomode(1) using the /dev/video interface. 2012-07-30 19:00:24 +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
ab7ee4fd1e column(1) now queries the terminal width. 2012-07-30 00:35:42 +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
829e63f0e9 editor(1) now bails if the terminal resolution isn't 80x25.
This isn't perfect, but support for other resolutions is near!
2012-07-29 23:41:36 +02:00
Jonas 'Sortie' Termansen
5eb48d32fb Fixed a bug in --usage of uname(1). 2012-07-26 18:51:50 +02:00
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