Commit graph

45 commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen
311423856e Add foreground process support to init and sh. 2013-12-17 14:30:36 +01:00
Jonas 'Sortie' Termansen
c8f302df1a Add process group support to init and sh. 2013-12-17 14:30:36 +01:00
Jonas 'Sortie' Termansen
6ea41cc620 Retrieve init process id from INIT_PID environmental variable. 2013-12-17 14:30:36 +01:00
Jonas 'Sortie' Termansen
e249533d99 Add home directory syntax to shell. 2013-12-17 14:30:32 +01:00
Jonas 'Sortie' Termansen
4e095906fb Add -c option to shell. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen
7637e835b5 Allow setting shell username and hostname. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen
36f8d6e273 Add exit-on-error option to shell. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen
71be9b9b08 Add support for shell scripts. 2013-12-17 14:30:28 +01:00
Jonas 'Sortie' Termansen
dbab4e7683 Add shell non-interactive mode and shell comments. 2013-12-17 14:30:27 +01:00
Jonas 'Sortie' Termansen
cd48a35074 Add colors to sh(1) and ls(1).
This makes Sortix a happier place to be.
2013-12-17 14:30:27 +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
53005fc01f Fix shell buffer overflow on long argument lists. 2013-09-24 17:09:47 +02:00
Jonas 'Sortie' Termansen
a041c107d5 Fix shell crash if PWD is unset. 2012-12-14 14:18:02 +01:00
Jonas 'Sortie' Termansen
ab1901976c Add support for escaping spaces and tabs in shell. 2012-09-09 21:03:02 +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
46d02b784b Fix compile warnings in userspace programs. 2012-09-08 20:55:43 +02:00
Jonas 'Sortie' Termansen
c9eb1b2cb3 Better collection of zombie processes.
Note that there seems to be a deadlock if a process exits when there are
zombies around. Init also doesn't handle zombie children correctly as there
is sent no SIGCHLD signal yet.
2012-09-08 19:25:13 +02:00
Jonas 'Sortie' Termansen
fc811af890 Increased shell limit for line length.
Yes this is hacky, I'll fix it with a better shell.
2012-09-08 18:45:52 +02:00
Jonas 'Sortie' Termansen
f1f0c44a12 Made the shell more compatible with signals. 2012-09-08 18:45:41 +02:00
Jonas 'Sortie' Termansen
38f06d505c Better detection of environmental variables in mxsh. 2012-07-24 19:56:33 +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
92c5533820 Improved the implementation of the exec* functions. 2012-04-30 21:10:02 +02:00
Jonas 'Sortie' Termansen
042aeb0181 Added the $PWD environmental variable to the shell. 2012-04-13 23:01:04 +02:00
Jonas 'Sortie' Termansen
b554eb2dfb The shell now implements $$, $PPID, and $? as normal variables. 2012-04-13 22:41:07 +02:00
Jonas 'Sortie' Termansen
2331a1a234 Added hacky support for environmental variables to the shell. 2012-04-03 22:03:58 +02:00
Jonas 'Sortie' Termansen
dc0f78f6b7 Added copyright headers to benchmarks, games and utilities.
It's all GPLv3 or later.
2012-03-11 15:57:13 +01:00
Jonas 'Sortie' Termansen
bd7cb5195a Removed debug string from mxsh(1). 2012-03-07 18:26:02 +01:00
Jonas 'Sortie' Termansen
563f831545 The shell now support the >> operator.
Note that the RAM filesystem, however, doesn't.
2012-03-04 16:50:44 +01:00
Jonas 'Sortie' Termansen
98d1ccfa7d Improved the shell with pipes, background processes and semicolons.
It's really hacky, but it's an improvement.
2012-03-02 18:02:31 +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
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
fdbd4ca90d Implemented large parts of the stdio(3), including fprintf.
Made FILE an interface to various backends. This allows application writers
to override the standard FILE API functions with their own backends. This
is highly unportable - it'd be nice if a real standard existed for this.
glibc already does something like this internally, but AFAIK you can't hook
into it.

Added fdopen(3), fopen(3), fregister(3), funregister(3), fread(3),
fwrite(3), fseek(3), clearerr(3), ferror(3), feof(3), rewind(3), ftell(3),
fflush(3), fclose(3), fileno(3), fnewline(3), fcloseall(3), memset(3),
stdio(3), vfprintf(3), fprintf(3), and vprintf(3).

