From patchwork Fri Nov 17 18:33:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 24322 Received: (qmail 19661 invoked by alias); 17 Nov 2017 18:34:04 -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 19640 invoked by uid 89); 17 Nov 2017 18:34:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 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; Fri, 17 Nov 2017 18:34:02 +0000 Received: from ESESSHC021.ericsson.se (Unknown_Domain [153.88.183.81]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id 7B.EF.08439.59B2F0A5; Fri, 17 Nov 2017 19:33:57 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.81) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 17 Nov 2017 19:33:57 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.2; Fri, 17 Nov 2017 18:33:55 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 05/11] Remove usage of find_inferior in iterate_over_lwps Date: Fri, 17 Nov 2017 13:33:27 -0500 Message-ID: <1510943613-18598-6-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1510943613-18598-1-git-send-email-simon.marchi@ericsson.com> References: <1510943613-18598-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: BN6PR1101CA0001.namprd11.prod.outlook.com (2603:10b6:405:4a::11) To DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) X-MS-Office365-Filtering-Correlation-Id: 5dabc77f-9f84-4b60-5c12-08d52de9c29a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603199); SRVR:DBXPR07MB317; X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 3:DmK0aFrc1Zu4Ouyd1sEWt67TyZKriQDe+RgVBMtoBrvaq0QcrYP7dvotRWzWJEMhyRD6yAohf4jZf2o/+FsEVptonssyiIGOXKCWCfGZo4uPrsZ6spBtHkYs1S2g//9XnI4dcA5bToTrJ4rXTQwZYnmbiXIt886tkfudHx2oS4Qo4e3+rnl8/6JgipDypNrB4ci24iao1s4CIzmfza5TDcC4q/KYUbxmCM2WSWPYIrIn8v/8cvw2XELf4lNpmEQ+; 25:N8JUAd74fJKji6X27YjCqz4s2WnMlDymUkmALiu4gSGgkf8ZPMYel+2bCaKCyCRf33mlOoaejgMr4C3WJa1KHl+bwQ++GjpgnsEoizfSC/T9Mr/pp/stQlrDDeGlgx6LttiL5RzdBFNPgJas2jaImhWpuslbtNArBh9RiFbRPRdMUTwP+pMzFcoZPWr19rf55POCK3WYSbGR+voxd8A8/sGSxd6Z/Mb8lrA+sZqakkIkX1crqIYOqOZ31BVIe/9jjnKtJ/hlZzVXK1qXY40CuiwjorTVozWt6caTiuiV1qqM1AoFPYckNIV+ZKxSOsT44aVS4PFEemRoB2+qy2XWzA==; 31:T+mtsnoVMbkW41rYzxiZmlYh3givMS2UfH2iXrUDSRQyo2mydJOU0hELmXD9SQFG6Mu8vjpQk01UfvDju47vdH4RKPbZNgCbv3fpJpvL1a9lFw9I2UhcpxrmwBRsYo4+AKM5MHbEt16i5Y8pSLbP9+TizKKkcpzppZ0/CeFS3TlnSPMC/LqaQ939UrdZGwfr5Wat6yK99hAua08mXFFKcY38TC3jW7t99AW7NzjKepc= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DBXPR07MB317: X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 20:VyT2tBTPXPa8IXZ1HjRokLfyzJsCt5qL7//VlqLtkL+MHZ/7s/jUtKbicjL/x1mdpAoA/wMgd8mybcNMvgIlSS+w51xUMd+oJHTDSYgtWzb2gwD1O8ikOe2CYRwdfdc7PEwgIpf05B8mmf3/Fy+1RTtvf3ofj2K+9n56h4+r+ec17w/YuOryS94YWpWbs5SP6IvESHm38tq6J8Xcii4owQQTHdIQdH4zJ8doUsMjRv+6cc/cF47yX8yQJuLNcFjHuDuItQ9IKPzc95c1BzJ9sEHh8CqzFFlTG+UR59A1+Pw3Xbnac9nJdeGXF/FdHtP0xEkHxQJw7OO4JLVuxloZakPnjeaPQFQB5nRQBn2L+cae7sw+AtyHy12vvhg8Wwbzq6FSIAGXOqm1j6bIvGJFB92elgzZ1/t1VM6it3uuMIr5ODsd3Ng90IZZMmXdDY5F0VGV7Ke5CSrbBMumbWQ8GT39IJJnRSZIQOAX4xqEyNGJ8Ts9T1OSbhqtcDnEZXn2; 4:ThPlieFdmaTqbKK4S7jt/3lSu9RSwCIlnY9z3ZWTvJXgrel51vDoV8C3GTiUYDnkXWcJPHzyt7h0sm3bKS4fyo4DhcdOl2TG9KxRYa56TBoZrhzf0st97h51b+R2TXZKIjVrq0ms5AQ2CxJC6jKw2BsJFzjuE+PsgXYJlRV8DxEQK6MPItNcyrytnNKggw8BE4nm8ZrcxaYSHOvoPs2bYPP+OAFYepwVuVCwXQZJ2mhshU7SwN5yVLMDQwPjAylq3PigaCF605i7FEPsy4XAfYYWpLqyW8S7ZNzB2/tvYRV6KmDau565mNnMeQJj6XbW 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)(10201501046)(3002001)(3231022)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DBXPR07MB317; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DBXPR07MB317; X-Forefront-PRVS: 049486C505 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(39860400002)(376002)(54534003)(199003)(189002)(86362001)(16526018)(2950100002)(81166006)(6916009)(81156014)(2906002)(33646002)(316002)(106356001)(47776003)(8936002)(6486002)(8676002)(97736004)(6666003)(4326008)(16586007)(6506006)(107886003)(53936002)(478600001)(189998001)(6116002)(3846002)(68736007)(50986999)(76176999)(36756003)(105586002)(5660300001)(101416001)(48376002)(2361001)(50226002)(66066001)(6512007)(7736002)(50466002)(2351001)(5003940100001)(25786009)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:DBXPR07MB317; 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) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DBXPR07MB317; 23:cXwo7FU0KmOv3TJmJox+S05wZ9FMFk2U2GbdQ98ZmN?= =?us-ascii?Q?9q7QnXbVn2GqJkconOAYSC6kyqxZKcVttDCipLNUUx8iLyxFGIJNU/i5xPLr?= =?us-ascii?Q?4abDOO0DGyd0bga36uemAIF391NmbVca2Ttz6nHSJUhtHL6nV5zh9xiLTRyJ?= =?us-ascii?Q?ofU6aILQMSY9O4C98/vMc2GKsxWJ7Sl3GVd6UHAknnw7mNkDVDK7keNaJUQK?= =?us-ascii?Q?IoNaNoh81xH4Nrj3+u76237oYMLijuL8OBW7jpi1CK3PLd1cEAgsk6gvBGbr?= =?us-ascii?Q?Wpx/rBuLxQQ10mD3of49/Sv5Oq6J44aMZmkrEToi3xX8Uk0aLsKZy466cReT?= =?us-ascii?Q?5/0EwteoZAxI19jXrVkMcoYQTXgZyYO3inFdH8DbwEq9+UI5YnQ0/3Ad2pXl?= =?us-ascii?Q?D890ThofwzAsOFim2tKYvolMKqwjoohpwfD3nxrpQjY4IMJz5CseLKdu3tQh?= =?us-ascii?Q?h8zXHnAgdSTabc2ptjI2pjIPO5qNoHmc4LsIop5HwhU2shgaFESgsdht9GBP?= =?us-ascii?Q?eVMyIr0YaOgg2DZCE5vaPa0TKRZt9tVtgg6CkrT5zKhbixgpa7RXC1gGnb9X?= =?us-ascii?Q?YDavhjPlBnLVh2LZErDuaRLEnhsO0H+2/mJztvwX53/Yt9HZKXXNpvOPWNXl?= =?us-ascii?Q?E3fDWokYSSiLVUFR3jq5To+0U/gAW9jxeF/wtJcNS2m3YVlW1X9LchG0aWVp?= =?us-ascii?Q?K552+SflcJbFo33v1eGbEZT6ZR5UM5yieaCYcaH1uBCXnT3FrG/gHd3yqI+D?= =?us-ascii?Q?Ax/P93uAHpV7HPuaX0VE+3XCW61APKepTV1QPLPnM1TjFJ06pQnJ/3GqeX2v?= =?us-ascii?Q?i6LXPeRLxfDEUwJZmTDWChYApT17Iy6bFht9+EA1uaa+w15NLfmM9HZYK0mX?= =?us-ascii?Q?Clmz1KgnM5RRVbnPOYLX+Kw3W035H4WFoaFgz8YaV2y+kUazdnws/jjCGBm7?= =?us-ascii?Q?i4Tlp4alXdTEiBENUrYRhcDHGNJZGWtZ6Pwir6ekqAxCy6reFBYr/X/W8MX5?= =?us-ascii?Q?nfrLtm0F5+xHgUwoIs5ChhXWACfZfdavFZNo0onWCCQJa4Oc9XXkjedL8XkZ?= =?us-ascii?Q?D6aLbwrVZ8ugBMHjXnwv9z18TNYLGiZCVNN/b5LUUN9c5I/syQ1IMZdNo0oJ?= =?us-ascii?Q?LQNqJ9lvyglxkIEGnbxlDFpi32jgTjaD99afQkumCJu56nAdmUyA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 6:uak2LCwmNSymqUHTwDQuwyHA4CLtF5AZk9xtiVv5JM2xGckV/KoKLhopfiLNpQbk/TPRsLxkCrIVJopEjYtXZouAXZxHb+zbr3D07hM6jXyNio3F29VFqCerQkeEeO9FnwaP3PTE1GEvX2vVq26k/8HuXSkQlKT/XdhwoyV1PWmjEcYIU+RATp/W3PF96h6hD3TjleWFWF8bEVsB6FxWZ4xhacRQtDn3xDwP7ZWWdAzj9YyrTFKdFxcK8vqV/OjPa64Qk5tjjRG2rK9PhLSJQN6rWCnn8EXfB6ZlurhPpVTt3h4/CZyekpiEkymLxkxRFeAYQuDmvwamEpu6ubwLogxIg/nCoM0oxOuXxv7xzNA=; 5:SUZNJNfDTuza/8nmmRjufi42janOhR77g/obhiPHy4nmAMKtGnPmqLvpZ9qpUkVm1zcdaZLAlNQv0G+UrNkKJTx0FC8CpZHpLEdyuCc/JEo3dmUDEOTlQwQYqMICbZOa54bJzO0zUCK6rBCaZzA6Hoq2tTEmYZMBmIzvHiM/je4=; 24:/tilVAcF0NXBfj5FKz1BPkynhWCq2ZLdAw+zAM+ekeOCmo9JQYHutDHbWhW4EnAm/ttghIMoYCoY9jmYVxUScdrrjLdVte/l8y11fKQ8Jac=; 7:kn3gBXkqqj7E3VM/RdEno6cQ5Jh5Ye7sUn7CAYf6K9Ipg010tNZ49dNZWC/ge2+15iawdj0Kj32eecCLpq7yY4s3sgvuB1z9NOV8f4PTFfJwyCKnmagqJYtKiAvrGQhrYi6PwWje6CCrUq29kZuxgXKtDNUMWzIEFq4oi1OVbgY+0NAt4c8ZMHYseR7KfPe0+BGFa4lrWRvFdzFksLvp7f+wxDfBnGqIlh704jrpD4l4CYUsAzc/81XPcyia2se5 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2017 18:33:55.3787 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5dabc77f-9f84-4b60-5c12-08d52de9c29a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR07MB317 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes Replace find_inferior with find_thread. Since it may be useful in the future, I added another overload to find_thread which filters based on a ptid (using ptid_t::matches), so now iterate_over_lwps doesn't have to do the filtering itself. iterate_over_lwps_filter is removed and inlined into iterate_over_lwps. gdb/gdbserver/ChangeLog: * gdbthread.h (find_thread): Add overload with ptid_t filter. * linux-low.c (struct iterate_over_lwps_args): Remove. (iterate_over_lwps_filter): Remove. (iterate_over_lwps): Use find_thread. --- gdb/gdbserver/gdbthread.h | 12 ++++++++++++ gdb/gdbserver/linux-low.c | 45 ++++++--------------------------------------- 2 files changed, 18 insertions(+), 39 deletions(-) diff --git a/gdb/gdbserver/gdbthread.h b/gdb/gdbserver/gdbthread.h index b82d5b0..df1e477 100644 --- a/gdb/gdbserver/gdbthread.h +++ b/gdb/gdbserver/gdbthread.h @@ -123,6 +123,18 @@ find_thread (int pid, Func func) }); } +/* Find the first thread that matches FILTER for which FUNC returns true. + Return NULL if no thread satisfying these conditions is found. */ + +template +static thread_info * +find_thread (ptid_t filter, Func func) +{ + return find_thread ([&] (thread_info *thread) { + return thread->id.matches (filter) && func (thread); + }); +} + /* Invoke FUNC for each thread. */ template diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 628135a..fd8e45e 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -1876,42 +1876,6 @@ num_lwps (int pid) return count; } -/* The arguments passed to iterate_over_lwps. */ - -struct iterate_over_lwps_args -{ - /* The FILTER argument passed to iterate_over_lwps. */ - ptid_t filter; - - /* The CALLBACK argument passed to iterate_over_lwps. */ - iterate_over_lwps_ftype *callback; - - /* The DATA argument passed to iterate_over_lwps. */ - void *data; -}; - -/* Callback for find_inferior used by iterate_over_lwps to filter - calls to the callback supplied to that function. Returning a - nonzero value causes find_inferiors to stop iterating and return - the current inferior_list_entry. Returning zero indicates that - find_inferiors should continue iterating. */ - -static int -iterate_over_lwps_filter (thread_info *thread, void *args_p) -{ - struct iterate_over_lwps_args *args - = (struct iterate_over_lwps_args *) args_p; - - if (thread->id.matches (args->filter)) - { - struct lwp_info *lwp = get_thread_lwp (thread); - - return (*args->callback) (lwp, args->data); - } - - return 0; -} - /* See nat/linux-nat.h. */ struct lwp_info * @@ -1919,10 +1883,13 @@ iterate_over_lwps (ptid_t filter, iterate_over_lwps_ftype callback, void *data) { - struct iterate_over_lwps_args args = {filter, callback, data}; + thread_info *thread = find_thread (filter, [&] (thread_info *thread) + { + lwp_info *lwp = get_thread_lwp (thread); + + return callback (lwp, data); + }); - thread_info *thread = find_inferior (&all_threads, iterate_over_lwps_filter, - &args); if (thread == NULL) return NULL;