Proper way to add vendor-specific syscalls?

Konstantin Belousov kostikbel at gmail.com
Mon Oct 3 18:18:08 UTC 2016


On Mon, Oct 03, 2016 at 11:48:39AM -0600, Alan Somers wrote:
> What's the proper way to add a vendor-specific syscall? The comments
> in kern/syscalls.master suggest that they should be put in the range
> from 151-180, but most of that range is actually occupied.
I think that the 'vendors' there means vendors of other BSD-derived
systems and not e.g. an appliance vendors.

> Only five
> nosys slots are available.  If I add syscalls to the end of the list,
> they'll likely collide with future standard syscalls.  Should I just
> added ~100 nosys syscalls to the end of the list, and put my custom
> syscalls afterwards?  Is there any penalty to lengthening the list?

Each nosys syscall increases the size of the default ABI syscalls table.
On amd64 sizeof(struct sysent) == 48, adding 100 nosys entries would
waste a page and some more.

How many syscalls do you need ?  You probably do not allow random modules
loaded and implementing syscalls, so could you use e.g. range 210-219 ?

If you look further, you will see lot of holes like 258-271, 281-288
etc.  Current practice is to allocate new syscalls at the end of the
table, which leaves there holes unused with high chance of never being
collected.


More information about the freebsd-hackers mailing list