From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200]) by sourceware.org (Postfix) with ESMTPS id 06F533851C25 for ; Mon, 7 Sep 2020 15:02:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 06F533851C25 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=netbsd.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kamil@netbsd.org Received: from [IPv6:::1] (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 6EA4684D35; Mon, 7 Sep 2020 15:02:40 +0000 (UTC) Subject: Re: [PATCH v2 01/10] Add handle_eintr to wrap EINTR handling in syscalls To: Simon Marchi , gdb-patches@sourceware.org Cc: tom@tromey.com References: <20200904002905.13616-1-n54@gmx.com> <20200904002905.13616-2-n54@gmx.com> From: Kamil Rytarowski Autocrypt: addr=kamil@netbsd.org; keydata= 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 Message-ID: Date: Mon, 7 Sep 2020 16:59:27 +0200 User-Agent: Mozilla/5.0 (X11; NetBSD amd64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="u0zoAwTpVyxJU69JboNOfcDDc3qNV12MC" X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Sep 2020 15:02:47 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --u0zoAwTpVyxJU69JboNOfcDDc3qNV12MC Content-Type: multipart/mixed; boundary="JEQmFMxpAcKTQre1LWvAc5tyr8wUWFgXz"; protected-headers="v1" From: Kamil Rytarowski To: Simon Marchi , gdb-patches@sourceware.org Cc: tom@tromey.com Message-ID: Subject: Re: [PATCH v2 01/10] Add handle_eintr to wrap EINTR handling in syscalls References: <20200904002905.13616-1-n54@gmx.com> <20200904002905.13616-2-n54@gmx.com> In-Reply-To: --JEQmFMxpAcKTQre1LWvAc5tyr8wUWFgXz Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 07.09.2020 16:06, Simon Marchi wrote: > On 2020-09-03 8:28 p.m., Kamil Rytarowski wrote: >> gdbsupport/ChangeLog: >> >> * eintr.h: New file. >> --- >> gdbsupport/ChangeLog | 4 ++++ >> gdbsupport/eintr.h | 41 +++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 45 insertions(+) >> create mode 100644 gdbsupport/eintr.h >> >> diff --git a/gdbsupport/ChangeLog b/gdbsupport/ChangeLog >> index a1960537384..d26000e36ac 100644 >> --- a/gdbsupport/ChangeLog >> +++ b/gdbsupport/ChangeLog >> @@ -1,3 +1,7 @@ >> +2020-09-04 Kamil Rytarowski >> + >> + * eintr.h: New file. >> + >> 2020-08-13 Simon Marchi >> >> * selftest.h (run_tests): Change parameter to array_view. >> diff --git a/gdbsupport/eintr.h b/gdbsupport/eintr.h >> new file mode 100644 >> index 00000000000..74b7038da60 >> --- /dev/null >> +++ b/gdbsupport/eintr.h >> @@ -0,0 +1,41 @@ >> +/* Utility for handling interrupted syscalls by signals. >> + >> + Copyright (C) 2020 Free Software Foundation, Inc. >> + >> + This file is part of GDB. >> + >> + This program is free software; you can redistribute it and/or modi= fy >> + it under the terms of the GNU General Public License as published = by >> + the Free Software Foundation; either version 3 of the License, or >> + (at your option) any later version. >> + >> + This program is distributed in the hope that it will be useful, >> + but WITHOUT ANY WARRANTY; without even the implied warranty of >> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + GNU General Public License for more details. >> + >> + You should have received a copy of the GNU General Public License >> + along with this program. If not, see . */ >> + >> +#ifndef GDBSUPPORT_EINTR_H >> +#define GDBSUPPORT_EINTR_H >> + >> +#include >> + >> +namespace gdb >> +{ >> +template >> +inline Ret handle_eintr (const Ret &R, const Fun &F, const Args &... = A) >> +{ >> + Ret ret; >> + do >> + { >> + errno =3D 0; >> + ret =3D F (A...); >> + } >> + while (ret =3D=3D R && errno =3D=3D EINTR); >> + return ret; >> +} >> +} >=20 > Can you document this function a little bit, including a usage example?= I tried > to apply it in gdb/linux-nat.c, function async_file_mark, but I'm not s= ure I'm > doing it correctly. In particular, what should I pass as the `R` param= eter? Does > that make sense? >=20 I'm going to add an example and some documentation. > gdb::handle_eintr (-1, ::write, linux_nat_event_pipe[1], "+", 1); >=20 gdb::handle_eintr (-1, ::write, linux_nat_event_pipe[1], "+", 1)= ; > Simon >=20 --JEQmFMxpAcKTQre1LWvAc5tyr8wUWFgXz-- --u0zoAwTpVyxJU69JboNOfcDDc3qNV12MC Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEELaxVpweEzw+lMDwuS7MI6bAudmwFAl9WSucACgkQS7MI6bAu dmzEYg//XXbtwCXjeHpuQBWbVwcHRYfYl6vSzcmfsBMn6OAz6xvI1p6UnhW5bo8N GR3Dpx++C64LdcGBRYcNDOwJpfnqTtVLbuSMD7dyjkfo1dD1seUlPbqLm3h9HsSq +oMN3eahZ7hmczWgY2Jq3QqSRlM8lN0opqDTf0X6T3c0h+W+seeNtNclfTM4CEuj X5tepMP4NZ2YNc0kS0R7CXXTNR0xTdP643yrWdhNv+yMUGKCW+BDpHeE+Lw2X99e Gw+PjlkMuIzZi9iGq0Z7IN7tJCelHmySknFsSp/BsO/Xz/r1vpyjpb6WNG2gyL4S k8bEn6m5+PuvJCszK+zd0S/YzwsBdiPlwa9qsBeaKErHyYBxwlSdUKwHST5XyiAT oE9iMrFzZYMSyb+cVA9lxnEaTVBCSHvgJlIeusf1uXGMBnJHtXQVLMM0cDjIcISb DZ35cuKRhwatlfQcdR1OGnfAji9tEsoTC0m3R4N4HYpPrucoo68G/Hfb+Sh4vJdp XEQVYjl9M/fSGO/4OgQ4FcAo0Ldi1bB9Xr1NwH0ZSxhBUtRanIhJLE4g/HTQQ7wD mCc3ObuS9Ifd4b7Bye746GtjH0xwRmNf5TyuXGgIGCPWFjPrRFpjmmOQOvRmSVZA ww57QbyBDMg9o4rKLNkuTpX5a698XvXnIT/klBnMqOZb37ZnW/0= =cUDa -----END PGP SIGNATURE----- --u0zoAwTpVyxJU69JboNOfcDDc3qNV12MC--