From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id 7FAA03858D1E for ; Wed, 19 Apr 2023 10:29:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7FAA03858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-2f939bea9ebso2530470f8f.0 for ; Wed, 19 Apr 2023 03:29:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681900175; x=1684492175; h=mime-version:user-agent:in-reply-to:date:cc:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=iLAOmrSTiM9GdXlTYnwx/dO+f9aI77/xH8neP9dPeso=; b=bse3sr0tBcOms+Aibf59WToUxGOBXhFYnz9ghYLKKc5f0yvCG93GX7RHRwl3w6WpkJ wybUnEo1eHyZ0v/KJJ5eSjTV8BzAQyvVaXjhwGnwDBSJwoqdhvEBTngehxgpj2WtAgx6 Uo+yxFNuMdwVxUrWQLxmTIWwgG1HpF0TVvO8x1rbueJGcJntUyluaJDoH2zMz17IPQiM 5klkJGiiFJOtdvNU1ec085wyzEX/97cUjzzKBkyXlQnZwMFsOSZ9cOkBo/M8YLEa+xa3 Pp/zsYZTyAoRlLCrg7qBryZbymw3Z173Fqg7chvdcR67a0/ulm3IohSBZ6nIrdOP1PAC vAFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681900175; x=1684492175; h=mime-version:user-agent:in-reply-to:date:cc:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iLAOmrSTiM9GdXlTYnwx/dO+f9aI77/xH8neP9dPeso=; b=ZqHu2HlErTJGdmYSKVS9MHQ4ksS9fxzohFqmbb9hKlRRfbD+uBxL56NMRAJyTXGcTp W4xtx9GC/GD+fj+AiYR0yJJ+n9Keh4yHU64FxVrwxoHF5IFJ6BqcxlEIQ6JVVGgEzq64 ZFmTFWFvThnSGr0m3a2ut6d3QsE9iix7z+J7YoXMocOgwiTCKq1/fP42Tlr/JDJYY7u/ DNyDdmi+QMZg+NhfZ34wl7Vks9WfwkxcN04z82Cr/0pCOPkF1QD2AyriQ00IWJ0IHOD0 RQN63g+4l3o2Zir9hypAuO+w6dlNp5BoPJw3oTY+onRL0j/n7vnhP2fn8Y12D2L3fRPR oTGQ== X-Gm-Message-State: AAQBX9emp6zEz7RqUE76CuFh4jOGyhYLqpXK1G1SBU9czcy5SU6jXr3d K6LqPa63hH4L96BD4ub/nvCRbPosvvo= X-Google-Smtp-Source: AKy350awShWXcDCY0qQ3z0xOsq8CG1M22oX9gvsqEDv5QYfxvtf26zSO2TKuA9+zBEE+TjpDZXYfaw== X-Received: by 2002:a05:6000:144:b0:2fb:44d0:584b with SMTP id r4-20020a056000014400b002fb44d0584bmr4731760wrx.48.1681900174594; Wed, 19 Apr 2023 03:29:34 -0700 (PDT) Received: from ?IPv6:2a01:4b00:d307:1000:f1d3:eb5e:11f4:a7d9? ([2a01:4b00:d307:1000:f1d3:eb5e:11f4:a7d9]) by smtp.gmail.com with ESMTPSA id k1-20020a056000004100b002f5925c7cabsm15416494wrx.75.2023.04.19.03.29.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 03:29:34 -0700 (PDT) Message-ID: <6283d77d0625d9644216c21d4adc197a5e48881f.camel@gmail.com> Subject: Re: [PATCH 4/4] linux: Add pidfd_getpid From: Luca Boccassi To: adhemerval.zanella@linaro.org Cc: libc-alpha@sourceware.org Date: Wed, 19 Apr 2023 11:29:30 +0100 In-Reply-To: <20230418213505.3834934-5-adhemerval.zanella@linaro.org> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-NUikdxkG3/o+Ijh0U4Tt" User-Agent: Evolution 3.38.3-1+plugin MIME-Version: 1.0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --=-NUikdxkG3/o+Ijh0U4Tt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > +parse_fdinfo (const char *l, void *arg) > +{ > + enum { fieldlen =3D sizeof ("Pid:") - 1 }; > + if (strncmp (l, "Pid:", fieldlen) !=3D 0) > + return true; > + > + l +=3D fieldlen; > + > + char *endp; > + unsigned long int n =3D strtoul (l, &endp, 10); > + if (l =3D=3D endp || n > INT_MAX) > + return true; > + > + *(pid_t *)arg =3D n; > + return false; > +} > + > +pid_t > +pidfd_getpid (int fd) > +{ > + if (__glibc_unlikely (fd < 0)) > + { > + __set_errno (EINVAL); > + return -1; > + } > + > + char fdinfoname[FDINFO_FILENAME_LEN]; > + > + char *p =3D mempcpy (fdinfoname, FDINFO_TO_FILENAME_PREFIX, > + strlen (FDINFO_TO_FILENAME_PREFIX)); > + *_fitoa_word (fd, p, 10, 0) =3D '\0'; > + > + pid_t pid; > + if (procutils_read_file (fdinfoname, parse_fdinfo, &pid) =3D=3D -1) > + return -1; > + > + return pid; Having implemented this parsing by hand across 3 projects, it is great to see a glibc helper coming. However, please handle the case of Pid being 0 and -1 explicitly, and return a recognizable errno. fdinfo listing 0 means the pidfd cannot be resolved because it's in a separate pid namespace, so something EREMOTE would suffice. -1 means the process exited, so ESRCH seems like the right error. The distiction between these cases and other errors is important to userspace where we do process tracking, like systemd/dbus/polkit. > + The CLOSURE should return false if the read should continue, or false > + if the function should stop. Did you mean "true if the read should continue"? > + TEST_COMPARE (pidfd_getpid (INT_MAX), -1); > + { > + pid_t querypid =3D pidfd_getpid (pidfd); > + TEST_COMPARE (querypid, pid); > + } I think it would be a good idea to add a negative test, eg for a process that exited or so. (I am not subscribed to the list, so please CC directly if needed) --=20 Kind regards, Luca Boccassi --=-NUikdxkG3/o+Ijh0U4Tt Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCSqx93EIPGOymuRKGv37813JB4FAmQ/wooACgkQKGv37813 JB4EVxAAmVa7dt2PBczHuVIXMNm2yJujqA6518gRy+oa+gdUzw215QG1dbDRiHhq A1lb9TQx7QiDVQDJggKti37C4gzHblrQEWi1O4majA9ShKxKtoRN1dpcEblFcLlr zMZCt17NLFifyCfkH4mscKpEWKyvDr56E8CJC1u5RdEOu3snNYFcaRnsP7nwozvg hX4MJYGHiIfhkkO9mNNr/mjFditfC67GvoRwFWk59KMqHZF5C2l+tjJgvXV6TbQ/ SzVTuy6qesNxtpM3Ep2KFEmoZ6e0U9Ynhxh8IlZrr6XClUZhGg/Y7m/ftre6aC47 Biq6lI2Qy1DXiPEV6MoQu08uAyo1OwifT1WsFMztB5pbnAtNA66Ok068G1cz4jQQ gFHP7Lc3kwKuWKJ577O4Ga/f2fxxtLoSX7BCF39+KnAonnrQPCyixM5MT/ZX1VHH nBl3iGY0NIXvbiTGC4BHByMhqXFFuJ6tOvIXFsk4LD9+e/9joGrNONtA6UFNuVhH g++4K9YUz7Ww2SLI1tmjg+tLDn5JlFgDJgYhfKnowrWm4l2yzSztcnZfCdiJYgEp 0j8EqqYEBr17JYhTdOFD519VZZwAVPkJxpH9Meeeq2ibOSmETRDE7BR+BCXgn+dg 1QvS0ZbYtzRQ4d2IyThhUJSPTi4P8zt0yk7ITsf+541TNVVQGYs= =GZBM -----END PGP SIGNATURE----- --=-NUikdxkG3/o+Ijh0U4Tt--