Commit Graph

76 Commits

Author SHA1 Message Date
Ashwin Naren
f1d2d007bb handle stop and continue 2025-12-15 16:49:04 -08:00
Ashwin Naren
f63ad250f4 implement restarting 2025-12-15 21:22:53 +00:00
Matthew Leach
b8edd4af68 fat32: downcase 8.3 filenames
Using mtools to prepare the initrd image results in an image that
exclusively uses 8.3 filenames; as per the spec, the 8.3 filenames are
stored uppercase. However, on most UNIX systems, people are used to
dealing with down-case names; therefore convert the strings to
lower-case before passing back to the user.
2025-12-14 06:38:42 +00:00
Matthew Leach
4cd9fab80b scripts: deps: usertest: new
Add a script to build the userspace test program and include it in the
initramfs.
2025-12-13 19:21:22 -08:00
Matthew Leach
e2a9306037 build-deps: busybox: don't popd too many times
Fix the busybox deps script's dir stack underflow.
2025-12-13 19:21:22 -08:00
Ashwin Naren
a4e9cf9fd9 formatting 2025-12-11 20:09:47 +00:00
Ashwin Naren
6d967332b7 remove old todo 2025-12-11 20:09:47 +00:00
Ashwin Naren
76f7707e00 test writing 2025-12-11 20:09:47 +00:00
Ashwin Naren
b05c606a2a testing 2025-12-11 20:09:47 +00:00
Ashwin Naren
e2534ffd9c Implement /dev/zero 2025-12-10 14:37:59 -08:00
Ashwin Naren
71f025b437 Implement /dev/null (#48) 2025-12-09 08:40:27 -08:00
Matthew Leach
511a0db41e arch: arm64: parse cmdline from chosen node
The kernel command line is passed via the FDT's chosen node. Use that,
rather than hard-coding it into the kernel.

Fixes: #20
2025-12-07 16:41:45 +00:00
Matthew Leach
abd5ef39c2 create-image: use mtools to populate image
Use the `mtools` set of utilities to populate the image without the need
to run mount the image (requring sudo).
2025-12-07 16:41:35 +00:00
Matthew Leach
76624b8be0 scripts/deps/bash: fix build for later gcc
'bool' has become a reserved keyword in c23.  If gcc is modern enough
that this is the default standard, it results in an error.  Default to
c99 for the host compiler to fix the problem.

Patch suggested by: @dec-mcgraw

Fixes: #43
2025-12-07 16:41:35 +00:00
Matthew Leach
afaae627cf scripts/deps/bash: use release tar
Rather than closing the entire git repo, use the offical tar.gz release
from GNU.
2025-12-07 16:41:35 +00:00
Matthew Leach
dec7348015 rust-toolchain.toml: add rust-analyzer
Add rust analyzer to project rust deps.
2025-12-07 16:41:35 +00:00
Brian R.
8101e6278f Update README.md
I was having a hard time figuring out what this meant when I was going through the instructions the first time, and I believe that this would help clarify things for people who got stuck like I did. I also corrected the name for "Any OS" to clarify this is for X86-64 Linux OSes, because of the command I provided in the README.
2025-12-07 16:40:54 +00:00
Ashwin Naren
661f368334 implement sys_kill 2025-12-01 19:55:41 +00:00
NerdNextDoor
0904a1994c Introduce experimental macOS build support
Tested on my M4 MacBook Air, builds fine.
2025-11-30 21:15:30 +00:00
Matthew Leach
910203e0c2 syscalls: mprotect: implement
Implement the `mprotect` syscall. Including a bunch of tests for
ensuring proper VMA functionality regarding splitting and merging via
`mprotect`.
2025-11-30 20:13:36 +00:00
Matthew Leach
baf98c452f libkernel: vmarea: shrink_to: implement
Implement a `shrink_to` function for a VMA. This shrinks the VMA's
region to the specified region, while recalculating file offsets and
size if the VMA is file-backed.
2025-11-30 20:13:36 +00:00
Matthew Leach
3e3a9ad0c5 libkernel: region: add punch_hole
Add a function for calculating the set difference when punching one
region out of another.
2025-11-30 20:13:36 +00:00
Matthew Leach
1b95049159 libkernel: memory: VMArea: page align on from_pheader
Page align any non-aligned program headers, fixing up the file offset
and filesz accordingly.
2025-11-30 20:13:36 +00:00
Herman Polloni
41814dddbe Fix bash build on aarch64 host 2025-11-30 10:19:14 +00:00
Matthew Leach
8038a6c4e2 syscalls: sys_getrand: implement
Implement sys_getrand
2025-11-28 21:24:37 +00:00
Ashwin Naren
5f2c2491b8 implement fair scheduler 2025-11-28 21:06:07 +00:00
Bjorn Beishline
6d3af6a95d Update syscall doc with newly implemented methods 2025-11-28 20:46:45 +00:00
Bjorn Beishline
911a85e4ef Implement sys_set_robust_list and sys_gettid 2025-11-28 20:46:45 +00:00
Matthew Leach
fb405282cc syscalls: rseq: return ENOSYS
Return ENOSYS for sys_rseq
2025-11-28 20:09:05 +00:00
Matthew Leach
1741b036bb syscalls: getrlimit: return error
Return error for the moment for `sys_getrlimit`.
2025-11-28 20:09:05 +00:00
Matthew Leach
1ed714e47b libkernel: memory: region: remove breaking assert in expand
The `expand` function adds bytes size into the region; the check `size
>= self.size` isn't needed since this is an expanding function, not a
resizing one. To emphasise that, rename the function to `expand_by`.

Also include a bunch of unit tests to ensure that expansion by regions
with differing sizes works correctly.
2025-11-28 20:09:05 +00:00
Matthew Leach
6e988c3639 syscall: socket: return with error
Return with an error when calling socket()
2025-11-28 20:09:05 +00:00
Matthew Leach
6a029c340a syscall: gettimeofday: impement
Provide a dummy implementation of sys_gettimeofday
2025-11-28 20:09:05 +00:00
Matthew Leach
5f42f74c5c process: exec: add AT_PH aux vectors
libc uses the program headers to find the TLS pheader. Therefore, we
need to push these values into the aux vector when creating the
userspace mappings for the process.
2025-11-28 20:09:05 +00:00
Matthew Leach
28980c6725 uname: fudge the version of the kernel for libc
libc bringup checks the version of the kernel and it appears as though
it's not happy with `0.1.0`:

```
FATAL: kernel too old
```

For now, fudge the version to keep libc happy.
2025-11-28 20:09:05 +00:00
Matthew Leach
74b483dd22 exec: add a dummy AT_RANDOM aux vector value
Add a dummy value for AT_RANDOM as part of the aux vector. This is a
security hole and needs fixing once an entropy engine has been
implemented.
2025-11-28 20:09:05 +00:00
Matthew Leach
825b3d7547 libkernel: mem: brk: return non-aligned break
Determine whether the program break needs extending with aligned logic,
but always return the requested, non-aligned, address.

Use `brk_addr` in unit tests instead.
2025-11-28 20:09:05 +00:00
Ashwin Naren
de76e243a2 properly shutdown system 2025-11-28 20:02:12 +00:00
Ashwin Naren
504f7f01dc fix failing tests 2025-11-28 12:08:06 +00:00
Ashwin Naren
0c749d7ce8 Parse fat dates 2025-11-28 12:08:06 +00:00
Ashwin Naren
335412c441 include line/col info in kernel panic 2025-11-27 18:24:03 +00:00
Matthew Leach
58b903567d LICENSE: add MIT
Add MIT LICENSE

Fixes: #12
2025-11-27 15:17:59 +00:00
Ashwin Naren
eff3dad5c7 schedule tasks based on last run time 2025-11-27 14:09:14 +00:00
Matthew Leach
e9f3f8764d Merge pull request #13 from hardliner66/restructure_build 2025-11-26 06:28:58 +00:00
Steve Biedermann
e5c4ef7e74 restructure build scripts 2025-11-25 22:06:39 +01:00
Matthew Leach
b1ebd61763 Merge pull request #16 from hexagonal-sun/fat32-case-insensitive
libkernel: fs: fat32: make lookups case-insensitive
2025-11-24 21:35:38 +00:00
Matthew Leach
4735e7c59a Merge pull request #15 from hardliner66/fix_readme_link
Fix link in readme
2025-11-24 21:28:13 +00:00
Matthew Leach
606500ba8b libkernel: fs: fat32: make lookups case-insensitive
Fat32 is a case-insensitive filesystem, therefore when looking up a path
in a directory entry, convert all strings to lowercase before
comparison.
2025-11-24 21:25:51 +00:00
Steve Biedermann
bbdd96f953 fix link in readme 2025-11-24 21:18:40 +01:00
Matthew Leach
d09e7a9333 Merge pull request #14 from hardliner66/add_syscall_docs 2025-11-24 17:39:36 +00:00