Commit graph

549 commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen
1c64a7fda1 Maintain process execution and system time. 2013-12-17 14:30:34 +01:00
Jonas 'Sortie' Termansen
dbe8dafaac Refactor kernel calltrace.h header. 2013-12-17 14:30:34 +01:00
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