From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20036 invoked by alias); 17 Nov 2017 18:34:06 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 20001 invoked by uid 89); 17 Nov 2017 18:34:06 -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=ppid 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:04 +0000 Received: from ESESSHC005.ericsson.se (Unknown_Domain [153.88.183.33]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id 4C.EF.08439.79B2F0A5; Fri, 17 Nov 2017 19:33:59 +0100 (CET) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.33) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 17 Nov 2017 19:33:59 +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:57 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 08/11] Remove usage of find_inferior when calling linux_set_resume_request Date: Fri, 17 Nov 2017 18:34:00 -0000 Message-ID: <1510943613-18598-9-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 Content-Type: text/plain 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: 6db1caec-3138-49c2-7164-08d52de9c415 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:bTHHWJgtzbkwELPOSOj1D+BY3kXqwkZYBI+etIpRDLhKJjlpA0s4JUcWcKU8pYvf/WXtGCZK6z4DPCAyTfX4Sn97yABms4ohZn2mULzpK7EH3AqQYNH3+hYGkXUXEwWx+8RIcEdS0AkS3Obp0hEG126F3RyxMX6kRU/XM+ZICM80F3t+XbxBd4OrI28yjkH8z/OJR2yR6nBWbQ3oaUN7M8uR/UgnjK75o9jhyoYq/LmnGgJ1V7gFgR3JWQaj5dkd;25:Dz5AvET2/xI96yo6Z+JfSW3vwx2ssy9JTQ+xAzyMXxsOsIYdnqJ18S626gw2f0fi42KFYwtCLmZmYk7Ohb2pGLVEgugglszQ8SoXfAiVIMdIp+83JZsBxTtRpKdZdKCvckE/LpxLMxVCJxDRpxyIyHAGd6WtmlQECS7CaRIUdSGl1WF9HpHmg6SqFXbnamOw9lyboIc5tfUaXme3s85g7u18dlWz6P+KDw1jWX1PN1WbByDuwpM7ktOQ8te05sJ0rU1n7B+OesX86pcoKqeHd5OJndj5kR43PQI7+SqKI/X4RGdv8+M/4faA4GRHPUUWSxjxmZQZ44z9zbrI0Mh73g==;31:0KEcv2EH+lXMMPz/TSq3J5KCeAWN+elpe1HiAtM54gjJqwfEbC0/WkARq8zHahSPA458Ohh/P673ws61+CfswqVkQZOvqd8PsZ3wVkUK9NUBvwwPPoCdakTURgR/ELVvSItGLSdns+gKb6TOx3ZLkBuZhg1COwbLgDxJWRZ8b4pD03Dgkf76ac4sGr1IrEmid9JjeCAoEnOq6fGb2Vzs2chRyhdOK2oBWmhPqB2tYWs= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DBXPR07MB317: X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB317;20:j8fJTXsx3REqQpOTC5CvcWdPtVpZTVBOpN9uniiX22nRYJsAqqL/j+5+xCixuaM89Fb7ztEpoxAWwiEQLYx1xREgNDrbvRLG4zHApJxR53A/C46joTxibV4SSbIogAD59a6P3AIfzEZQvzYuupKHuEF82eZ38MgLHPLBaALqhbADDhoNyYXjXtqbVRRmTvxDZxS4UL6cwxk5ZuJKflN4Ugn5ryoQg8afRE//OngAxkmG62BGjlGz3eCc3zs5YctG/o3M2LcIWTcFjc+AxivxU6fKIGNxK8ACBCyKHSg4vCD20pGTVNYOFuQ4rNA9YJ8JhtalJXlHzroAywotG+vmn436lAhovYn94IhwPprSK8zu+/qNsFVWswDkZOTJ3F06errh/uPEsVNd39c3+BzzNyx6JTdYn9XP2b/RpuWecLaa8o7LJiojepvxtJNBnI4bTsZ7YHkQrzo2PRK123xkKd9RdRg+Qsnrij0ls1yJlnePQqXYkXvKBdkoUmwKCh4L;4:8UcB9wy4DPTt+WCe0JzxFxEIEsR++IDyEGYS3Uem2VN/zRU4vURzzeB8uMCw6zwRyq3u+6DjF300APAX1wG253HRwnX44pn3mnXhI0Ap6SY3olWBM1G41Uq/bCgDmfxsHuJ9U1dTTvuk238jgqjRpRt3oswXhXT11t/nw/GMdJnp84PUOrmCiFMuWMvYHBMoQk1ps4Lui5CxDgtpD0y4SOjb1+UBgU7NNMzO0fMU28xE/ZGe3GFgMuGX+JpJAfViRvnJMGpcMnJw7HSGuGjiBCaHSVuwC0ATJHl4CY6f/65IE9KzOS2XjTdN6+Ip5FtZllDuhhEq1j48NNB74FagPA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524)(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:jUiMu11V++uITXoQcDZL7+PdRf50DxN5Nhd06fh5aV?= =?us-ascii?Q?3EWlUpCtVUmw+GhBC6qKpoyziGjWNIqAKezJI8PMAbzSi9Y9AAkARUVpbyLS?= =?us-ascii?Q?JvLx0LgykuEUXp7Muxn17MZz9QsTyaLp0Sx2X0J7jjr3cqEG7J2Sjebn+XWc?= =?us-ascii?Q?JILcPZ7IiiKt94xlt9lVcVwF0ZFkXPCIjfKr12yP9NZmW5lJKXtaY2FfbjIE?= =?us-ascii?Q?L6/x64TIKvHbgy85WZ0uOJfeLN5O0VN2fk0d2ttleEkOoltD3SdtajWejXzZ?= =?us-ascii?Q?dsoGzroHmk00+rempmUONriwWJXHr4f76eSUH+siU5rMQMUYyG52xgJMwywi?= =?us-ascii?Q?mTWumC/SIOW1Sk0h3bAiRICtzgGwdc1j11hTeCy9UdOdz+5Xgq5rP6y3ALSj?= =?us-ascii?Q?eCvfHXOH3vL8VOtPn1a/+CKvk6zt1wZntpvmP3lPqSc3/8oeiwdfeaQvVGAq?= =?us-ascii?Q?6PoUXt/ovPhKJLiCLOY3/yOPDRpV4vPesEFuxi5gBHXA1b8kOACJxYYHpfKZ?= =?us-ascii?Q?ko6vJpLgSp6s9HHX9GEzTVq56XV5l8OiheLa2YxpCSRtyqkOBX43k6XhudKH?= =?us-ascii?Q?FS2BUIbGmzXzdr6tySwN+t79ymNxt4+RMuWTULwKVjlwunFV0Z8ae12g7Y16?= =?us-ascii?Q?pNPVzyeraCSy+Dy6ssDDkGUG6qHQ42Xp5veSo7kS2lBrxHAsnGeWeV6WOBAd?= =?us-ascii?Q?aiq2/uaXuQ/fCaNmcZ8L7UaFj6vhKEW0d6+E0jT3U4EIXvrg5T9SY6y5SPFg?= =?us-ascii?Q?EsfLKFneV5C7R0eBjXjay3XekjKtKQ+EffAL6BLKw5XuJOme7A7DgMdeZsNN?= =?us-ascii?Q?AzqdNnRASotialJXbIe6mbmGUqGLTpC2Jrrh/w18c1XGcKAGkRLO68uJFUcx?= =?us-ascii?Q?3m7i1mL0T5FA+S2UvrUJ9vQ8spH7utF1qx3yl7LnmN7xXMCOj0KgADAGdelX?= =?us-ascii?Q?qK9EEG9koPIE1l4wZ5nnUYDCwLxnymsd5tMvkv8i+1Pm7Os87gnqYOA+Upam?= =?us-ascii?Q?vVi4tKmohCNhHMtJJCFJGUHUjmZbiLDhlKSi7zImrUdoAwv/h/d7vJc1ApeR?= =?us-ascii?Q?RZZB4sUiDVCbhfftKeWgOdCiJSZ0Uh9Xr13g3TPIDOf7FVH9vI0OMoJPssoj?= =?us-ascii?Q?nsVXztdzlJ6KicA2xMZHGv/pU8+hBTF/S3IFpdRIXIVgGz0N+yqg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB317;6:3vktcYu0/RUOj3qR+vhuAo09485lPMWXeuas2MzsiK+KKyU+U/RkScrwgERRgpsZZ8ycKX8j+zKBwb/IQUDDqQpCT5XRfEhecgDERcMFt0tsVdkQAAxiusbphaSK4q/Uu1WekTsvvXTAZp1P12f4ggtc0UVA39HaE+/d7YnpDr7SNakAa2cIQd5b6BE1F8etINmC75CIg7OmO005eJMTa8CYGr0AzhH4hhQOc/xn13oC5pvlf5BBpUOT1fDvokeX+3fpmnKtKQGxyU2laJE7pDTn8BNBI2lf2B/OFygV3C/a3g58dZumVzsx7Zw5ugRkJPbWiRNw+jGs5kr8vizBtLnABy/hABA7GOE4rWMQ7Q0=;5:mxKITkTdII1rmySWrtDjYT6TBzuHUMg/xCIylUkUCzO/tDeRu8sgl3SFaurE5p9Rxad9Quoa5UEElBTxePOWQH4Jgeoz/I7SBshxaPhqiPbgLRJH4IOKcVWgI2ceBgDZU/RXjj7zRo2dJ5QHdbj/KldoBFFendwSqfuk/WDg/Jc=;24:NCs3z7f+epRnhCeHwHuTWc4IaMs8/sF7NTbJZrR3/auKawmA0F+m4CjPoYPEen9+eUhkp35n0zjKlyK9I2BsZ+cZKu3EGZeQJveXg9LqQ18=;7:7GLty1XF+EijaeiJ1hzuGbD9n3hvVMyW7gl3OlFMaURhrLA73dOZGaEnmaXHgI40/UyT7CmYHZbUfa11KeHXihJ4aQzJ6E3/EReGgXfIEhgVK9o+qyr/zbsFMhAfW/pxy84cxQBg6yeaN0eAW8ZLxGTCmNkS9+UeAtf5VO9st7db7fOqMSW1FKwo6jKKIRUa4k5z1JVXZ6BYf9w1+eqSwZMu9Z2Zfcgc6mm6wW2en8I8yHiPktilEoQPYHxHmkr/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2017 18:33:57.8475 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6db1caec-3138-49c2-7164-08d52de9c415 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 X-SW-Source: 2017-11/txt/msg00362.txt.bz2 Replace it with for_each_thread. gdb/gdbserver/ChangeLog: * linux-low.c (struct thread_resume_array): Remove. (linux_set_resume_request): Return void, take arguments directly. (linux_resume): Use for_each_thread. --- gdb/gdbserver/linux-low.c | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index b4c716c..c1d17f1 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -4569,33 +4569,22 @@ linux_resume_one_lwp (struct lwp_info *lwp, END_CATCH } -struct thread_resume_array -{ - struct thread_resume *resume; - size_t n; -}; - -/* This function is called once per thread via find_inferior. - ARG is a pointer to a thread_resume_array struct. - We look up the thread specified by ENTRY in ARG, and mark the thread - with a pointer to the appropriate resume request. +/* This function is called once per thread via for_each_thread. + We look up which resume request applies to THREAD and mark it with a + pointer to the appropriate resume request. This algorithm is O(threads * resume elements), but resume elements is small (and will remain small at least until GDB supports thread suspension). */ -static int -linux_set_resume_request (thread_info *thread, void *arg) +static void +linux_set_resume_request (thread_info *thread, thread_resume *resume, size_t n) { struct lwp_info *lwp = get_thread_lwp (thread); - int ndx; - struct thread_resume_array *r; - - r = (struct thread_resume_array *) arg; - for (ndx = 0; ndx < r->n; ndx++) + for (int ndx = 0; ndx < n; ndx++) { - ptid_t ptid = r->resume[ndx].thread; + ptid_t ptid = resume[ndx].thread; if (ptid_equal (ptid, minus_one_ptid) || ptid == thread->id /* Handle both 'pPID' and 'pPID.-1' as meaning 'all threads @@ -4604,7 +4593,7 @@ linux_set_resume_request (thread_info *thread, void *arg) && (ptid_is_pid (ptid) || ptid_get_lwp (ptid) == -1))) { - if (r->resume[ndx].kind == resume_stop + if (resume[ndx].kind == resume_stop && thread->last_resume_kind == resume_stop) { if (debug_threads) @@ -4620,7 +4609,7 @@ linux_set_resume_request (thread_info *thread, void *arg) /* Ignore (wildcard) resume requests for already-resumed threads. */ - if (r->resume[ndx].kind != resume_stop + if (resume[ndx].kind != resume_stop && thread->last_resume_kind != resume_stop) { if (debug_threads) @@ -4662,7 +4651,7 @@ linux_set_resume_request (thread_info *thread, void *arg) continue; } - lwp->resume = &r->resume[ndx]; + lwp->resume = &resume[ndx]; thread->last_resume_kind = lwp->resume->kind; lwp->step_range_start = lwp->resume->step_range_start; @@ -4684,14 +4673,12 @@ linux_set_resume_request (thread_info *thread, void *arg) lwpid_of (thread)); } - return 0; + return; } } /* No resume action for this thread. */ lwp->resume = NULL; - - return 0; } /* find_inferior callback for linux_resume. @@ -5104,7 +5091,6 @@ linux_resume_one_thread (thread_info *thread, void *arg) static void linux_resume (struct thread_resume *resume_info, size_t n) { - struct thread_resume_array array = { resume_info, n }; struct thread_info *need_step_over = NULL; int any_pending; int leave_all_stopped; @@ -5115,7 +5101,10 @@ linux_resume (struct thread_resume *resume_info, size_t n) debug_printf ("linux_resume:\n"); } - find_inferior (&all_threads, linux_set_resume_request, &array); + for_each_thread ([&] (thread_info *thread) + { + linux_set_resume_request (thread, resume_info, n); + }); /* If there is a thread which would otherwise be resumed, which has a pending status, then don't resume any threads - we can just -- 2.7.4