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
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
a2c05de604
mmap(), mprotect(), munmap(): Check more stuff
2022-10-17 19:32:24 +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
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
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
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
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
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
4bad782aad
Kernel: Increment the maximum number of file descriptors a task can have
...
Doesn't use up more space in the Task structure, and now we are above the Minimum Acceptable Value as defined by POSIX (20), I think.
2022-10-15 14:20:29 +02:00
62a2bcf2ff
Kernel: Add a clock() system call
2022-10-15 13:17:26 +02:00
3a9dddaa57
Kernel, libc: Remove the rand() system call
...
That's why we now have a VFS and a /dev pseudo-filesystem. To provide that kind of things.
Remember, everything is a file!!
The new way to ask the kernel for random numbers is to read from /dev/random.
2022-10-15 13:04:48 +02:00
613f8170b6
Kernel, libc: Implement mprotect() and use proper PROT_* values
2022-10-15 12:57:14 +02:00
62d631f1b4
Kernel: Rename assert.h to kassert.h so IDEs pickup the kernel header instead of the userspace one
2022-10-15 12:56:48 +02:00
1e86acd4c0
libc: Implement fcntl(F_DUPFD) and dup()
2022-10-15 11:16:34 +02:00
36bb1cab5c
FileDescriptor: add operator=() so that the fcntl(F_DUPFD syscall compiles :)
2022-10-15 11:16:18 +02:00
5c61252061
Kernel: Add a new fcntl() system call
2022-10-15 10:56:06 +02:00
3eb1bff2e9
Task: add an alloc_fd() function
2022-10-15 10:45:12 +02:00
91d76a2ee4
Devices: Add a new RandomDevice :)
...
This new device uses the seeded Mersenne PRNG we use in the kernel.
This device is not meant for regular userspace use, but more for userspace to seed their own PRNGs from.
If the DeviceFS is mounted at /dev, this device can be found at /dev/random.
2022-10-14 20:14:49 +02:00
faaf930a14
Moon 0.12-dev
2022-10-14 19:55:29 +02:00
97461c7c1f
Prepare for moon 0.11
2022-10-14 19:49:52 +02:00
e0aa552fae
Kernel: Add a move() function
...
The standard C++ move() function.
2022-10-14 19:04:56 +02:00
f82fbbe60c
Make address spaces not cloned by default
2022-10-14 18:23:04 +02:00
c8a92af4d2
Whoops! bugfix
2022-10-14 18:21:09 +02:00
1c3377fc98
Prepare for cloning address spaces, not there yet
2022-10-14 18:17:57 +02:00
e43777bd31
Apparently, it just works now.
2022-10-14 18:00:33 +02:00
97a8a4a4a2
Solve rebase
2022-10-14 17:39:24 +02:00
81f56083c5
Almost there!
2022-10-14 17:38:29 +02:00