From nobody Fri May 3 18:33:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=apple.com ARC-Seal: i=1; a=rsa-sha256; t=1643328988; cv=none; d=zohomail.com; s=zohoarc; b=VqV9Dwo781IaOZvKZo+Z7DS6si5RqRc/z+o/rWQFdM+U3eYN3EO7oqXFeVANVg1U6w9fLeHqUx2a5H9qXmsWO6DYk2QePe+EHPjIt7fJ0Q1i3usXT0jmDLbDkTvGd3cvcfnjmXY4I3WwwHL/Sx/AW95mQ8uly99Dq0/xG411dH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643328988; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=F0ZnFbUb2LOwwgsfVTdJPfevtoJz63FaiZCbXuD49Zk=; b=K8+GkQ2pPdWDZ0gee5XibM9qaaVF7UhoWrDOpSnMjUpmKoshXa9tLPVL4MfFMQJLVdZmGHrXCR9A0irup5htpqBjiVWYT26LB9OlBnfwb+neIdTWdIcPOut98NiRQOdpn8QHLvEXwBp8n0y3Y4GsDesjwFZXSCzLuSKChpZJNdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1643328988152124.52377434085815; Thu, 27 Jan 2022 16:16:28 -0800 (PST) Received: from localhost ([::1]:38816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nDEwE-0007f7-Lt for importer@patchew.org; Thu, 27 Jan 2022 19:16:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nDEt6-0003X6-Eh for qemu-devel@nongnu.org; Thu, 27 Jan 2022 19:13:12 -0500 Received: from rn-mailsvcp-ppex-lapp34.rno.apple.com ([17.179.253.43]:52574 helo=rn-mailsvcp-ppex-lapp34.apple.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nDEsp-0007j6-U6 for qemu-devel@nongnu.org; Thu, 27 Jan 2022 19:13:10 -0500 Received: from pps.filterd (rn-mailsvcp-ppex-lapp34.rno.apple.com [127.0.0.1]) by rn-mailsvcp-ppex-lapp34.rno.apple.com (8.16.1.2/8.16.1.2) with SMTP id 20S00eAN000924; Thu, 27 Jan 2022 16:12:52 -0800 Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by rn-mailsvcp-ppex-lapp34.rno.apple.com with ESMTP id 3dren5t448-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Thu, 27 Jan 2022 16:12:52 -0800 Received: from rn-mailsvcp-mmp-lapp02.rno.apple.com (rn-mailsvcp-mmp-lapp02.rno.apple.com [17.179.253.15]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPS id <0R6E00ZTW8LGJ840@rn-mailsvcp-mta-lapp01.rno.apple.com>; Thu, 27 Jan 2022 16:12:52 -0800 (PST) Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp02.rno.apple.com by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) id <0R6E002008CRL400@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 27 Jan 2022 16:12:52 -0800 (PST) Received: from rn-mailsvcp-relay-lapp03.rno.apple.com (unknown [17.150.218.164]) by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPSA id <0R6E009M98LFYM00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Thu, 27 Jan 2022 16:12:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=20180706; bh=F0ZnFbUb2LOwwgsfVTdJPfevtoJz63FaiZCbXuD49Zk=; b=CCVvGRrpx6aHK3pCSo2k5O3PSIC05tZzuYjPLFoAcyWLWTro7udoWneADxbTBSBKlQ7R UVDDfnb7yHigB1a2aqVkFA95kFncJ9ThKi3siQy3p57cLpB6Seh8tnoZmvp0yDkrU4Vf 2XZoOrFvG2rT2ElrNcNgPLdpYkaVc66wzORTK2EIDQYcCumZIAhyET/9CJniiuHYUsiE DSqiNX2cmOyKWUXZgAagwhTIYSu/kT1dC9GeL7nhXOELekEZ62UDCAPF1B/pqkgufr7d zyxy8eZvFlenioP+N2x9+FcTO6+ftjAw9E5YDvHrLlVi9oeArZfQXLyloNpOJGyy6vwx eg== X-Va-A: X-Va-T-CD: 51115aee971724d6ddf329fb28aa7ad5 X-Va-E-CD: ab22f6faa0a3897cbee4c6ff6708ca71 X-Va-R-CD: e7df06cd3a6e483d0c57e0986e00ca1c X-Va-CD: 0 X-Va-ID: 39d74cef-94d6-4415-a834-0421f044b982 X-V-A: X-V-T-CD: 51115aee971724d6ddf329fb28aa7ad5 X-V-E-CD: ab22f6faa0a3897cbee4c6ff6708ca71 X-V-R-CD: e7df06cd3a6e483d0c57e0986e00ca1c X-V-CD: 0 X-V-ID: a8e4d46f-1391-493e-9539-31d85484ad8e X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.816 definitions=2022-01-27_06:2022-01-27, 2022-01-27 signatures=0 From: Cameron Esfahani To: qemu-devel@nongnu.org Cc: laurent@vivier.eu Subject: [PATCH v3] linux-user: Implement starttime field in self stat emulation Date: Thu, 27 Jan 2022 16:12:51 -0800 Message-id: <20220128001251.45165-1-dirty@apple.com> X-Mailer: git-send-email 2.32.0 (Apple Git-131) MIME-version: 1.0 Content-transfer-encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.816 definitions=2022-01-27_06:2022-01-27, 2022-01-27 signatures=0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=17.179.253.43; envelope-from=dirty@apple.com; helo=rn-mailsvcp-ppex-lapp34.apple.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.159, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @apple.com) X-ZM-MESSAGEID: 1643328990215100001 Content-Type: text/plain; charset="utf-8" Instead of always returning 0, return actual starttime. v3: Fix formatting issues v2: Use clock_gettime() instead of scanning /proc/self/stat Signed-off-by: Cameron Esfahani Reviewed-by: Laurent Vivier --- linux-user/main.c | 14 ++++++++++++++ linux-user/qemu.h | 3 +++ linux-user/syscall.c | 3 +++ 3 files changed, 20 insertions(+) diff --git a/linux-user/main.c b/linux-user/main.c index 16def5215d..fbc9bcfd5f 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -190,12 +190,26 @@ void stop_all_tasks(void) /* Assumes contents are already zeroed. */ void init_task_state(TaskState *ts) { + long ticks_per_sec; + struct timespec bt; + ts->used =3D 1; ts->sigaltstack_used =3D (struct target_sigaltstack) { .ss_sp =3D 0, .ss_size =3D 0, .ss_flags =3D TARGET_SS_DISABLE, }; + + /* Capture task start time relative to system boot */ + + ticks_per_sec =3D sysconf(_SC_CLK_TCK); + + if ((ticks_per_sec > 0) && !clock_gettime(CLOCK_BOOTTIME, &bt)) { + /* start_boottime is expressed in clock ticks */ + ts->start_boottime =3D bt.tv_sec * (uint64_t) ticks_per_sec; + ts->start_boottime +=3D bt.tv_nsec * (uint64_t) ticks_per_sec / + NANOSECONDS_PER_SECOND; + } } =20 CPUArchState *cpu_copy(CPUArchState *env) diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 7910ce59cc..106175406a 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -158,6 +158,9 @@ typedef struct TaskState { =20 /* This thread's sigaltstack, if it has one */ struct target_sigaltstack sigaltstack_used; + + /* Start time of task after system boot in clock ticks */ + uint64_t start_boottime; } __attribute__((aligned(16))) TaskState; =20 abi_long do_brk(abi_ulong new_brk); diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5950222a77..7b3dbc72d4 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8107,6 +8107,9 @@ static int open_self_stat(void *cpu_env, int fd) } else if (i =3D=3D 3) { /* ppid */ g_string_printf(buf, FMT_pid " ", getppid()); + } else if (i =3D=3D 21) { + /* starttime */ + g_string_printf(buf, "%" PRIu64 " ", ts->start_boottime); } else if (i =3D=3D 27) { /* stack bottom */ g_string_printf(buf, TARGET_ABI_FMT_ld " ", ts->info->start_st= ack); --=20 2.32.0 (Apple Git-131)