Dear NetBSD tech-kern team,

I hope you are doing well. My name is Ghaith Dabboussi, and I’m interested
in applying for the *"emulating missing linux syscalls"* project for Google
Summer of Code 2025.

I have experience coding in C and some knowledge of operating systems.
While I haven’t worked with NetBSD’s compatibility layers before, I have
been out of curiousity researching compat_linux and how it translates Linux
syscalls to NetBSD equivalents. I’ve reviewed the NetBSD documentation and
source code, and I am eager to contribute.

I understand that the project involves identifying missing Linux syscalls
in NetBSD’s compact_linux layer and implementing them. Here’s my rough plan
as a newcomer :

*1.Familiarize myself with the existing compat_linux layer*: I’d start by
diving into the NetBSD source code related to compat_linux. My goal would
be to understand the current syscall translation mechanism thoroughly,
especially focusing on identifying the parts where syscalls are already
being translated, and where gaps exist.

*2.Analyze a Linux binary*: After identifying the existing syscall
translations, my next step would be to find a Linux binary that is not
currently supported by compat_linux. I plan to trace the system calls made
by this binary, paying attention to missing syscalls and their expected
behavior in a Linux environment.

*3.Identify missing syscalls*: By testing different binaries, I would
create a list of missing syscalls that are critical to running common Linux
applications. I would prioritize these syscalls based on their importance
to application functionality (e.g., clone(), futex(), epoll_wait()).

*4.Implementation and Testing*: My approach would involve iterating between
implementing these syscalls and testing them in a real Linux binary
context. Initially, I would tackle simpler syscalls that are more isolated
in their functionality to ensure quick learning and testing.


But since I’m new to working with NetBSD, I expect there will be a learning
curve, particularly when understanding how NetBSD structures its kernel
modules and syscall implementations. Given this, I would greatly appreciate
your guidance on the following questions to make sure I’m on the right
track:

1.Given that NetBSD already has some Linux syscalls implemented in
compat_linux, how would you recommend integrating new syscalls into the
existing translation layer? Would we be working directly within the current
syscall structures, or is there room for additional abstraction?

2.As someone new to NetBSD, I’m curious what tools or workflows you’d
recommend for tracing syscalls that fail during Linux binary execution.
Would tools like ktrace be sufficient, or is there a more NetBSD-specific
approach

I would love to hear your answers and thoughts on whether this is a good
approach. Also, do you have any specific Linux applications that currently
fail on NetBSD that could serve as a useful test case for this project?

Thank you for your time! I look forward to your feedback.

Best regards,
ghaith

dabboussighait...@gmail.com

Reply via email to