Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support FreeBSD #31

Open
jasonwhite opened this issue Mar 19, 2023 · 2 comments
Open

Support FreeBSD #31

jasonwhite opened this issue Mar 19, 2023 · 2 comments
Labels
enhancement New feature or request up for grabs No one is working on it. Want to implement it?

Comments

@jasonwhite
Copy link
Owner

jasonwhite commented Mar 19, 2023

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
@jasonwhite jasonwhite added enhancement New feature or request up for grabs No one is working on it. Want to implement it? labels Mar 19, 2023
@AdamIsrael
Copy link

For MacOS, the syscalls have moved to https://github.com/apple-oss-distributions/xnu/blob/main/bsd/kern/syscalls.master

@jasonwhite
Copy link
Owner Author

@AdamIsrael Thanks! Updated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request up for grabs No one is working on it. Want to implement it?
Projects
None yet
Development

No branches or pull requests

2 participants