Proper way to add vendor-specific syscalls?
alan somers
asomers at gmail.com
Mon Oct 3 20:00:17 UTC 2016
On Mon, Oct 3, 2016 at 12:18 PM, Konstantin Belousov
<kostikbel at gmail.com> wrote:
> 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.
Ok, it sounds like filling holes is the best method. Thanks for the
advice, kib.
-Alan
More information about the freebsd-hackers
mailing list