From patchwork Mon Nov 20 16:34:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 24378 Received: (qmail 103730 invoked by alias); 20 Nov 2017 16:35:25 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 103655 invoked by uid 89); 20 Nov 2017 16:35:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KB_WAM_FROM_NAME_SINGLEWORD, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 20 Nov 2017 16:35:23 +0000 Received: from ESESSHC013.ericsson.se (Unknown_Domain [153.88.183.57]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id 27.0F.08439.744031A5; Mon, 20 Nov 2017 17:35:20 +0100 (CET) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.57) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 20 Nov 2017 17:35:18 +0100 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by AMSPR07MB310.eurprd07.prod.outlook.com (2a01:111:e400:802f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.2; Mon, 20 Nov 2017 16:35:15 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 11/19] Remove usages of find_inferior in select_event_lwp Date: Mon, 20 Nov 2017 11:34:35 -0500 Message-ID: <1511195683-2055-12-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1511195683-2055-1-git-send-email-simon.marchi@ericsson.com> References: <1511195683-2055-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: CY4PR03CA0075.namprd03.prod.outlook.com (2603:10b6:910:4d::16) To AMSPR07MB310.eurprd07.prod.outlook.com (2a01:111:e400:802f::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ad4b3d80-8c55-42f2-ac24-08d53034ae49 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258); SRVR:AMSPR07MB310; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 3:LoXG1ozzUG0mrRb4fXI7VhH3QmfnckbFpFZO7jXEarivg2K+7JMdO1OIJm8myraLiywToNln5ypp62Bj3GDTBucqCSNC2qsCuH4mF8mlL1NzQaWAXDw5KOwAz5T2UBrHxLQvemQ4FFExYNFKEciTK3dig0MznJgmXi0YHE8WdRX+SMWR+Fca+mDiNoHtsUMcH19e96mw1owf493nw/cwG/BWx4zfEepQrmD/df2mrRqocU02Wngd+47gZoFMVpxX; 25:r0XUItwIp9DczgTod+FTsLdHKBH5/jLfzWPplviAWY21Fy76sl1bncFy3pnkdQxmgMglpf4ZFuFdCu4bLz4J+gcBxDY7MuSrjGeKAFd10YnWgUFcO9Zz8EXrsNAYQBXCeYxPz+UZffai5N7MSl3ncmYCaiv1sjQiz0KOT7nc/B4gFJ8TK4/AVFU58X6jKTUqjTZp75ozeZ7HhwOoychpVFZv+0s7VjVNP8XDxab7fHQPl7PlEtUwHMT1hEkfnQjKuNSaCkkijx14OIr8ViNvfA+tKOpWEEtnWPg6871rHr8Ef9hoeXfMFGtbfzruegsQ38IvLXWZj6LlyUmi0C98wA==; 31:DT9mZ1ZAEBkDIALoe+AR8mADLsVUCVDNPRKwnllpBaL7mxlGyyQ+WmCD2aoZGgm3iuetcDPkGLF7RMPMwGZj+lTs9YTYyiUY0ye7Jwj/bRlo0pIKF0DE8O5e79R/OhytqDycI8KHAIcfP+QLKlcXkbSDVulYJEiFU3eNKR7WeEFdMrORaQQrjzc6Mgub/g7RAEQgB/EcTOKUEyme95CLvfm9wSeZ683s7FAxI1QVQC0= X-MS-TrafficTypeDiagnostic: AMSPR07MB310: X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 20:ahWocBnQyQbmPBy1GKfIcpkMJe/LSjWLR8o9yXjWmS/6+vCPfy6nplyYKWLjDnlT3BN5r6yOjdR/NMUf+7Rcw6Uk3/VD9Ci+I9GylWzx/Ysrh+Sd1h4dNE8tCiZs73nLJxA7GBlvtX6B78Dhf3QGX1moQWQUqY6YWEr7NDnf6t+UagrqlYURaRv1y5uTdM8x9nNvxKZWUbBfcU3GehRR2ACofmSnK3s8bTZ9+KeSIpvXtw5vOWVNCbwfcPPF6IqsSHy0yXqKXq8l4O1o/W0F8i2gPDmoJ/IsjeNNN+44CgRu3O32LLLdSSvV0DPT55+KWpx/adKbWkmYy/fWbhLdr6p22EL5EGGdRe+UIkQdrxWSqVxlCFbLbpR9tz8z3beLMD2B6xNOIeN7CUUBU/YFEYcr+A5aWJwLE1QohISGaSujf/rte8WLDYZuqze7JLGhFT3ZS+ufhGzPZdLq0aqiX0lXfGSo05U2g1u6gnQVBg0HFQLzSxmXnREXXMTPlbQT; 4:BaWTgsPCyWq3INO1NpdQXZgGYbuqnqN0w92xIALRYGnOBvo5gUvGAe6QbrDu0as6DKQ7LD0xrzblhHJjvsyvMew7GdoqEzw6UWC1pW7JU75QWVwQGvZTeaV6AP8v2DP/kObfiC+L6FiDQa6Tb8ssjw2T+VZ8LcZch+B4kH6+Xiab6TUJlpz8iivpaDP5KuIOB6U0MhQoMMlCXvYdOZMx7pPLllzFFuyrjC04T123dawsswsLi6HIQIVzCCK3OiTzBupfiQncL5PgL6Ip+2XJcrEHyI5SwikAC2cUUQtD88/BWLQh0AvI5QwAgPNDWJZl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(3231022)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123560025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AMSPR07MB310; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AMSPR07MB310; X-Forefront-PRVS: 04976078F0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(54534003)(3846002)(97736004)(66066001)(5003940100001)(33646002)(16526018)(50986999)(76176999)(6666003)(81156014)(305945005)(7736002)(81166006)(6512007)(5660300001)(316002)(6506006)(6486002)(16586007)(6916009)(2950100002)(101416001)(8676002)(2351001)(2906002)(105586002)(36756003)(47776003)(86362001)(50466002)(48376002)(50226002)(8936002)(106356001)(68736007)(2361001)(53936002)(478600001)(25786009)(6116002)(4326008)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB310; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AMSPR07MB310; 23:8X6ZH+NnUzigGdMQwUTjQ+ZBOM823uzIe23SWKdcdB?= =?us-ascii?Q?/HhGaqsXDcYM8erVB02wep3ZtmbHKqrWVRwNUIvUTuG8GnNprtEBCTukAzsl?= =?us-ascii?Q?B8HzvwnxrtuNdpzEf3nZlBP5NTJAbKTWFL6C2tCu999kZPQZ+4OIbmAYxewj?= =?us-ascii?Q?woybDKyqGGOhDGg3KZtsMQfTICjUvlDDRzWdYry0kGrv48GGAs6opN9TenQ/?= =?us-ascii?Q?zirwTn5ZnPdHdqdNW3hezKdpz4Z16QdZXQkQh5g55n0nLHYnWnqvhKeNrj/F?= =?us-ascii?Q?MpECQ6XCWcJ8VkGR3iJa6x2WesVJxezZ/HN4/lie3B44c1gxnLIhvKNqj/J+?= =?us-ascii?Q?SAT2XL3BlgwgmUx1NXDFEfKpTSq/zBrUiRK+xPkb2viKPGufZdFELDIG/i4h?= =?us-ascii?Q?ZKj2+5pQt+LU1GPQ0rWsNEkbuNbeiFX8aOoUJG4JrY012YRV0rxXmF3MJMeE?= =?us-ascii?Q?mDL71XE0PMzcAOBjiUB7vwF/lQ+xIQ0WzkUMCp3eP96khITKHtDgSdB4JgKo?= =?us-ascii?Q?h3+WRSCJl5+53Ycd1Y8pT6dcEHjd3io/IBy/CCdRY/gTylNeyPM6tko4S2tZ?= =?us-ascii?Q?V5Mr5uRx6T+zzoJ7WJ+seKbWhYe2cuMKXKAbMmLP9Ph5zCHzRxkW4L4Hf2QG?= =?us-ascii?Q?KZxd2KrAqQk41oc12RTyr7lSVDm7iRpbKflOcrp0wY+YW4jrZK1YWZPTrmeV?= =?us-ascii?Q?a7Tv1d3XLDCYzWy432Vo423ijtvv570xDitKPiNWArHER9QcOmM59FLJWIMl?= =?us-ascii?Q?2Lu1YlNT2HqNIIUe0oTzedHZ2N9TaqTOddzoT7ElLNXOmL09ClMJ2wEWG1QO?= =?us-ascii?Q?LAokP3pUFfpVCaKPCRNCGmLnx+KExg9JO5QGE2FRQ2wgS4s3fCgcbhoNsG2C?= =?us-ascii?Q?S8dGUUu5P1c02kxhivQaYycFtfNhWAWl/sJt6uTnP4h10kD4gKYHkR3kVIoi?= =?us-ascii?Q?PxFLskfqif5dRcx6Q+kYyrRcUK61eZ71X0SLtrUYP1LymNZg8fwdH5IWXmrY?= =?us-ascii?Q?JMzIajCmd6SzuAhVDTg2g/bLhlIIiCif3NwBGpoTOODl920YZ8PdzXy9jf5X?= =?us-ascii?Q?n70SNTb/laONmQML6sN3wGbpHzPwMHuEnnqU2YY3KtU8p5MOTYM46e6FBXy9?= =?us-ascii?Q?DrZGrh1s0Hluvg73HocEB2pcPKrM20?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 6:di3MRII3lMHk2kLLd83ZeiUNLRfna814dZCIB7NdVNHabpDtrTlowya9iZtNxThRghTlTCr8/ye9jScRIBWu1zwegcgpeQsC7galWkOFS5o9nypSg+0AIfpn5vKiPytMwETGUM3pEZ9mk2aMbL7nYOoQJ+MntxnsZYs7jRkEqkDLqte4GPbiB3sFt4GmJKEVwralQT+BLSIY5lGUoyk4XdG9WEI6LWGhUjaNo28OoINveLH4qWxga0SdgWpgNVXNJ2IY86wootHyRLbbfU5nxcxHFlNlhciSMrD8Gyv88gK7Oqul++j/QEzAk6ll/OZu186CMYGcAH1pjtuwgfitAa448EmpmF8ddUVhUYe1lPs=; 5:xGOVml2Cw0/zdTP1AUxjg8NRMB6DZrff0zigQz8IXEYV/8m3cJh0XZkQca/Bbui8YWH7H6nghTaM5GBGCfQzAwLkmtXegdCfWenIbTtYO6KUvZ8fzVEKFAbidASI8lHRUUEuDe9f2xBbGqyluZUSj6/+Ds1T50GzCzojT1UDOuQ=; 24:6gBh2p/scgURal1JwtYTJisplUEUodMTXBmYRlA4A0JDOlksskGepNpTVQdIQzis0vL8ghfvE7Mb9z71qNz9ebpYkeW9zBeZu1WVaTANVew=; 7:4dN+mJ2lAkZv6whBNMY1g4/VAmNzjP+4qr9vxeioZJDlYFsB5zP4KrZf+sFQc8XIH6FcrtBk2tAGqyzb7FpPkFTnsfNIOvQdIsNKDVKp0wlbAT6Spi9idTHGZxemYeFYlM2uRZ4O0iNstsbSxhLILSH62aiSPdlIfwXW0X3ZjaYWnACfJVDAFTnTbpwUUDDs2llRJl4DM7LnU0Wsq5YHxEEtyyuiRyA3TO84rUuwazrqrifZPJXWifY+znXLlvTk SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2017 16:35:15.5164 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad4b3d80-8c55-42f2-ac24-08d53034ae49 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB310 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes From: Simon Marchi Replace with find_thread/for_each_thread. I inlined the callbacks, because they are relatively simple. gdb/gdbserver/ChangeLog: * linux-low.c (select_singlestep_lwp_callback): Remove. (count_events_callback): Remove. (select_event_lwp_callback): Remove. (select_event_lwp): Use find_thread/for_each_thread. --- gdb/gdbserver/linux-low.c | 93 ++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 62 deletions(-) diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 85d5572..bffbc53 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -2817,64 +2817,11 @@ linux_wait_for_event (ptid_t ptid, int *wstatp, int options) return linux_wait_for_event_filtered (ptid, ptid, wstatp, options); } -/* Count the LWP's that have had events. */ - -static int -count_events_callback (thread_info *thread, void *data) -{ - struct lwp_info *lp = get_thread_lwp (thread); - int *count = (int *) data; - - gdb_assert (count != NULL); - - /* Count only resumed LWPs that have an event pending. */ - if (thread->last_status.kind == TARGET_WAITKIND_IGNORE - && lp->status_pending_p) - (*count)++; - - return 0; -} - -/* Select the LWP (if any) that is currently being single-stepped. */ - -static int -select_singlestep_lwp_callback (thread_info *thread, void *data) -{ - struct lwp_info *lp = get_thread_lwp (thread); - - if (thread->last_status.kind == TARGET_WAITKIND_IGNORE - && thread->last_resume_kind == resume_step - && lp->status_pending_p) - return 1; - else - return 0; -} - -/* Select the Nth LWP that has had an event. */ - -static int -select_event_lwp_callback (thread_info *thread, void *data) -{ - struct lwp_info *lp = get_thread_lwp (thread); - int *selector = (int *) data; - - gdb_assert (selector != NULL); - - /* Select only resumed LWPs that have an event pending. */ - if (thread->last_status.kind == TARGET_WAITKIND_IGNORE - && lp->status_pending_p) - if ((*selector)-- == 0) - return 1; - - return 0; -} - /* Select one LWP out of those that have events pending. */ static void select_event_lwp (struct lwp_info **orig_lp) { - int num_events = 0; int random_selector; struct thread_info *event_thread = NULL; @@ -2888,10 +2835,15 @@ select_event_lwp (struct lwp_info **orig_lp) would report it to the user as a random signal. */ if (!non_stop) { - event_thread - = (struct thread_info *) find_inferior (&all_threads, - select_singlestep_lwp_callback, - NULL); + event_thread = find_thread ([] (thread_info *thread) + { + lwp_info *lp = get_thread_lwp (thread); + + return (thread->last_status.kind == TARGET_WAITKIND_IGNORE + && thread->last_resume_kind == resume_step + && lp->status_pending_p); + }); + if (event_thread != NULL) { if (debug_threads) @@ -2905,7 +2857,16 @@ select_event_lwp (struct lwp_info **orig_lp) which have had events. */ /* First see how many events we have. */ - find_inferior (&all_threads, count_events_callback, &num_events); + int num_events = 0; + for_each_thread ([&] (thread_info *thread) + { + lwp_info *lp = get_thread_lwp (thread); + + /* Count only resumed LWPs that have an event pending. */ + if (thread->last_status.kind == TARGET_WAITKIND_IGNORE + && lp->status_pending_p) + num_events++; + }); gdb_assert (num_events > 0); /* Now randomly pick a LWP out of those that have had @@ -2917,10 +2878,18 @@ select_event_lwp (struct lwp_info **orig_lp) debug_printf ("SEL: Found %d SIGTRAP events, selecting #%d\n", num_events, random_selector); - event_thread - = (struct thread_info *) find_inferior (&all_threads, - select_event_lwp_callback, - &random_selector); + event_thread = find_thread ([&] (thread_info *thread) + { + lwp_info *lp = get_thread_lwp (thread); + + /* Select only resumed LWPs that have an event pending. */ + if (thread->last_status.kind == TARGET_WAITKIND_IGNORE + && lp->status_pending_p) + if (random_selector-- == 0) + return true; + + return false; + }); } if (event_thread != NULL)