Date: Tue, 10 Jan 2023 17:42:12 -0600 From: Jake Freeland <jake@technologyfriends.net> To: Rob Wing <rob.fx907@gmail.com> Cc: Mateusz Guzik <mjguzik@gmail.com>, "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: Syscalls: eventfd and timerfd Message-ID: <CAOgZAGYZYEp42usEfqvkG5ZUdMTYLwBkC8UJ6ibBCpMFGv11Kw@mail.gmail.com> In-Reply-To: <CAF3%2Bn_f0DX=gfdbwDKTUB4SLACZa-RvYHm1MyrUU302xNmF%2Bpg@mail.gmail.com> References: <CAOgZAGbK5H=JtxY7MZKyyXa=i=CXbYtV4tCOvg6N-CRYjqJ4fQ@mail.gmail.com> <CAGudoHHd%2BqixeXW_V3f4pXWG8-Bi6eAbUHBGY6033W8P-JBivA@mail.gmail.com> <CAF3%2Bn_f0DX=gfdbwDKTUB4SLACZa-RvYHm1MyrUU302xNmF%2Bpg@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] On Tue, Jan 10, 2023 at 5:39 PM Rob Wing <rob.fx907@gmail.com> wrote: > You might also be interested in checking out Brooks Davis' talk on adding > syscalls: > > > https://www.bsdcan.org/events/bsdcan_2022/sessions/session/73/slides/35/so-you-want-to-add-a-syscall.pdf > > https://youtu.be/_5LF_0GIpi8 > I must've missed this when trying to find documentation on this topic. Thanks for recommending this. I'll give it a watch. Jake Freeland > > > On Tuesday, January 10, 2023, Mateusz Guzik <mjguzik@gmail.com> wrote: > >> It is added with a non-standard entry point. >> >> If you git log -p sys/kern/sys_eventfd.c you will see: >> >> commit 7a202823aa54ba18c485bdbcf355269bcfee1ab9 >> Author: Konstantin Belousov <kib@FreeBSD.org> >> Date: Wed Dec 23 16:14:04 2020 +0200 >> >> Expose eventfd in the native API/ABI using a new __specialfd syscall >> >> then if you git grep __specialfd: >> lib/libc/gen/eventfd.c: return (__sys___specialfd(SPECIALFD_EVENTFD, >> &args, sizeof(args))); >> lib/libc/include/libc_private.h:int __sys___specialfd(int, >> const void *, __size_t); >> sys/compat/freebsd32/freebsd32_syscall.h:#define >> FREEBSD32_SYS___specialfd 577 >> sys/compat/freebsd32/freebsd32_syscalls.c: "__specialfd", >> /* 577 = __specialfd */ >> sys/compat/freebsd32/freebsd32_sysent.c: { .sy_narg = >> AS(__specialfd_args), .sy_call = (sy_call_t *)sys___specialfd, >> .sy_auevent = AUE_SPECIALFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = >> SY_THR_STATIC }, /* 577 = __specialfd */ >> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */ >> sys/compat/freebsd32/freebsd32_systrace_args.c: struct >> __specialfd_args *p = params; >> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */ >> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */ >> sys/kern/init_sysent.c: { .sy_narg = AS(__specialfd_args), .sy_call = >> (sy_call_t *)sys___specialfd, .sy_auevent = AUE_SPECIALFD, .sy_flags = >> SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 577 = __specialfd >> */ >> sys/kern/sys_generic.c:sys___specialfd(struct thread *td, struct >> __specialfd_args *args) >> sys/kern/syscalls.c: "__specialfd", /* 577 = >> __specialfd */ >> sys/kern/syscalls.master: int __specialfd( >> sys/kern/systrace_args.c: /* __specialfd */ >> sys/kern/systrace_args.c: struct __specialfd_args *p = >> params; >> sys/kern/systrace_args.c: /* __specialfd */ >> sys/kern/systrace_args.c: /* __specialfd */ >> sys/sys/syscall.h:#define SYS___specialfd 577 >> sys/sys/syscall.mk: __specialfd.o \ >> sys/sys/sysproto.h:struct __specialfd_args { >> sys/sys/sysproto.h:int sys___specialfd(struct thread *, struct >> __specialfd_args *); >> sys/sys/sysproto.h:#define SYS_AUE___specialfd AUE_SPECIALFD >> >> On 1/11/23, Jake Freeland <jake@technologyfriends.net> wrote: >> > Hi there, >> > >> > I am currently working on moving the linux_compat implementation of >> > timerfd (in sys/compat/linux/linux_event.c) into its own FreeBSD syscall >> > similar to what was done for eventfd. This is my first time implementing >> > a syscall, so I have been following the eventfd implementation as a >> > reference. I noticed that the eventfd syscall entries are absent from >> > sys/kern/syscalls.master and I am not sure why. Was eventfd never >> > formally added as a syscall entry or am I missing something? I was >> > planning on adding timerfd entries to syscalls.master, but now I am >> > unsure how to proceed. >> > >> > I apologize for my ignorance. This process is new to me. >> > >> > Thank you, >> > Jake Freeland >> > >> >> >> -- >> Mateusz Guzik <mjguzik gmail.com> >> >> [-- Attachment #2 --] <div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 10, 2023 at 5:39 PM Rob Wing <<a href="mailto:rob.fx907@gmail.com">rob.fx907@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">You might also be interested in checking out Brooks Davis' talk on adding syscalls:<div><br></div><div><a href="https://www.bsdcan.org/events/bsdcan_2022/sessions/session/73/slides/35/so-you-want-to-add-a-syscall.pdf" target="_blank">https://www.bsdcan.org/events/bsdcan_2022/sessions/session/73/slides/35/so-you-want-to-add-a-syscall.pdf</a></div><div><br></div><div><p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica"><a href="https://youtu.be/_5LF_0GIpi8" target="_blank">https://youtu.be/_5LF_0GIpi8</a></p></div></blockquote><div><br></div><div>I must've missed this when trying to find documentation on this topic.</div><div>Thanks for recommending this. I'll give it a watch.</div><div><br></div><div>Jake Freeland</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica"><br></p><p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica"><br></p>On Tuesday, January 10, 2023, Mateusz Guzik <<a href="mailto:mjguzik@gmail.com" target="_blank">mjguzik@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It is added with a non-standard entry point.<br> <br> If you git log -p sys/kern/sys_eventfd.c you will see:<br> <br> commit 7a202823aa54ba18c485bdbcf355269bcfee1ab9<br> Author: Konstantin Belousov <kib@FreeBSD.org><br> Date: Wed Dec 23 16:14:04 2020 +0200<br> <br> Expose eventfd in the native API/ABI using a new __specialfd syscall<br> <br> then if you git grep __specialfd:<br> lib/libc/gen/eventfd.c: return (__sys___specialfd(SPECIALFD_EVENTFD,<br> &args, sizeof(args)));<br> lib/libc/include/libc_private.h:int __sys___specialfd(int,<br> const void *, __size_t);<br> sys/compat/freebsd32/freebsd32_syscall.h:#define<br> FREEBSD32_SYS___specialfd 577<br> sys/compat/freebsd32/freebsd32_syscalls.c: "__specialfd",<br> /* 577 = __specialfd */<br> sys/compat/freebsd32/freebsd32_sysent.c: { .sy_narg =<br> AS(__specialfd_args), .sy_call = (sy_call_t *)sys___specialfd,<br> .sy_auevent = AUE_SPECIALFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt =<br> SY_THR_STATIC }, /* 577 = __specialfd */<br> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */<br> sys/compat/freebsd32/freebsd32_systrace_args.c: struct<br> __specialfd_args *p = params;<br> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */<br> sys/compat/freebsd32/freebsd32_systrace_args.c: /* __specialfd */<br> sys/kern/init_sysent.c: { .sy_narg = AS(__specialfd_args), .sy_call =<br> (sy_call_t *)sys___specialfd, .sy_auevent = AUE_SPECIALFD, .sy_flags =<br> SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 577 = __specialfd<br> */<br> sys/kern/sys_generic.c:sys___specialfd(struct thread *td, struct<br> __specialfd_args *args)<br> sys/kern/syscalls.c: "__specialfd", /* 577 = __specialfd */<br> sys/kern/syscalls.master: int __specialfd(<br> sys/kern/systrace_args.c: /* __specialfd */<br> sys/kern/systrace_args.c: struct __specialfd_args *p = params;<br> sys/kern/systrace_args.c: /* __specialfd */<br> sys/kern/systrace_args.c: /* __specialfd */<br> sys/sys/syscall.h:#define SYS___specialfd 577<br> sys/sys/<a href="http://syscall.mk" target="_blank">syscall.mk</a>: __specialfd.o \<br> sys/sys/sysproto.h:struct __specialfd_args {<br> sys/sys/sysproto.h:int sys___specialfd(struct thread *, struct<br> __specialfd_args *);<br> sys/sys/sysproto.h:#define SYS_AUE___specialfd AUE_SPECIALFD<br> <br> On 1/11/23, Jake Freeland <<a href="mailto:jake@technologyfriends.net" target="_blank">jake@technologyfriends.net</a>> wrote:<br> > Hi there,<br> ><br> > I am currently working on moving the linux_compat implementation of<br> > timerfd (in sys/compat/linux/linux_event.c) into its own FreeBSD syscall<br> > similar to what was done for eventfd. This is my first time implementing<br> > a syscall, so I have been following the eventfd implementation as a<br> > reference. I noticed that the eventfd syscall entries are absent from<br> > sys/kern/syscalls.master and I am not sure why. Was eventfd never<br> > formally added as a syscall entry or am I missing something? I was<br> > planning on adding timerfd entries to syscalls.master, but now I am<br> > unsure how to proceed.<br> ><br> > I apologize for my ignorance. This process is new to me.<br> ><br> > Thank you,<br> > Jake Freeland<br> ><br> <br> <br> -- <br> Mateusz Guzik <mjguzik <a href="http://gmail.com" target="_blank">gmail.com</a>><br> <br> </blockquote></div> </blockquote></div></div>help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOgZAGYZYEp42usEfqvkG5ZUdMTYLwBkC8UJ6ibBCpMFGv11Kw>
