Commit Graph

547 Commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen 1bc470624f Refactor kernel process.h and thread.h headers. 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen 7aa061e50e Refactor kernel signal.h header. 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen d0f68eec68 Refactor kernel cpu.h header. 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen 71a2fef5f6 Add clock_nanosleep(2). 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen 1e2550c0d5 Add clock_*(2) API. 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen 2d94cd1246 Add alarm(2) and alarmns(2). 2013-12-17 14:30:33 +01:00
Jonas 'Sortie' Termansen df5deac29b Add support for per-process timers. 2013-12-17 14:30:33 +01:00
Jonas 'Sortie' Termansen ef32b3fcbe Add {,p}{read,write}v(2). 2013-12-17 14:30:33 +01:00
Jonas 'Sortie' Termansen 73f3d1c251 Add /dev/net/fs network device. 2013-12-17 14:30:33 +01:00
Jonas 'Sortie' Termansen 658defdbc3 Refactor pipe implementation. 2013-12-17 14:30:33 +01:00
Jonas 'Sortie' Termansen 615bf32c60 Forward declare <signal.h> API. 2013-12-17 14:30:32 +01:00
Jonas 'Sortie' Termansen 0ff17a00c8 Add O_NONBLOCK support to the kernel terminal. 2013-12-17 14:30:31 +01:00
Jonas 'Sortie' Termansen 514fab5359 Add O_NONBLOCK support to pipes. 2013-12-17 14:30:31 +01:00
Jonas 'Sortie' Termansen c514dda0b2 Add O_NONBLOCK support to sockets. 2013-12-17 14:30:31 +01:00
Jonas 'Sortie' Termansen 1052f2c47a Add O_NONBLOCK. 2013-12-17 14:30:31 +01:00
Jonas 'Sortie' Termansen ed5f14878d Add AT_SYMLINK_FOLLOW. 2013-12-17 14:30:31 +01:00
Jonas 'Sortie' Termansen 79a49b2015 Add socket interface. 2013-12-17 14:30:30 +01:00
Jonas 'Sortie' Termansen ee106231c4 Add utimensat(2) and futimens(2). 2013-12-17 14:30:30 +01:00
Jonas 'Sortie' Termansen 472155173d Adopt struct timespec as the kernel time format.
Note: Incompatible ABI change.
2013-12-17 14:30:30 +01:00
Jonas 'Sortie' Termansen 8162011b5d Add <time.h> header forward declarations.
Note that many of the functions are not yet implemented.
2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen dbc6c8c663 Add ioctl(2). 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen ade239f18b Add {g,s}et{e,}{g,u}id(2). 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen 087bacb30f Increase user-space stack to 512 KB. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen 38b146472e Implement F_SETFL and F_GETFL support in fcntl. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen ac1d64fd7e Refactor descriptor flags and security. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen f29abd73ec Add fsync(2). 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen 80b4287c9d Print program image path upon crash. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen f2556c3551 Keep track of program image path. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen e4bd7cad82 Add MAP_PRIVATE and MAP_SHARED to sortix/mman.h. 2013-12-17 14:30:29 +01:00
Jonas 'Sortie' Termansen 729bfa3c32 Add readlink{,at}(2). 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen fc8d64013d Refactor datatype declarations. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen ce66539ff7 Free surplus unused bcache blocks. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen 9434ee94fd Add file cache. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen dc4924585e Free the initrd after extraction. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen 54da838c79 Refactor kernel address space allocation. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen b8f85d9ef2 Add NSIG. 2013-12-17 14:30:27 +01:00
Jonas 'Sortie' Termansen b9d633108d Add wctype(3). 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 8e0aefda20 Add rename(2) and renameat(2). 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen fd6098a3a2 Locking a NULL pointer using ScopedLock is a noop. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen bb284d9421 Support doing calltraces on user-space/kernel crashes. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 7b3fd0f06f Support doing kernel calltraces on another stack. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen ef53864d36 dispd: Wait for console rendering to finish.
This prevents a race condition where the console may still be rendering,
but the process may be able to get data on the screen faster, which results
in visual corruption as the two race.
2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen ca7ad9709f Queue lfb text render commands with async render. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen ad0875aaac Add TextPos relations. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 907acf1e18 Add GetKernelProcess function to scheduler. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 193b76f8cb Refactor scheduler API. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 9ba7f26bf0 Refactor kernel time API and add timespec API. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 5424760719 Refactor kernel interrupt API. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 2ce76e3876 Refactor system call API. 2013-12-17 14:30:26 +01:00
Jonas 'Sortie' Termansen 76fe8602f3 Add poll support to pipes. 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 51da410dea Add poll support to log terminal. 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen b2b55bc34a Add poll(2) and ppoll(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen e76073cc4f Add user-space filesystem API. 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 3b35dad9f7 Add AT_REMOVEFILE flag to unlinkat(2).
This allows unlinkat(2) to delete files and directories in the same call,
which is useful for the implementation of remove(3).
2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 1fa2df3e6a Replace system calls that accept a path with *at versions. 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 921deb6eeb Add linkat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 2ef2269168 Add fchmodat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen f21462bf18 Add fchmod(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen c1280bedb0 Add fchown(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen cb4569c615 Add fchownat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen f843e15666 Add truncateat(2).
Linux doesn't have this, but since I do truncate(2) in the kernel, it would
be more consistent to do it 'at'-style. (I will remove truncate(2) from the
kernel and let libc call truncateat(2) soon anyway).
2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 37a4c8f05e Add fchdir(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 7dd59dd2e0 Add mkdirat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen caf4a1f2c5 Add faccessat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 835f0d5fbc Add unlinkat(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 8e50f3d76b Add dup2(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 49fe4aa51f Add link(2). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen 2389a834b5 Add chown(3). 2013-12-17 14:30:25 +01:00
Jonas 'Sortie' Termansen a11439bc87 Add chmod(2). 2013-12-17 14:30:24 +01:00
Jonas 'Sortie' Termansen 1444683ea8 Refactor kernel VFS.
Note: This is an incompatible ABI change.
2013-12-17 14:30:24 +01:00
Jonas 'Sortie' Termansen 945c769daf Fix ^C not clearing the line buffer. 2013-12-17 14:30:24 +01:00
Jonas 'Sortie' Termansen 90036ca6a8 Update copyright headers of old files to the current format. 2013-12-17 14:30:23 +01:00
Jonas 'Sortie' Termansen eb5be61d20 Fix trailing blank lines. 2013-12-17 14:30:23 +01:00
Jonas 'Sortie' Termansen 7eb9e3c33f Refactor Sortix build system and de-autoconf mxmpp. 2013-12-17 14:30:22 +01:00
Jonas 'Sortie' Termansen f72969a662 Add sigset_t. 2013-09-24 17:09:49 +02:00
Jonas 'Sortie' Termansen bf2c624c9b Add struct timespec. 2013-09-24 17:09:49 +02:00
Jonas 'Sortie' Termansen 3c821cb4a1 Make sys_memstat arguments optional. 2013-09-24 17:09:48 +02:00
Jonas 'Sortie' Termansen 0095983c80 Add dispmsg_issue(2). 2013-09-24 17:09:48 +02:00
Jonas 'Sortie' Termansen b380dd49c1 Add useful functions to <sortix/kernel/video.h> API. 2013-09-24 17:09:48 +02:00
Jonas 'Sortie' Termansen b0c01f2c6a Make Memory::Lookup return false on unmapped pages. 2013-09-24 17:09:48 +02:00
Jonas 'Sortie' Termansen a685a9d68f Fix kernel thread frame pointer base case. 2013-09-24 17:09:47 +02:00
Jonas 'Sortie' Termansen 5ad26d68a3 Add OFF_MIN and OFF_MAX. 2013-09-24 17:09:47 +02:00
Juhani Haverinen 7c85b4a057 Add support for right shift in US keyboard layout 2013-09-24 17:09:47 +02:00
Jonas 'Sortie' Termansen dc4ef04e7c Add assembly file symbol sizes. 2013-09-24 17:09:47 +02:00
Jonas 'Sortie' Termansen 8a7a0db8c7 Add missing rdx register to x86_64 register dump function. 2013-09-24 16:52:29 +02:00
Jonas 'Sortie' Termansen 89118947ed Fix Sortix::Scheduler::ExitThread not being noreturn. 2013-09-24 16:52:29 +02:00
Steve Dougherty af2d8cb9de Fix typo in syscall registration sanity test. 2013-09-24 16:52:29 +02:00
Jonas 'Sortie' Termansen efe70b3b3e Avoid physical frame stack overflow. 2013-09-24 16:52:29 +02:00
Jonas 'Sortie' Termansen 2231e129b0 Fix deadlock in kthread_cond_wait. 2013-07-11 18:07:03 +02:00
Jonas 'Sortie' Termansen dd0379c608 Fix calltrace implementation on x86 and x86-64. 2013-07-09 20:28:55 +02:00
Jonas 'Sortie' Termansen aea6aefea9 Fix interlock implementation on x86_64 and x86. 2013-07-09 20:28:55 +02:00
Jonas 'Sortie' Termansen 986d331d39 Fix x86_64 declaration of uint64_t. 2013-07-09 20:28:55 +02:00
Jonas 'Sortie' Termansen 49a66893b2 Fix kernel compile warnings. 2013-07-09 20:28:55 +02:00
Jonas 'Sortie' Termansen 8318c51819 Allow syscall parameters and return values larger than native words.
Note: This is an incompatible ABI change.
2013-07-08 15:47:27 +02:00
Jonas 'Sortie' Termansen d890488304 Void system calls must now have a return value. 2013-07-07 17:03:01 +02:00
Jonas 'Sortie' Termansen 96e4c00c5f Detect and panic when running buggy qemu releases. 2013-06-21 23:20:14 +02:00
Jonas 'Sortie' Termansen 308b3169ca Fix missing single quote character (') in US keyboard layout. 2013-02-27 12:34:45 +01:00
Jonas 'Sortie' Termansen 607128334f Fix floating point corruption on thread exit. 2013-01-27 14:45:25 +01:00
Jonas 'Sortie' Termansen 754a10e274 Allow unloading video drivers. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 6037babcbf Extend kernel video memory area to 386 MiB on x86. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 3116161f5d BGA: Fix possible memory leak. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 4d37197472 Sort objects in kernel makefile. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 4f60d028ef Update coding style of ATA driver. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen c9b3002e43 Add openat(2).
This is a rather hacky implementation.
2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 32f87f461d Remember path when opening files. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen db57bb6336 Port remaining x86 nasm assembly to GNU as. 2012-12-14 14:13:37 +01:00
Jonas 'Sortie' Termansen 24c89ec673 Use libgcc. 2012-12-14 14:13:36 +01:00
Jonas 'Sortie' Termansen 838992c3d8 Don't build libmaxsi.a.
This should just about remove most of the old and deprecated (and now
obsolete) Maxsi:: API. Of course, large parts of libc still suffer from
its poor design, but I'll get around to fix that eventually.
2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen bd8967069e Replace libmaxsi headers with libc headers. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen c0fabc2e8d Move remainder of Maxsi::String into kernel tree. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 1b26d1bacf Make sprintf family freestanding.
And use them in the kernel.
2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen c55a2882dc Replace Maxsi::String::ToInt with atoi. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 6ce762aac4 Replace Maxsi::String::Seek with strchr. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 2206412e14 Replace Maxsi::String::Reject with strcspn. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 02a711befb Replace Maxsi::String::Accept with strspn. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen e5cf6c18f7 Replace Maxsi::String::Compare with strcmp. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 70da61f5d1 Replace Maxsi::String::Copy with strcpy. 2012-12-14 14:13:35 +01:00
Jonas 'Sortie' Termansen 5e4dadbba0 Replace Maxsi::String::Length with strlen. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen 5e7bf8527c Move <libmaxsi/sortedlist.h> into kernel tree. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen df7d8ca335 Move crc32 checksum code into kernel. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen 2c286d6830 Replace <libmaxsi/format.h> with <stdio.h>. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen b4374f66b7 Replace <libmaxsi/memory.h> with <string.h>. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen 5d082b3bbb Replace Maxsi::Error:: with <errno.h>. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen 42754f1728 Replace ASSERT with assert of <assert.h>. 2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen b685b7a9eb Don't include Maxsi:: API in kernel.cpp.
Since kernel.cpp is intended to be an example of the current best coding
practices within the Sortix kernel, and the Maxsi:: API is deprecated and
is being removed, it should rather use the nice C standard library.
2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen 0437d75147 Remove libmaxsi stddef.h and stdarg.h.
These are provided by the cross compiler.
2012-12-14 14:13:34 +01:00
Jonas 'Sortie' Termansen b293fb3171 Remove kernel platform.h dependency on libmaxsi platform.h.
This reduces the dependence on libmaxsi with the aim that the Maxsi:: api
can be removed and replaced with the standard C library.
2012-12-14 14:13:33 +01:00
Jonas 'Sortie' Termansen 3095503b9b Correct usage of deprecated nat and byte data types. 2012-12-14 14:13:33 +01:00
Jonas 'Sortie' Termansen 9cf092d32e Use cross compiler in build system. 2012-12-14 14:13:33 +01:00
Jonas 'Sortie' Termansen 81530bc58c Really fix size_t declarations by asking compiler. 2012-09-12 12:39:30 +02:00
Jonas 'Sortie' Termansen cceaaf0089 Fix declaration of size_t on x86. 2012-09-12 12:19:57 +02:00
Jonas 'Sortie' Termansen 53e945aa4f Fix including private signal.h in kthread.h. 2012-09-12 12:18:51 +02:00
Jonas 'Sortie' Termansen 82035e87da Add makefile targets for installing sysroot base headers. 2012-09-10 21:45:38 +02:00
Jonas 'Sortie' Termansen 0b94239912 Fix missing WEXITSTATUS in init and kernel. 2012-09-09 23:08:03 +02:00
Jonas 'Sortie' Termansen 66487f2895 Make waitpid(2) fail on signal arrival. 2012-09-09 22:58:18 +02:00
Jonas 'Sortie' Termansen da7f10269d Better declarations of limits in stdint.h.
This is more compatible with how gcc limits.h does stuff.
2012-09-09 22:41:02 +02:00
Jonas 'Sortie' Termansen 0245e9867c Fix NULL deference if no ATA bus is present. 2012-09-09 13:15:33 +02:00
Jonas 'Sortie' Termansen b9b697f2cb Implement proper W* error codes in sys/wait.h and kernel.
Note that signals can't really kill a process at this time.
2012-09-09 12:21:39 +02:00
Jonas 'Sortie' Termansen b0807e8c7a Fix reading /dev/video/fb causing a write instead.
This really fucks stuff up.
2012-09-08 19:40:22 +02:00
Jonas 'Sortie' Termansen 07b3cc8e06 Implement WNOHANG in waitpid(2). 2012-09-08 19:19:31 +02:00
Jonas 'Sortie' Termansen 356ae79f64 Don't deliver signals to zombies. 2012-09-08 19:15:56 +02:00
Jonas 'Sortie' Termansen 32a1be0008 Increased tab size from 4 to 8. 2012-09-08 18:45:53 +02:00
Jonas 'Sortie' Termansen 16019e5897 Make interrupt handler more robust. 2012-09-08 18:45:53 +02:00
Jonas 'Sortie' Termansen 3fd270f7a2 Remove trailing whitespace. 2012-09-08 18:45:53 +02:00
Jonas 'Sortie' Termansen 09c4f34e66 Remove -pc from Sortix host triplet. 2012-09-08 18:45:53 +02:00
Jonas 'Sortie' Termansen 17a93359dd Add . and .. support to kernel filesystems.
This makes the hack in ls(1) not needed and is hence removed.
2012-09-08 18:45:52 +02:00
Jonas 'Sortie' Termansen 118fc9ce9a The lfb text buffer class now uses the correct cursor color. 2012-09-08 18:45:52 +02:00
Jonas 'Sortie' Termansen 755e855c08 Renamed sforkr(2) to tfork(2).
It's a much better name if you think of it as task-fork or thread-fork in the
sense that it either modifies this task or creates a new one. This call will
be used to provide user-space threads as well as fork(2).
2012-09-08 18:45:52 +02:00
Jonas 'Sortie' Termansen 7d39906acc Added support for saving FPU registers upon context switch.
This code uses the cr0 task switched bit to disable the FPU upon task
switch, which allows the kernel to delay copying the registers until
another task starts using them. Or better yet, if no other thread actually
uses the registers, then it won't need to do any copying at all!
2012-09-08 18:45:52 +02:00
Jonas 'Sortie' Termansen 93bb4f992b Added support for floating point numbers.
Note that the scheduler does not load/restore floating point numbers yet
upon task switching. This means only one task can use floating point numbers
at the same time without the risk of race conditions.

Note that this enables SSE in 32-bit x86 platforms - but not all models
have such support, which limits which computers Sortix works on. Ideally, we
should detect what features are available on the computer at runtime and
enable/disable the proper kernel support. This is not a problem on x86_64.
2012-09-08 18:45:52 +02:00