From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from AS2PR08MB9222.eurprd08.prod.outlook.com (2603:10a6:20b:59e::10) by PAXPR08MB6942.eurprd08.prod.outlook.com with HTTPS; Wed, 16 Sep 2026 13:34:21 +0000 Received: from DU7P250CA0001.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::23) by AS2PR08MB9222.eurprd08.prod.outlook.com (2603:10a6:20b:59e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7; Wed, 16 Sep 2026 13:34:18 +0000 Received: from DB5PEPF00014B8E.eurprd02.prod.outlook.com (2603:10a6:10:54f:cafe::77) by DU7P250CA0001.outlook.office365.com (2603:10a6:10:54f::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 13:34:18 +0000 Authentication-Results: spf=softfail (sender IP is 99.81.216.78) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning openvz.org discourages use of 99.81.216.78 as permitted sender) Received: from nat.eu.perception-point.io (99.81.216.78) by DB5PEPF00014B8E.mail.protection.outlook.com (10.167.8.202) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 13:34:18 +0000 X-PERCEPTION-POINT-VERDICT: CLN X-PERCEPTION-POINT-SPF: X-PERCEPTION-POINT-SPAM: PASS X-PERCEPTION-POINT-SENDER-IP: 2a00:1450:4864:30::c X-PP-Forefront-Antispam-Report: CIP:2a00:1450:4864:30::c;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr2-x0c.google.com;PTR:mail-wr2-x0c.google.com;CAT:NONE;SFS:(13230040)(82310400026)(6059299003)(43022699015)(3072899012)(2092899012)(12012899012)(10067099003)(3023799007)(19002099009)(6133799003)(55112099003)(22082099003)(16102099003)(18002099003)(5063699009)(56012099006)(5023799004);DIR:INB; Received: from AM0PR07CU002.outbound.protection.outlook.com (mail-am0pr07cu00207.outbound.protection.outlook.com [40.93.65.71]) by inbound-smtp.eu-west-1.amazonaws.com with SMTP id gk14u350sm0ig68v3pgc8qruq8pqv2hdsikji1o1; Wed, 16 Sep 2026 13:34:15 +0000 (UTC) X-SES-Spam-Verdict: PASS X-SES-Virus-Verdict: PASS Received-SPF: softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.71 as permitted sender) client-ip=40.93.65.71; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; Authentication-Results-Original: amazonses.com; spf=softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.71 as permitted sender) client-ip=40.93.65.71; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; dkim=pass header.i=@openvz.org; dmarc=pass header.from=openvz.org; X-SES-RECEIPT: AEFBQUFBQUFBQUFFbERZM3JhN25tU0Y3TnV1bk9hMUwrL2JnRGZKLy9xckQvNExKL044VWpVL3NOSUFaL0N5RmdGbWczc1hKKzVHN0cvS1ZxQm1vUUxPV1I3UTVSbWRiNk96RDNoNXg5U1BOYnJIblhEV0crdFJTMDE5bktpSU15UG5hRkFnQjhWNmdxelhRUUtuaWdaQjYybGpDMWttYXZSN2JJVlp5RWJLMjhBQ1pVS0tkZjBtamZJQXJRSGlzazFXTGxab0t0a2MzMUh2VmxxNUdhdUwyK0hCWjVpbFo0UzVZd0k0WW1MekV6cG1Ha1Rwb0ZORlFsVG12ZXJmbXRZaVU5aU8ydE9qV3h3L1VWRlc0VldqUVdiMC9jZ0NuRXVrQkxqWlpsVWlQZ3h6UjRBdVFPdlE9PQ== X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=G1jJJwTTLastQknpv2L2OFG2aXJNqdvMmBCDodwDKE8/9JjlTWH+ewP44uNtVJec2suwoAI2UaX1Au830QRjk0XwT6y4GBVAwvnBy1vaP8cM7YcLpO4ZEyba3s9kxoSXOiCxBZ5ISJ2jq00PYh0bpD0OiDNgyboP+eZnXLtxjXE=; c=relaxed/simple; s=shh3fegwg5fppqsuzphvschd53n6ihuv; d=amazonses.com; t=1789565655; v=1; bh=4CP7dU8DQbnYRF3Z/E2FLv1U29JWqJxT+pwq29TRzpo=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT; Received: from AS4P190CA0053.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::17) by DU4PR08MB11834.eurprd08.prod.outlook.com (2603:10a6:10:645::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.5; Wed, 16 Sep 2026 13:34:08 +0000 Received: from DB5PEPF00014B95.eurprd02.prod.outlook.com (2603:10a6:20b:656:cafe::d) by AS4P190CA0053.outlook.office365.com (2603:10a6:20b:656::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 13:34:07 +0000 Authentication-Results-Original: spf=pass (sender IP is 2a00:1450:4864:30::c) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of openvz.org designates 2a00:1450:4864:30::c as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:30::c; helo=mail-wr2-x0c.google.com; pr=C Received: from mail-wr2-x0c.google.com (2a00:1450:4864:30::c) by DB5PEPF00014B95.mail.protection.outlook.com (2603:10a6:18:3::389) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 13:34:05 +0000 Received: by mail-wr2-x0c.google.com with SMTP id ffacd0b85a97d-482f6350f91so515858f8f.1 for ; Wed, 16 Sep 2026 06:34:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1789565645; x=1790170445; darn=virtuozzo.com; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=NIz8ifmCQuY/mCe31OGGtSlz647UhLzEYmyneWHEkrY=; b=fXZDYxOQfaA3lsnmg/45wmyPEtBrB1SVaW9JL7grsy+JrHjRu1JA3lKyw9QWIMsDZn 54rpLuDUPkCZ4WEZrMXkUCgp9n8Tri9szMkqvcdlu3/FRfTNpveaKWBSBhCbJ76cMAu9 RKxRxGrv4DvJ/r1HOFaCKxf//71VHjZq+/Y/AD2oG4edARwagNiTmjifV20SOi9LGoGe Zr2ustNDOJub3aouJyVlh+4EdjG/BdOTU8Naff3R8sZkjMoqPAmpgt+pzf1clsf1zU3u D7+IX1RBudHVEqVxfycWCtnOPCzk1/0xBkEWnYKhIrtQRVR+lb9rdqqKHfQP+YMR6jFj Vksg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789565645; x=1790170445; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=NIz8ifmCQuY/mCe31OGGtSlz647UhLzEYmyneWHEkrY=; b=r0YFr1xzEX56mEyFrIPZjeWETKOzY4LihLNoWzuu3t49dcQA2Iul93NxvbPqTQufOF DugAOXctVBOzZ03JZ/vOBsdi7+VqQmqMzP1BGXF85X8KbF5Tu3Ffz1kCvNHEscHcAWu9 VQJs4vpTDrXylmqZj5YsjkGubOCYlX6Tosq7hQXKkFpkbugY5Ok6pSZqKiaUWU0wT/+Q t1FrhQNU4PfvWW0RAdkjUHmxJqA20TkuMCc5IOnqTUSEh8gyeOmkPpODGsQJA3844tSj qPlwbYLzTlY/tRWDYUBv+FylfP6GUCqfRh4VZ4fTliO6iy4VdrMf3DPQnswxmS/71MYm JBNg== X-Gm-Message-State: AFuF++m3css5QPqLLH53Y7QycStgjcnRMxIOpJSVoTxKMdwl13fMitYo MZrERvC1uep+HMAqO20G59wo6WZHHgO9wRi6jn6EFvNPZF4Y9t3uhVVvYyZt+tOw4E/fNPM+d7e 8ZiDDuj8= X-Gm-Gg: AYBFou2RDKM4eLFjzZ6Mk8FBL5URutjValHicwOKrJxDRzhnUhkCipF63YN649LpQc3 og8ek92EmVqUNpnZaDwo+gKuWfvObvh2Mzq+CXakPbrPHOVMDf6OTzxJjfdhK37OmUlYt4v0RRU rdp8qbQlwOQmgDaS048Zmcke/gTOqx0cXgwZPpD6yL3SS16o4ppThavVfYCofuszJD7RsBlgLZd /Da1/ciKu4bjYYVSWt0h3zFBZmlNKabFqzVeRDE1ZE7Jr86LnGRHGM6jrVkFHVOGOCknyAF05ps jSuKIzj7/oxVry9k+bk8GL/e8dW4tZrjgM8ulnk2J1/7GoaoK5TEFHSi9QZ7n3kvGDgxw9UXbVz hkCfX9NHiyLDSkB0yxw4zFA6eZiXciM5IqBao5faQ1UsWUSPnP+vzLMJHu10tZmAh2xZyJigjLK PpGyG6f9oNpbDKdf1RT/y7AhUdE+0J+Alu0rMsvPveK9Ia7rXT5dOeymzJ7DcP4yizhfo6 X-Received: by 2002:a05:600c:314a:b0:49d:16f1:94a5 with SMTP id 5b1f17b1804b1-49eb732b59emr30002455e9.25.1789565645393; Wed, 16 Sep 2026 06:34:05 -0700 (PDT) Return-Path: den@openvz.org Received: from athena.sw.ru ([2a06:5b06:b600:300:f56f:c51e:c53f:b1ce]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49e83da9a7csm76763235e9.11.2026.09.16.06.34.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:34:04 -0700 (PDT) From: "Denis V. Lunev" To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [PATCH hci-8.0 05/12] oslib: add qemu_thread_states() #VSTOR-144507 Date: Wed, 16 Sep 2026 15:33:44 +0200 Message-ID: <20260916133351.1640303-6-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916133351.1640303-1-den@openvz.org> References: <20260916133351.1640303-1-den@openvz.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 1 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B95:EE_|DU4PR08MB11834:EE_|DB5PEPF00014B8E:EE_|AS2PR08MB9222:EE_|PAXPR08MB6942:EE_ X-MS-Office365-Filtering-Correlation-Id: a7e8cfa9-859e-4231-c0e6-08df13f73547 X-MS-Exchange-AtpMessageProperties: SA|SL X-PERCEPTION-POINT-CUSTOM: vzpp X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|82310400026|6059299003|43022699015|3072899012|2092899012|12012899012|10067099003|3023799007|19002099009|6133799003|55112099003|22082099003|16102099003|18002099003|5063699009|56012099006|5023799004; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?WFZVMmh1RWJoS1pmVEkySmFpWkdqOGR6Z01lM3lRcUp1dlEvcTN4dHBzUDY2?= =?utf-8?B?YlJXVWdEd213UEl0dTIyWTYzdmdUNW1UUDRRckx3Q1FURWdZVkJlRndybnBq?= =?utf-8?B?T3pldERQcldvUGFrdE01dTVkakViTlJuYU91Qmg2cVRmNTVOZk1WOHhJTm1Y?= =?utf-8?B?Ty94aTZsZGJsODBTcEI4N0lQQjFGeGlYQzA1eWo1ZVZkKzRmM3l4T1l6VjVx?= =?utf-8?B?UENMVGszZGVZK3F4VHRMckhjcUw4eXNXOWN4cmcvT3pyMHVxWnlQVnlnbzM3?= =?utf-8?B?YlgrMk9rck0vZGFxMHFxQjR2YVFiQzRQNzBZTk9hcitQRkVMN21UMnZ2RkJS?= =?utf-8?B?WHhGeFcvUFFoYkhCeUVkdlBqOVdySk9oSVVSS0IwVmtQUU5pc05ROUErODdC?= =?utf-8?B?ZkpaSG5seXBLK2dYa090ZGdyd1ZzQVRDUCsxWm4wcDNZUjQzVk1ITEM3ZUEr?= =?utf-8?B?VndVSFg5ck1VR0RYbi9HK3FPTGd0dUFtbkJvbFNhZzdGcFJRQzNuQXg1OUor?= =?utf-8?B?eStTbkV3VXNjRmd5bkxJckhEY0JKMGVZWnN4djJkN2cvVERHZ3NXZ3lQNXUw?= =?utf-8?B?SEhqTFVxcnlPTkRwZ29pVWp4RmtEWUpOTllVNlNxK3NocmljR2VXZWx4eTJz?= =?utf-8?B?SkxHTVdTZzNmOWNJV0JuVUt3a0JvTnF1VmlBNlkvUUdUYWNZd2pnU0ZDV3B4?= =?utf-8?B?K2dNb1I0amVRcjdxRFVDOER3VCtXeVBwTkZzd3FTelhyamhubVFTUWRKMFU0?= =?utf-8?B?OHRneXp3OEQ1QzIyZ3BaUTNkUFAzcTBnUDJCUElGSjlPSVI4N01pRUd4ZC80?= =?utf-8?B?YVI5eGFGMGxHQTdwQWdwZU9NRk8zV3EyUUg2dlpTbEVZTnEva2RXUFFndUtw?= =?utf-8?B?YkRSZmk0a3Y0MkNsV1lyK0NqY2lQcXZMS21NZDQyL0V2c2w4aUhhMnJTNUJP?= =?utf-8?B?R3QxWllnNEEwWDl3QjlTSDYwUFk0bnNvbDduNko3NjFCN2dWTmdPbHpFWkl6?= =?utf-8?B?WThlajJHbUhUSTBjaHNsalA1WHlFdGVKeUk3cURHUnVGM2dqc2VLbUs0STU1?= =?utf-8?B?ZjJjTXZ5RUgwR1Bvbzl6cWlwYk5XWVdTdDk2cXh0ajlXZXhScEpSbm1SaFJu?= =?utf-8?B?LzdiVzREc3ZZdnd6VDBLbDJtbGFHNmRTaHl4N1ptQ2M5U0lNemZPWXQ3bnF1?= =?utf-8?B?SEJTV1Q4RDJVWjl3RDZjdnRZYW53S1Jmb3N5ZUFIdG9MRHNqOWFmcTd0VTlh?= =?utf-8?B?YUV2eVRubTZZRDk5cUlwbXFsTmJhWmJkNHNuRHVsRHdDc1hJWTRITmI3dkMy?= =?utf-8?B?Y3d1TGlTOE54WkZyTk5yRlFjWk5ERjg2OExpNWQ2N3dYbCtaZmZNbk0waFJz?= =?utf-8?B?MkFIaFltaFpuazRWUzQ5T3dsR29QWEg5MC8yWS9IdTd1N2hmZGFtZVhLdnVa?= =?utf-8?B?QmwyN3p4Nm1mTWk3c0xCMGtoUk01OEFDTzg4R2xJbUJyWHlTU1pHV1RDRWov?= =?utf-8?B?RVlCNVhzMjFGUU82cW9Rd2Y2QnlKSGpJUndWVEtDbVMvWC91MWdxbzZ4cVg4?= =?utf-8?B?cXprVHNQTTVxNFJFVHo1TXQ5Z3ZwdFJWOThiK3d2UGlUbE9WbHhXK2NWb25m?= =?utf-8?B?U1hDZU1Fb1NQYjBYK2NTUUJTMGNSaUJHQi9jQ3VNL1c5K0VXME4yU2dBSHdH?= =?utf-8?B?ZWgyNzdMQnRHR3ZCQ0l1K1h4bm5ZZVFqRWpVelVudjYyOWJYQkpudUpZalMw?= =?utf-8?B?Q1EwVWFoODV1MFg1cFIvRzZGS1dsK3IyUFJtU2I3TVVReG1SWnhpV1lZS1Ba?= =?utf-8?B?aXppdlVrMytvWTJQa1h6L0lHcHprWW5vZWZPR2YyeXBTQmJDYkMzeWZWbzFI?= =?utf-8?B?ZmFHcnNpeUM3QWw3VDRXRkpYSVV1ME5KbjdoZTI5U2NXc092U3g5ZU1GQi8w?= =?utf-8?B?STNtQWlhNmcvVEw2Y0RlSVFNVTFiRUdyU2swa28zNUZiR0lIajk5ZmhBV1B1?= =?utf-8?B?QjZKam0rU0lXcWNka29GYmVxS2cvcGJQOFpKNFJTTjNqUnRTWFEwSDhaWjBt?= =?utf-8?B?eWc1QmRNMDUvejdBOEVsdlRTTTZ4bkhXUTIrMHUwSHM2NmRWajBDWEd5TWVM?= =?utf-8?B?S015SU9uU3J0ekFOUko4ZzBPL2JWWlUwdlF1d3pSdW5TMlVoTjhnTFpuelEx?= =?utf-8?B?QWs1dHN3N2hZaGlBZ1BjcUZHMS9KU05RcUltb2Ryb0RrZlZFWjc2Vk9WR1lm?= =?utf-8?B?UXp2M1loU1ZmL1V6bEV6Rm5KS25TL2F0L0RuWFZPQ2t2TEV6SmhQSnlBenhO?= =?utf-8?B?aWROUjJjRFNKSitIV0toUVMxb084dnloNnY3RzJESnEyNmdOMit4eUZKMGlx?= =?utf-8?B?MUNPb0JPVUg2Mk5xMWEyaURER3pBWWRnQmYwU0hCd3RKeVlkUk9pWTlFRXNy?= =?utf-8?B?OThpdzM1WmY2RnBFbk9QdnJmVm41bFE5cWIwNG50OEVhME5CNEluSytLY3Rv?= =?utf-8?B?SkNwdDNucTJiVnFvQmNqZTVWbE1HNzhHSFVJUytDWnl3dzZYQjF3NVZUajA4?= =?utf-8?B?VFIzTnJHd1dZK0hwN2lJTTBDMTM0TXdZeGtpN21XQ3JwVHB0T2pJd1VCV3R0?= =?utf-8?B?RjBGWHR6V054SzFpVGlhVFN1VzU2a0RUemliWHJ5ckYwRnFPbUtTb3g2SWZp?= =?utf-8?B?bjBNdllKZCthL1JQeTgyVDR5bjFxSGNDcWVjQ1pMMUpzVnhaZ3VkRHFCNCtW?= =?utf-8?B?aUNpSzBjMHM1YUVIRVdqZVpQTnhpK2hkNGRvcHNqRG9DbzZUNEkyQkN1akgy?= =?utf-8?B?TjBGOU0xem4wL0NBVjlNOGtQYzdCelNjaVVmTlFyZ2J2b3ZValpCa1l2YmZE?= =?utf-8?B?YklxV3RGS0ZnWmVxQ01LS1hldFdPVHNwbmoxSkRyZjRrWFZrVkk0L25OVC81?= =?utf-8?B?S3FmUUdFYTNzMTZHdWVERVBmYkJtTUc4TEk1WnR6dmhKN3ZsaGlHRlpDRktm?= =?utf-8?B?cm0yS2FtUXdSQ25YZGtqVnVEeEpUaUpVeVhTbFB6M3RBYUxVUWhDOVJ5Mkxk?= =?utf-8?B?ODlUcE9hVHFSWWxuQjJON282UGdJdHp2QzJubDQ2ZGhMbHRSaERNdkcwNU00?= =?utf-8?B?RmFJajJPRWl2aGdLTHdtVzdQdFIxZVJaTWd3R3d4UlZDazlSbXVXaTdtblI5?= =?utf-8?B?eitpZTNJa2o3V3UzYkJqU3dtMzV3b3hSdmZXcldtcXl5eUNEWHZ0U0lDa2RR?= =?utf-8?Q?1RXTx0Hrxy2HnUxcAQPy55dSG8=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:2a00:1450:4864:30::c;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr2-x0c.google.com;PTR:mail-wr2-x0c.google.com;CAT:NONE;SFS:(13230040)(82310400026)(6059299003)(43022699015)(3072899012)(2092899012)(12012899012)(10067099003)(3023799007)(19002099009)(6133799003)(55112099003)(22082099003)(16102099003)(18002099003)(5063699009)(56012099006)(5023799004);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-Exchange-RoutingPolicyChecked: fEyz0NmvC95lIKAVs26O0r7r5zKkWcz4Mu8ToqiBcmOBP2BpWVKFosp0QalZMTgbieX0IgQyGMEsvbVETyqYdm2+KLqKg6HpbF3hVeYiOL8a62A/HIbpOznBK2tKBTerhAGGBJCtpP1Dy6VNg1lVMnzdKH5vTPBHX+I18M5I8rLZy/UxMqbX/WO7wasRzsDP/Nfj0y9X43zQQ5wlCKL31yUYO3HFyoG+p33mmFoMNfS3KqcNP3CrtNoz96UwouuhHtM7WHR/ivNT83/w7hy+9gjt4lKZZ8PexYawoCWqfQaQvWrVCfpenNvqYDi/PzvFW6teWMdsNuIdMOVv6uU9Jw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11834 X-MS-Exchange-Organization-ExpirationStartTime: 16 Sep 2026 13:34:18.1644 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: a7e8cfa9-859e-4231-c0e6-08df13f73547 X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B8E.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: DB5PEPF00014B8E.eurprd02.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id-Prvs: 775a6a91-601a-4b4a-b322-08df13f72e14 X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam: BCL:0;ARA:13230040|3072899012|2092899012|43022699015|6059299003|35042699022|82310400026|12012899012|18003699003|6133799003|19002099009|10067099003|5063699009|5023799004|5133699003|22082099003|57112099003|16102099003|55112099003|3023799007; X-Forefront-Antispam-Report: CIP:99.81.216.78;CTRY:IE;LANG:en;SCL:-1;SRV:;IPV:CAL;SFV:SKN;H:nat.eu.perception-point.io;PTR:nat2.eu.perception-point.io;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(43022699015)(6059299003)(35042699022)(82310400026)(12012899012)(18003699003)(6133799003)(19002099009)(10067099003)(5063699009)(5023799004)(5133699003)(22082099003)(57112099003)(16102099003)(55112099003)(3023799007);DIR:INB; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2026 13:34:18.0845 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7e8cfa9-859e-4231-c0e6-08df13f73547 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B8E.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9222 X-MS-Exchange-Transport-EndToEndLatency: 00:00:03.4940171 X-MS-Exchange-Processed-By-BccFoldering: 15.21.0451.004 X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;auth:0;dest:I;ENG:(910005)(944506478)(944626604)(920097)(930201)(20251009189)(140003); X-Microsoft-Antispam-Message-Info: =?utf-8?B?eTZPUk95ZWRMbnNoaGdFdDRQUHFiaEY4Y3ZMdXVmSmpoeFBOV0kzaXZOSUx1?= =?utf-8?B?RXA0aTVOVDVMMzIzYzFpK0VoTmsxSmtNRTI3cXhRdHg4T2lCYnl6QmNlTmEy?= =?utf-8?B?Zko1RHdDZW43NVZnR3FPOW5OcmlONW9vYzNTdjd0L0FBVE82U3VjcFNGa2R1?= =?utf-8?B?YTZIVlRiN1pkbjhaNFN0TWNXMVBtM2liQVhQU0JXdzFzQnNucy9zbkxPNDdn?= =?utf-8?B?S2lrOThGejc4bkU0L3VRckpnQnZ6RC9QbENMUExyQ0xZMmNXUFBjcDdubFFJ?= =?utf-8?B?dnA5enNCcFhUNmc3M2NWdU1QZVJ6Z25SRk5LZk1EOGtVQklSYUdrTGJmT1FI?= =?utf-8?B?VE5La2gvaE5aR0FyNWtvaGlaclVtUndOU3VIcDAzS0l2a0lUU01TL1ByZWZZ?= =?utf-8?B?azFySmc1bFdTTGhLc2o0WGRSK0JQaXJ3cVBoMHFHbGVIanMyUGJJbTA3eVdX?= =?utf-8?B?Z1VqOHB1N3dCWGEwM1dSWVZJMjR6M2gvZzgzTmxRNTlQVUgrdWdWVmw4RWtP?= =?utf-8?B?eXJzRGk2UFZwb0NITm5PTngyMFozdnVIYy8wb1c1MEpxZkJyaUpaTDlVQWU4?= =?utf-8?B?elU3ZEV3N2d3VmdUVEd1dkxRdE1kbU1xVGNEbXRLL1VTSzJ1d0Y3TzhzNU1U?= =?utf-8?B?bjBRbURLUjlmOXhYSldPYzF0VUVoekcyRjJ1MmZBazUyU0VodDdtcGZ0YWQ0?= =?utf-8?B?ZENSSFFGVGhBMmtMR3Q3TW1rR3UrZFVySnRZUTVLOURUMFExMjJpRndpSU1V?= =?utf-8?B?SEFlaFB5akg3NXlBYmYvUXZ6UmJ5NDE1ZXNoanp1cTZHT0x6amgvamZLMDdo?= =?utf-8?B?ZkdlbklaVnpmSXJtenlwVUdGT1lIUXFleWw3STdjc25mcTNScmhCRnRLUWND?= =?utf-8?B?TWtjdUFQOW05ZVFVOEM2U014bGZlQzE0bkgrL01rOW1oNlI3WGxnL1ZGak5x?= =?utf-8?B?cXVjWU5xeHI3MWUrR2NpOWZOR3F4bUF6MTQ1SXlGUTM3c1ExVC9IbXdlSVdH?= =?utf-8?B?UDZudWdIUG5GWjZmc2QrNVBGbzZNM2VNK3lERVlmak9TbDhVT1hucEpielpP?= =?utf-8?B?NDErbFl3S2VORDNNRWxRWXk1K0NOWnRWNVpzQjNLNERGRHNJbnRnTExWU1NO?= =?utf-8?B?UkpRWnRGV2JNKzJiL21SQitUWmsxOU1WeFVTRXpMNjhIeThWdStMU2pXUWJt?= =?utf-8?B?Wi81b3dBQ2NRZkI3SFJ3Wk96QTAzbkVXSTJpSVJmM2VFRVM0M3I5K3M0RGQr?= =?utf-8?B?Q3dxRmNtQTI5QTR3cXJZSG9yMVNCWjAzZERNak4rS0tDbmlUVmE1bkhUL2Z4?= =?utf-8?B?dVgwQ3BhK21LV0hPWDBaa3FjN3JsSWkxMDRIaHlJSjFCMm4xWm0rTGFucEVh?= =?utf-8?B?b1R2Zk9ONVl3UmYrTWVmdXVYeW9rc3kxSmNSVkNtMmhmRjI1QXY2ankzL3Bv?= =?utf-8?B?N1ZOcklDc1dxQitvQ2txLytibkRocEY0WU43YlN6U1pPbWFPdUNGQzNHYW5i?= =?utf-8?B?cEtodHVZdnZ1b2J1YlRQY3VCWnI0WFRITEYrU1JsektvVXRzTDU0eEo2ZGto?= =?utf-8?B?VXJoTGF1VmZXWVEvRVlDS05hNEwwZU9wc0hpYUEvMUUyTkwrNjJGMVJzdklQ?= =?utf-8?B?QXNROFNSYjlidXlyYmE3MUJ4TTYwVm51eVVkTFZEU0g0TnFvUWZaZk5mTjRv?= =?utf-8?B?SzQ2eENsRUs3YUxIRGx1WDY4QUl6LzJhVUZnTDFkVDFVSXd5UXdzSG1QTTAz?= =?utf-8?B?SUllbUw5Um82VUszT2R4MmdWNHZ1R1dzTFNqbVBvT0VLL1RDcnhoL2VzeGxJ?= =?utf-8?B?MEtpbDF4M2lVQ2R4WjNXalNTT3NjZ0JWM0dTczBqY0xES1hWUU1qOW9mV1Zl?= =?utf-8?B?bHJMd3oyMmZvMlJkS05YTW1aSGx2NjVRVUZ4bk9XNmJMMmNLU1g2dlMxMnhj?= =?utf-8?B?Q0E3VW9xRjVXN1RLRmJ2Ump6UElUa1JQdGJ3UXNaRUllYnd5ZDlMeWFVOFFl?= =?utf-8?B?RnJKUHZlL1VWMlFuQkRHRDVnQW54U3pkREJaVWlsOWFHbFUxeTZIb0dOL1NO?= =?utf-8?B?cUVDNGdyQnhTS1J1eVRMU2tKYzFwSDE1T2F3aVg5b2tEOFE3US9IQ0x4b0Yr?= =?utf-8?B?dWIzc3RISWJzWGZ0NjBHUFBrU3d3WHNUUHVEMUE0NnlqQlZoUTZHdUU1TEUx?= =?utf-8?B?TW4wRzRQMVhUcDZ1cVJLZVp2bEJkWUI2Q2FsTi9XbUxFQnVEKy9icU81bU9M?= =?utf-8?B?dmRQVy84MVJXczdDNGM4a1UrTk9YcmN2V1hlZjJzMno5QkRUQktZUWFEbndp?= =?utf-8?B?Qm8xRlk0b2FJcWYyWllVVmpnbjAxVzFBbG9kaURTTlNwaFlsMXNhRzNNY1Jk?= =?utf-8?B?MGpaQkFjMUU5cVdxZ2l1cmZndldvVUJDaXlaSzZVRTl2SUJqTGI4SDNKcEFU?= =?utf-8?B?S0d3YXNob2pST2tuMkxTQUFINk9VYWg3dUZvZ21URnFzRm93RFZNUHBDTWVS?= =?utf-8?B?K0l1TXlaWnhaRGNuak5oUUR5bm9IQVc1LzNHWUkzYTRlczFuTXhlUDIwNEVo?= =?utf-8?B?cWliUWc3cGR5Tk5FNnMvVndrRExSK05waFFCZjl4c2pFY2VFRVNHTmRBVis2?= =?utf-8?B?dkVLWFJGaTVSb3IvK2poZ2NqWkJjSGgxc3pqUUJjSkRkdTVUUjF0K3Eyd25J?= =?utf-8?B?RlBXYStxbTZldlJ0a3BOV1AvTHYwcUd0emQ4eG1aYnk1TkhQZ0JYbGRTcTdP?= =?utf-8?B?NjJ4ejY4MUxTVThCcGRMZDRwRVBCT2RyeExYcEpkYkNMcW9mTDlZSXlRd2JP?= =?utf-8?B?OUk3QUpuS0tZYzFob0ZiRSs5d1M1aVNOQ3ZXeExvYkRQU2RmVURaVEQvS05J?= =?utf-8?B?ZnZ2Zyt2TkNDVEU5TjZCZFVSYWljeFVvWWp5TEIyNDM5bmVLUWJPRFhCQTFT?= =?utf-8?B?T01wVXlTTVFoWWE3MFFNYUhHOHFQNlRuSkZGMVBCOW5jRFN0amJOT1cyV2tW?= =?utf-8?B?dDRkYkdPN3ZxeHZmaDVPTGUvY2pBNk5RSnVhM2tPQ04yeHBjVlhqK09JMEU2?= =?utf-8?B?d0g0a2JhREhYeWxoZlJwMnZwRCs3RERac3dqd09oTW5LcnlOT1JJd1BCSkJM?= =?utf-8?B?RmpsZVNUSUdrRnlRcHNJQklCcEswcWVZZmVXZlVLVEZESEVYd0IwMU9sU3lW?= =?utf-8?B?bFpFMWRlZVpxTFlwMXRZVW9teWVkZGZ6TTdWazZUVXNlMUorcFYxMjU4QW1F?= =?utf-8?B?ZFY2SWd2UGNoK3lFVEFBc1BrVS9aOGhJL2hCN1ZWQ0R4NVRVQ3dNbU5XN2lW?= =?utf-8?B?WjVvcU5EczRLUEw4SVF1QVpTR3JwZDNQb29TTFFtUGJjVXhZVENyK2lwQnhT?= =?utf-8?B?NWszWFBYRVJ5SWxKVmxzdjVPb2lvNjZHOHIwMUMrcEo2T0tQMnpIQ1NuMGNw?= =?utf-8?B?Z09QVFIweFdVZU5CSmlwMU85UC9NRm9oR29xQldEcGozejQ3a3lrRTRaZnBt?= =?utf-8?B?Sm05S1NKOEp3MC9BWkI0QUV5U1lsaU9Fcm9pdjhadXZocWdLVkYrUVJSRnlN?= =?utf-8?B?Q2o4SllQbFpPK2JROCtzU2VCWEFLbWNWVUw0MHNLMkduK296c0l2dXFuOHQ1?= =?utf-8?Q?fbfkA/3KlX+w=3D?= MIME-Version: 1.0 List-Id: From: Denis V. Lunev A watchdog that reports a hang wants to say what every thread was doing, and that answer is host specific. Put it beside the other process introspection helpers rather than in the code that happens to need it first. Describe each thread by id, name, scheduler state and the wait channel it is parked on, all of which Linux exposes in /proc/self/task without privilege. That is already enough to separate a thread blocked on a userspace lock, which waits in a futex, from one blocked in the kernel, which names the primitive it sits on. Skip the caller, which is reporting rather than hanging. Hosts with no way to answer return NULL, leaving the caller to print its own message and nothing more. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Philippe Mathieu-Daudé Cc: Zhao Liu Cc: Stefan Weil Signed-off-by: Denis V. Lunev --- include/qemu/osdep.h | 10 +++++++ util/oslib-posix.c | 71 ++++++++++++++++++++++++++++++++++++++++++++ util/oslib-win32.c | 5 ++++ 3 files changed, 86 insertions(+) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 801dec40467..d3e85c606f0 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -644,6 +644,16 @@ int qemu_get_thread_id(void); */ bool qemu_debugger_attached(void); +/** + * qemu_thread_states: + * + * Returns a newly allocated, newline terminated description of every thread + * in this process apart from the caller: its id, name, scheduler state and + * the wait channel it is parked on, or NULL on a host that cannot report any + * of that. + */ +char *qemu_thread_states(void); + /** * qemu_kill_thread: * @tid: thread id. diff --git a/util/oslib-posix.c b/util/oslib-posix.c index e3593f57eee..c4856f8cba5 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -134,6 +134,77 @@ bool qemu_debugger_attached(void) #endif } +#ifdef CONFIG_LINUX + +static char *read_task_file(const char *tid, const char *name) +{ + g_autofree char *path = g_strdup_printf("/proc/self/task/%s/%s", tid, name); + char *buf = NULL; + + g_file_get_contents(path, &buf, NULL, NULL); + return buf; +} + +static void append_thread_state(GString *out, const char *tid) +{ + g_autofree char *comm = read_task_file(tid, "comm"); + g_autofree char *stat = NULL; + g_autofree char *wchan = NULL; + char state = '?'; + char *rparen; + + if (!comm) { + return; + } + g_strchomp(comm); + + stat = read_task_file(tid, "stat"); + if (stat) { + /* comm can hold anything, ')' included, so scan from the right */ + rparen = strrchr(stat, ')'); + if (rparen && rparen[1] == ' ') { + state = rparen[2]; + } + } + g_string_append_printf(out, " %-7s %-16s %c\n", tid, comm, state); + + wchan = read_task_file(tid, "wchan"); + if (wchan && wchan[0]) { + g_string_append_printf(out, " wchan %s\n", wchan); + } +} + +char *qemu_thread_states(void) +{ + g_autoptr(GDir) dir = g_dir_open("/proc/self/task", 0, NULL); + const char *tid; + GString *out; + + if (!dir) { + return NULL; + } + out = g_string_new(NULL); + while ((tid = g_dir_read_name(dir))) { + if (atoi(tid) != qemu_get_thread_id()) { + append_thread_state(out, tid); + } + } + if (!out->len) { + g_string_free(out, TRUE); + return NULL; + } + return g_string_free(out, FALSE); +} + +#else + +char *qemu_thread_states(void) +{ + return NULL; +} + +#endif /* CONFIG_LINUX */ + int qemu_kill_thread(int tid, int sig) { #if defined(__linux__) diff --git a/util/oslib-win32.c b/util/oslib-win32.c index 4a6e66d021f..af39bab5620 100644 --- a/util/oslib-win32.c +++ b/util/oslib-win32.c @@ -233,6 +233,11 @@ bool qemu_debugger_attached(void) return IsDebuggerPresent(); } +char *qemu_thread_states(void) +{ + return NULL; +} + char * qemu_get_local_state_dir(void) { -- 2.53.0