Date: Tue, 11 Mar 2025 10:12:33 +0300 From: Gleb Popov <arrowd@freebsd.org> To: Konstantin Belousov <kostikbel@gmail.com> Cc: freebsd-hackers <freebsd-hackers@freebsd.org> Subject: Re: Would we want pidfd_open(2) & SO_PEERPIDFD? Message-ID: <CALH631m7DZKOLkjn4Z9z7arE9xwfEEjaGVSO=5KyHJ=iZ8o9Qw@mail.gmail.com> In-Reply-To: <Z6wuyS4uBQJbCG-c@kib.kiev.ua> References: <CALH631mgztNmngL1Hffbbcf0n-kLZP-2YmsMLJ8Xi33HV8uuvw@mail.gmail.com> <Z6udhDuj4uBjNUsM@kib.kiev.ua> <CALH631=7MnCAe67yPqG%2BAJfy_CPxf3HUxsfeVvgmiTEXEy27Bg@mail.gmail.com> <Z6wuyS4uBQJbCG-c@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Feb 12, 2025 at 8:17=E2=80=AFAM Konstantin Belousov <kostikbel@gmai= l.com> wrote: > > On Wed, Feb 12, 2025 at 07:10:25AM +0300, Gleb Popov wrote: > > On Tue, Feb 11, 2025 at 9:57=E2=80=AFPM Konstantin Belousov <kostikbel@= gmail.com> wrote: > > > > > > > > > The semantic of the Linux' fd returned by pidfd_open() is not compati= ble > > > with our pidfd. > > > > What's the difference, exactly? > > I mean, it is still a descriptor and the only thing I need to do with > > it is check if it is still open. We even have pdgetpid() to go from > > the fd to a PID. This all looks like a perfect match to me. > > Read the man page for Linux pidfd_open(), and compare with our procdesc(4= ). > The one feature _you plan to use_ might be almost identical, but everythi= ng > else is different. When I started this thread the only use case I had was my own D-Bus service I'm writing. Now it turned out that a new version of xdg-desktop-portal [1] also started to rely on pidfd's passed by callers. I agree that our procdesc is indeed different compared to Linux pidfd, but not having a compatibility shim of some sort would mean a lot of non-upstreamable patching for dbus and xdg-desktop-portal. I'm not skilled enough to determine what parts of this API can be emulated in a userland library a-la libepoll-shim or libudev-dev. At the bare minimum I need a way to obtain a procdesc from a connected unix socket via getsockopt(LOCAL_PEERCRED) or something like that. [1] https://github.com/flatpak/xdg-desktop-portal/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALH631m7DZKOLkjn4Z9z7arE9xwfEEjaGVSO=5KyHJ=iZ8o9Qw>