Skip site navigation (1)Skip section navigation (2)
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>