Commit Graph

1858 Commits

Author SHA1 Message Date
1938a059a2 Kernel: Free the last spawned thread's PID on exit 2022-10-19 20:51:54 +02:00
aebd860947 libc: Add stdin
Aka keyboard :)
2022-10-19 20:43:04 +02:00
ba57f32f39 init: wait less before starting sh 2022-10-19 20:36:27 +02:00
a815beacfb sh: add builtins 2022-10-19 20:34:10 +02:00
20db8eaba6 Init: exit if the primary child process exits 2022-10-19 20:33:59 +02:00
51665a04b7 Kernel: Restart if init exits 2022-10-19 20:33:41 +02:00
7e9744419e sh: Improve it 2022-10-19 20:16:21 +02:00
3c5c92c7c3 sh: Add a simple interactive shell 2022-10-19 19:42:05 +02:00
7ec221c36d libc: Move __luna_syscall* declarations to asm 2022-10-19 17:50:09 +02:00
5816f54293 libc: Move SYS_* constants to sys/syscall.h 2022-10-19 17:49:55 +02:00
b035795eb3 Kernel: Move errno.h and (k)assert.h out of the main include directory
This is mostly so IDEs don't pick them up instead of the userspace headers :)
2022-10-19 17:41:23 +02:00
aa90e4a8d9 libc: Implement freopen() 2022-10-19 17:32:59 +02:00
f3af3e252b Kernel: refresh task_misbehave()
That function was severely outdated.
2022-10-19 17:26:36 +02:00
ef8ba3dec4 Kernel: Do not hang when a user task misbehaves
This was for testing/debugging. But we DEFINITELY don't want that.
2022-10-19 17:25:56 +02:00
656667812a Kernel: reparent child processes to PID 1 when their parent exits 2022-10-19 17:16:01 +02:00
a29f7f8df2 Kernel: waitpid: support -1 as PID (wait for any child) 2022-10-19 17:15:30 +02:00
48d4a5910a Kernel: Add a few convenience functions to manipulate userland memory 2022-10-19 17:13:16 +02:00
755242719c VMM: Add a few memsets
This seems to fix exec() making weird page tables!!
2022-10-19 07:56:08 +02:00
671f2a2de3 Kernel, libc: Implement waitpid()
FIXME: exec() is now doing weird page table stuff. But at least it works, no panics :)
2022-10-18 21:30:52 +02:00
bb00e3c112 Kernel: Guard against recursive panics
Previously, when we panicked (page-fault for example) while dumping a kernel panic, it would just loop over and over again.

Now, we check if we were already in a panic, and limit the dump:
- No stack trace.
- Only a few registers.
- Only serial (since we can page fault while writing to the framebuffer)

This should make recursive panics much more difficult to achieve.
If we page-fault while writing to console, we don't even see a panic (not even in serial) and eventually triple-fault.
So this patch is actually more user-friendly.
2022-10-18 21:08:21 +02:00
59506b8852 Kernel: Show current_task's name in the log 2022-10-18 18:41:17 +02:00
f1bfa6bec8 Build system: more cflags + stripping 2022-10-18 18:28:28 +02:00
01564cb905 libc: Adapt libc to getprocid() + add getppid() 2022-10-18 17:36:33 +02:00
52d391507d Kernel: Rename the getpid() syscall to getprocid()
Now, we have one single system call to fetch all sorts of identifiers:
PID, PPID, UID, GID; EUID, EGID, and more...
2022-10-18 17:36:17 +02:00
a9d3bdba6f Kernel: Keep track of a task's PPID 2022-10-18 17:18:37 +02:00
bdf1bb15a1 StackTracer: only show kernel addresses for now, until there are more checks 2022-10-18 17:14:09 +02:00
48d68a3e31 Kernel: Switch back to kernel address space on kernel panic 2022-10-18 17:13:43 +02:00
92d8c9d4d5 Next version! 2022-10-17 21:28:35 +02:00
3c1146f2c5 libc: Implement setjmp() and longjmp() 2022-10-17 21:22:18 +02:00
511ad67a9a fdopen: Check for malloc errors 2022-10-17 20:54:32 +02:00
e17a21dbad libc: Use fdopen() after calling open() in fopen() 2022-10-17 20:54:09 +02:00
494b48bbe3 init: Adjust init 2022-10-17 20:53:09 +02:00
4f41b9ed37 Scheduler: Implement a find_by_pid function 2022-10-17 20:40:38 +02:00
8b17065718 Kernel, libc: Rename gettid() to getpid() and move it to unistd.h 2022-10-17 20:08:44 +02:00
87ef210759 Kernel, libc: Remove spawn()
Now, fork() and exec() are both implemented. More POSIX-y, thus spawn can be removed.
2022-10-17 19:55:01 +02:00
55808d5cc4 Update README.md with new features 2022-10-17 19:39:34 +02:00
1e96a45f33 Change 'tid' to 'PID' in init.c
I think tasks can be considered programs now. So, gettid() is equal to getpid().

In fact, it should be renamed. And moved to unistd.h. Soon.
2022-10-17 19:39:26 +02:00
a2c05de604 mmap(), mprotect(), munmap(): Check more stuff 2022-10-17 19:32:24 +02:00
c2ecc4fe95 Update README.md 2022-10-17 19:32:02 +02:00
593daba651 Kernel: Remove unused headers in main.cpp 2022-10-17 19:23:53 +02:00
ea8a42b8c0 Kernel: Add a name field to the Task structure 2022-10-17 19:12:47 +02:00
e7522c21ca libc: Document fork() 2022-10-17 18:56:04 +02:00
34fc6996b0 UserHeap: allocate needed memory in request_virtual_pages 2022-10-17 18:52:11 +02:00
92634048fc UserHeap: some nice improvements 2022-10-17 18:49:19 +02:00
64f5078494 Kernel, libc: Implement fork()
This time for real.

Also, add a new per-user-task virtual address allocator (UserHeap), so that mmap'ed pages are in user range and can be copied.
2022-10-17 18:43:35 +02:00
966fdc76d7 Move userspace task to userspace memory 2022-10-17 17:30:05 +02:00
b334e1cd50 VMM: check if the entry is already present 2022-10-17 17:26:16 +02:00
682be58d97 AddressSpace: copy instead of linking 2022-10-17 17:24:33 +02:00
3bf4f854c7 init: return 0 at the end of main 2022-10-17 17:19:31 +02:00
8b70635e79 Do not strip apps 2022-10-17 17:19:23 +02:00