Commit Graph

785 Commits

Author SHA1 Message Date
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
250db2c90f Scheduler: add an append_task() function 2022-10-17 17:14:22 +02:00
c2fa4f380d Kernel: Use the new Task member functions 2022-10-17 17:07:25 +02:00
ce10fb5743 fcntl(F_DUPFD): Allocate any file descriptor greater than or equal to arg 2022-10-17 17:01:22 +02:00
891651f2d6 Task: Move functions operating on Task to member functions
Also, add an alloc_fd_greater_than_or_equal() function, for use in fcntl(F_DUPFD)
2022-10-17 17:00:07 +02:00
e34045a78c Kernel: on stack smashing detection, do not trigger a normal panic
That triggers stack traces, which we do not want in a stack smash fail situation
2022-10-16 19:04:24 +02:00
9b39d618de Kernel, libc: Implement spawn()
This function is a Luna alternative to fork() and exec().

Why? Simply because I can't figure out for the life of me how to implement a working fork().

So meanwhile, we have spawn() as a replacement. exec() still exists, though.
2022-10-16 18:48:35 +02:00
a1146a5ce2 Panic: show panic message on screen 2022-10-16 18:23:33 +02:00
6d821d2638 libc: Add support for mkdir() 2022-10-16 17:37:29 +02:00
f35bbe52b7 fnctl: Do not switch on cmd 2022-10-16 17:27:15 +02:00
e1e86ab889 libc: Add support for EEXIST, ENOTDIR, ENOSPC, ENOTSUP and EPIPE to strerror() 2022-10-16 17:24:58 +02:00
d2e2883a79 Kernel: Make mkdir() accessible to userspace 2022-10-16 17:22:12 +02:00
18fbccafb7 VFS: add an exists() function 2022-10-16 16:58:18 +02:00
0a46feb162 Add strnlen test 2022-10-16 16:00:14 +02:00
d62eb6c791 Tests: Add test framework 2022-10-16 15:31:58 +02:00
f8154ce230 Kernel: Implement mkdir() from a single path
This is done using dirname() and basename() :)
2022-10-16 14:45:25 +02:00
8c0a57f0c2 Kernel: Copy strrchr, dirname and basename over from libc 2022-10-16 14:36:25 +02:00
1624f0360d exec: More logging 2022-10-15 17:47:57 +02:00
d30010d524 apps/sym: Read from the end of the file 2022-10-15 17:45:53 +02:00
68403dc029 Kernel: Make AddressSpaces reference-counted 2022-10-15 17:40:33 +02:00
eca7227fda StackTracer: Stop when instruction is at nullptr 2022-10-15 17:31:57 +02:00
aca1367158 Kernel: Switch to strlcpy() as well
Surprisingly, most uses of strncpy() are in places where strncpy() is actually a better choice.
For example, copying to a fixed-length char array in a structure.
2022-10-15 17:30:34 +02:00
42b6b927c9 libc: Implement strlcpy(), and make strncpy() standard-compliant 2022-10-15 17:24:22 +02:00
48f38bdcef libc: More inttypes.h 2022-10-15 16:53:26 +02:00