From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by sourceware.org (Postfix) with ESMTPS id 41589385DC04 for ; Wed, 1 Apr 2020 21:40:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 41589385DC04 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gmx.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=n54@gmx.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1585777222; bh=N7Hu0UXrE9lRr3Qu8ej8GNaOn+l/vhefoLLjL3P6uRw=; h=X-UI-Sender-Class:To:Cc:References:From:Subject:Date:In-Reply-To; b=SB2/H4UoiMuX3+yUfYGcxnyqkLLL04/aUnVegA8M5NkMrIDb+a4/86IaUaZ/8CAh5 dqu5PZMuhxPD+B7CDBnpx0lz8/vI0WdGIxb/3pd9RoEcPpHO922p6b9KXQKklDxGA3 f3AU0Fh8d1kvECCIarjPtiZNph55gfm9SiKubI9E= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.0.241] ([89.79.191.25]) by mail.gmx.com (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MeCtZ-1ijsRd1XT5-00bH4N; Wed, 01 Apr 2020 23:40:22 +0200 To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20200326025314.2392-1-n54@gmx.com> <87lfnfym0q.fsf@tromey.com> From: Kamil Rytarowski Autocrypt: addr=n54@gmx.com; prefer-encrypt=mutual; keydata= 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 4XSbcg== Subject: Re: [PATCH] Implement basic threading support in the NetBSD target Message-ID: <28ce36b9-5ff6-972e-6340-8da41f25a212@gmx.com> Date: Wed, 1 Apr 2020 23:39:14 +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: <87lfnfym0q.fsf@tromey.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:X0i8qAOKMhifl0PR+nuz9e4pSmzrGRimqM0r7wy5MUqmIVwlVWI NHE6eKf1UtYOAdRSO/+pObCBw+z/RYds60w1zyMiLSDwYBQ4BiQm5elc37830mkUs9Si/Yx L350YrrqmHnH3TFFribgaua1FNwr/liWv5Qondtre0k5Uwqo8E8nNfw1kJOrkMH1EcDDHZe RzTlpi6wEfhQ6gdjVQcrQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:grnAjw1fjRE=:2F9fLH5qEmCXzYxuhUTv42 dxMUxQEitVJMbfP8OqEIa64T0G13TIWpnb3+kQMBJp1kEktHGPu7QVUG+vJYmtGeU2PEOCQLM pXnnOervhCGmCpKwBCyJ8uS63cGfetoNIFKA8wPBoVhSIV/02MOjNqbYDRdC1ra7qadjimwZ7 Ek1AF6yUGjmaFeuZsuhOQMVD/bINUQkTEXrG/D/I2Rjaqr+kYceHmXa6kFpoTdd1Q0EgXyhmg XcFJMRN5JSRP8gO2utJ+oz0Ob9DFoeoH1Mnmqc9qCw9GM3CjVNcbcc3jacH6e9k7fTJsH4uf0 A/ct0N6abLciBfWfDOTNoe9/k6V9Fu0f0Ds1azrfabc/SA9JYV62uSNLd/agNAZVcUtlHT+Fr lLTvHfQQZiGaGgQV/mDZoatDFNPwOHJ/8/PuVbb+faxwc7oM9XI79K4ngVJL07WXPzkgjIJ/o tuRThKFMePyl054exX3e5ZH+Sg2iAkU5Bc375fxagarGsI1z19DkMAA0nROMPa7Q2t9Pc/tBq j5gxCJLwhGFoc4X+a3vtBZGcyhkcpl8Ug8pYuTfxh6D2Se+nP9ZeJRslg9dPIg/01JKmGB84a lbTcWmkWPpuFUnOqvmJl6/CDZlSdFEmkkr5PtjewEWPK3LyQx3gRxsisAMlxtO1r3NJTet3iA Vqux2nHJG6jDahN3DC5218qorr/5xUXH5GazaCe4DNbH/IxOa+tjafT+s7u+vgQwjR/4r+rkV 29BEjCX59dDpG5Mhr7dj6v6MCKONpsqU+VXYdcBXYH+ajtpOQvlPwEuaBMS/X0248elbjV5vl ofC3RnVjhDH/BqcLOPbliwfUd9+wDlmeO+fov9E0o3EClzOTGtLGYsWhlrjDGa+/MY8v8grKf lr2YQ5BizX0tX7ouH2MsOpgMJfi+RQEVtVYJS+v9pVg+lc+TSt4CBM0pjWK2db947IyoJ7h9D AkMlyONTeMzwhQMLPpemrH1L/yeax/z1QbbPYmuqC6DN2hmQxl5BtNpJn6/7WuozNjRxzKq1O 3cugVdWFCX63OQxQES+YyUHtwuV8YOABw81Tx0niUrrXI4d404liUnaUPra00rXHXlL5dVrnM oq0SvX7sfpaY13bT3/hRYZBFtp9t/7wq45mLDghwdA42mWoj6H+4X2YbZLSrlQCOCKdXNE527 ggKa41TpqznSRkIVabm5bSZ+7HY21cCK9l1KwgX4l9T/lH9e0A7mZChjVni99xMpaIaVc= X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no 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: Wed, 01 Apr 2020 21:40:38 -0000 On 01.04.2020 22:43, Tom Tromey wrote: >>>>>> "Kamil" =3D=3D Kamil Rytarowski writes: > > Kamil> Use sysctl(3) as the portable interface to prompt NetBSD threads = on > Kamil> all supported NetBSD versions. In future newer versions could swi= tch > Kamil> to PT_LWPSTATUS ptrace(2) API that will be supported on NetBSD 10= .0 > Kamil> and newer. > > Thank you for the patch. > > Kamil> +static void > Kamil> +nbsd_thread_lister (const pid_t pid, > Kamil> + std::function callback) > > Perhaps a const reference here would be better. > Or maybe gdb::function_view, I'm not sure. > I've switched to gdb::function_view. > Kamil> + /* Return true if the specified thread is alive. */ > Kamil> + auto lwp_alive =3D > Kamil> + [&l]() > Kamil> + { > Kamil> + switch (kl->l_stat) > Kamil> + { > Kamil> + case LSSLEEP: > Kamil> + case LSRUN: > Kamil> + case LSONPROC: > Kamil> + case LSSTOP: > Kamil> + case LSSUSPENDED: > Kamil> + return true; > Kamil> + default: > Kamil> + return false; > Kamil> + } > Kamil> + }; > Kamil> + > Kamil> + /* Ignore embryonic or demised threads. */ > Kamil> + if (!lwp_alive (l)) > Kamil> + continue; > > I don't think a lambda is needed here. > I like lambda here as it matches the internals of the kernel behavior here. Normally, I would add a local lwp_alive() helper function, but as it is not needed anywhere else, I added it as a local inline lambda function. Using lambda a little bit simplifies the code as I can avoid "break" that is nested inside for() and switch(). I could rewrite the code, but in the current form it nicer reflects the NetBSD kernel. PT_LWPSTATUS/PT_LWPNEXT would have implied lwp_alive(). > Kamil> +bool > Kamil> +nbsd_nat_target::thread_alive (ptid_t ptid) > Kamil> +{ > Kamil> + pid_t pid =3D ptid.pid (); > Kamil> + int lwp =3D ptid.lwp (); > Kamil> + bool found =3D false; > Kamil> + > Kamil> + auto fn =3D > Kamil> + [&lwp, &found] (const struct kinfo_lwp *kl) > Kamil> + { > Kamil> + if (kl->l_lid =3D=3D lwp) > Kamil> + { > Kamil> + found =3D true; > Kamil> + return true; > Kamil> + } > Kamil> + return false; > Kamil> + }; > Kamil> + > Kamil> + nbsd_thread_lister (pid, fn); > Kamil> + > Kamil> + return found; > > A classic pattern in gdb is to have one of these iteration functions > (here, nbsd_thread_lister) return bool and have it return true if any > callback returns true, and false otherwise. > > That would eliminate this "found" variable. > Done. > Kamil> +const char * > Kamil> +nbsd_nat_target::thread_name (struct thread_info *thr) > Kamil> +{ > Kamil> + static char buf[KI_LNAMELEN] =3D {}; > ... > Kamil> + return buf; > > This should return NULL if no name was found. > The above bool return would make this easy as well. > Done. > Kamil> + fprintf_unfiltered (gdb_stdlog, "NLWP: pid=3D%d lwp=3D%d\n= ", pid, kl->l_lid); > > This line should be removed. > It was fixed in v2. > Tom > Please review: [PATCH v4] Implement basic threading support in the NetBSD target