Added a file-descriptor backend to the FILE API.

fd's {0, 1, 2} are now initialized as stdin, stdout, and stderr when the
standard library initializes.

fcloseall(3) is now called on exit(3).

decl/intn_t_.h now @include(size_t.h) instead of declaring it itself.

Added <stdint.h>.

The following programs now flush stdout: cat(1), clear(1), editor(1),
init(1), mxsh(1).

printf(3) is now hooked up against vprintf(3), while Maxsi::PrintF
remains using the system call, for now.
2011-12-24 04:28:34 +01:00
Jonas 'Sortie' Termansen
4cac495121 mxsh now ignores trailing whitespace. 2011-11-26 13:27:15 +01:00
Jonas 'Sortie' Termansen
d4231b2027 Added program_invocation_name(3), error(3), and perror(3) and used them. 2011-11-26 11:00:45 +01:00
Jonas 'Sortie' Termansen
63b622a086 The shell now supports sending stdout to a file. 2011-11-24 17:42:40 +01:00
Jonas 'Sortie' Termansen
1f4dc3d0b5 The shell can now print %. 2011-11-23 14:07:02 +01:00
Jonas 'Sortie' Termansen
9f35df813e Implemented errno(3), added support in both kernel and utils. 2011-11-22 17:26:47 +01:00
Jonas 'Sortie' Termansen
d4590cefa1 Added chdir(2), getcwd(2), which mxsh and ls now uses. 2011-11-21 12:19:57 +01:00
Jonas 'Sortie' Termansen
8b7188e6a4 Added the $? command to the shell. 2011-11-10 00:03:53 +01:00
Jonas 'Sortie' Termansen
ae599b6d67 Argv now works in main. 2011-11-09 23:18:26 +01:00
Jonas 'Sortie' Termansen
b27fa68c81 The shell now forks, uses exit, and wait. 2011-11-07 01:00:18 +01:00
Jonas 'Sortie' Termansen
2afe9d1fd6 Implemented the fork() system call and what it needed to work properly.
This commit got completely out of control.

Added the fork(), getpid(), getppid(), sleep(), usleep() system calls, and
aliases in the Maxsi:: namespace.

Fixed a bug where zero-byte allocation would fail.

Worked on the DescriptorTable class which now works and can fork.

Got rid of some massive print-registers statements and replaced them with
the portable InterruptRegisters::LogRegisters() function.

Removed the SysExecuteOld function and replaced it with Process::Execute().

Rewrote the boot sequence in kernel.cpp such that it now loads the system
idle process 'idle' as PID 0, and the initization process 'init' as PID 1.

Rewrote the SIGINT hack.

Processes now maintain a family-tree structure and keep track of their
threads. PIDs are now allocated using a simple hack. Virtual memory
per-process can now be allocated using a simple hack. Processes can now be
forked. Fixed the Process::Execute function such that it now resets the
stack pointer to where the stack actually is - not just a magic value.
Removed the old and ugly Process::_endcodesection hack.

Rewrote the scheduler into a much cleaner and faster version. Debug code is
now moved to designated functions. The noop kernel-thread has been replaced
by a simple user-space infinite-loop program 'idle'.

The Thread class has been seperated from the Scheduler except in Scheduler-
related code. Thread::{Save,Load}Registers has been improved and has been
moved to $(CPU)/thread.cpp. Threads can now be forked. A new CreateThread
function creates threads properly and portably.

Added a MicrosecondsSinceBoot() function.

Fixed a crucial bug in MemoryManagement::Fork().

Added an 'idle' user-space program that is a noop infinite loop, which is
used by the scheduler when there is nothing to do.

Rewrote the 'init' program such that it now forks off a shell, instead of
becoming the shell.

Added the $$ (current PID) and $PPID (parent PPID) variables to the shell.
2011-11-01 01:00:20 +01:00
Jonas 'Sortie' Termansen
c705bf39ff Ported kernel to new syscall API and started cleaning up the old one. 2011-10-27 00:20:28 +02:00
Jonas 'Sortie' Termansen
34e9ca277d Added a shell, a few programs, and added support for SIGINT. 2011-08-28 12:38:01 +02:00