jasonwhite / jasonwhite/syscalls

Support FreeBSD

Open
#31 2 comments 0 reactions 0 assignees View on GitHub
enhancement up for grabs
Dominant language
Rust
Stars
141
Forks
23
PR merge metrics
No merged PRs in 30d

Description

Currently, most architectures on Linux are supported, but other platforms such as FreeBSD are not yet supported.

The master list of FreeBSD syscalls is at https://cgit.freebsd.org/src/tree/sys/kern/syscalls.master. It should be possible to parse this and generate the necessary syscall tables. Unlike Linux, I believe this list is the same for all architectures under FreeBSD.

For the MacOS kernel, the list is similar: https://github.com/apple-oss-distributions/xnu/blob/main/bsd/kern/syscalls.master (But it looks harder to parse because of `#ifdef` usage.)

To support the addition of another platform besides Linux, I think the following structure should be used:

- `syscalls::Sysno` - Still has the syscall list for the current target architecture *and* target platform.
- `syscalls::{target_arch}::Sysno` will be the syscall list for the architecture `target_arch` *and* the current platform.
- `syscalls::{target_os}::{target_arch}::Sysno` will be the syscall list for `target_os` *and* `target_arch`.

This should be a backwards compatible change while still allowing the syscall table of other platforms to be available. That is, it might be useful to be able to access the FreeBSD syscall table even if the target OS is Linux.

Thus, the source tree should look like this:
* `src/linux/{target_arch}.rs`
* `src/freebsd.rs` - Might not need individual `Sysno` tables for each architecture.
* `src/macos.rs`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading FreeBSD's syscalls.master and comparing it with the existing Linux syscall-table structure. Review the proposed src/linux/{target_arch}.rs, src/freebsd.rs, and src/macos.rs layout, then determine how the Sysno paths should preserve current behavior while exposing FreeBSD tables. Done means FreeBSD syscall tables can be generated and accessed without breaking existing Linux APIs.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, rust
Domain
operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.