Re: How are syscall functions defined?
- In reply to: Pat Maddox: "Re: How are syscall functions defined?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 01 Jul 2023 15:58:22 UTC
On Sat, 01 Jul 2023 04:22:35 -0700 "Pat Maddox" <pat@patmaddox.com> wrote: > On Sat, Jul 1, 2023, at 3:11 AM, Pat Maddox wrote: > > jail_attach is defined in syscalls.master [1] which generates a > > declaration in jail.h [2]. Try as I might, I can?t find any definition > > of that specific syscall function (or any other). I think the closest > > I?ve found is sys_jail_attach in kern_jail.c [3]. I suspect there?s > > some generation going on that defines jail_attach - but if that?s the > > case, I haven?t been able to track it down. > > > > Can someone point me to how the C function gets defined? > > > > Thanks, > > Pat > > > > [1] > > https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/kern/syscalls.master#L2307 > > [2] > > https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/sys/jail.h#L119 > > [3] > > https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/kern/kern_jail.c#L2340 > > Symbol.map [1] is used to produce a version map [2] which is then fed to the linker [3], which I assume maps the symbols in the resulting binary. I intend to experiment with that a bit, but I think that makes sense. > > Pat > > [1] https://github.com/freebsd/freebsd-src/blob/releng/13.2/lib/libc/sys/Symbol.map#L672 > [2] https://github.com/freebsd/freebsd-src/blob/releng/13.2/share/mk/bsd.symver.mk#L43 > [3] https://github.com/freebsd/freebsd-src/blob/releng/13.2/share/mk/bsd.lib.mk#L253 > There's struct sysent sysent[] in /sys/kern/init_sysent.c which has all the syscalls. It's apparently indexed using the syscall number. It's automatically generated, although I don't exactly know how. -- Gary Jennejohn