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
cdb73836b0
Some more multiple address space stuff
...
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-14 17:37:51 +02:00
bb7887a29d
Add basic address space infrastructure
2022-10-14 17:34:29 +02:00
177282d79c
Use the more appropriate size_t
2022-10-14 17:33:06 +02:00
5abd8814e3
Kernel: Continue moving utilities to a separate subdirectory
2022-10-14 17:33:06 +02:00
e21b608af4
Utilities: Start moving utilities into specific headers in a utils/ subdirectory
2022-10-14 17:31:47 +02:00
9b3c7816a3
Scheduler: pop the interrupt state when returning early from load_user_task()
2022-10-14 16:54:52 +02:00
26211bd49f
It (almost) works now
...
The only thing doing weird stuff is exec(), so that's commented out and throws ENOSYS right now.
But we have two user tasks running in parallel, isolated from each other!
2022-10-14 16:46:00 +02:00
0c7c249935
exec is still doing some weird stuff, totally corrupting the page tables
2022-10-13 22:20:24 +02:00
5d41b4b113
Almost there...
...
exec() is not working yet. But the rest are!!
2022-10-13 22:13:04 +02:00
24272c57ef
Almost there!
2022-10-13 21:55:51 +02:00
83982a24e2
add a comment
2022-10-13 21:21:02 +02:00
ee712432bd
Some more multiple address space stuff
...
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-13 21:14:39 +02:00
229b06c63b
Add basic address space infrastructure
2022-10-13 19:19:51 +02:00
522aa2f812
mmap, munmap: Add more checks
2022-10-13 18:50:12 +02:00
83e6b8cd21
VMM: Fix naming convention
2022-10-13 18:42:53 +02:00
57482e4e93
VMM: Make it even nicer
2022-10-13 18:15:52 +02:00
b360307f41
VMM: Make it so much gooder
...
There are still some fixes to be made, but I think this is already way cleaner than before.
2022-10-13 17:58:13 +02:00
9f2c9fb190
Kernel: Make Utilities be inline
2022-10-13 17:17:28 +02:00
b0e1b8a2b2
Missed some empty lines
2022-10-12 20:51:24 +02:00
2dd3a23092
Kernel: remove warnings when a standard IO syscall returns an error
...
That will probably happen a lot. We want userspace to tell us IF THE ERROR IS RELEVANT.
So, these unnecessary warnings are just noise.
Userspace may also use these functions to check for file descriptors.
For example, libc does this at program initialization, it checks whether fd 0 and 1 exist (by calling lseek() and seeing if it fails with errno=EBADF).
2022-10-12 20:50:21 +02:00
52944ba5d8
Kernel/VMM: Add support for larger pages to getFlags()
2022-10-12 20:05:27 +02:00
69a9f7f06a
Kernel: Move VMM from a class to a namespace
...
Also, rename the ugly Paging::VirtualMemoryManager name to just 'VMM'. Which is now used instead of kernelVMM.
2022-10-12 20:02:25 +02:00
5f8376409d
Kernel, libc: Implement EFAULT
2022-10-12 19:25:35 +02:00
e37ff67da2
Make exec return an error if the loaded executable would use more memory than is currently available
2022-10-12 19:22:08 +02:00
9cddf9485d
ELFLoader: Make check_elf_image return how much memory the executable will use on success
2022-10-12 19:20:14 +02:00
4091799701
Kernel, libc: Add ENOEXEC (Exec format error)
2022-10-12 19:15:44 +02:00