Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3597326rwd; Mon, 29 May 2023 13:22:24 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7uObNLpEVOS8XITITrywPgZoeDeN5fV2XYTYR4jBV9ZkLEZwIzrN/SQUeWTMmDGb6MtEeW X-Received: by 2002:a17:903:2307:b0:1ac:451d:34b with SMTP id d7-20020a170903230700b001ac451d034bmr392073plh.9.1685391744596; Mon, 29 May 2023 13:22:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685391744; cv=none; d=google.com; s=arc-20160816; b=L68M0Zz5+8JoCmM3CYPFo4dxA3n7AIvQnJL4GyBo38F64KNRQgyk2I/PdB2QIHSMtw elGN3HmBU9RAEoWg3QFasQTEN1tVsF7dodSwQixT8bKQJfokpcn6NHcZ/JD3rVJ050cT +zRtuzm5IOhGuRBx7UJBSTHSP1IhfKBnu/zI7hsbIITHxd0Fo5Fxj4F6s7VOFQlm5Umg xYCSwI9bRX0VEZJlbVRaB81sY3nZA2Xj9qokN17+IpNYsMvCfHb8Vdgvy4QOaZdIJeNg vGxgqILzDsG5eiGl0jXvKPQ9T6CQSARoyJoVSj281yiJ8GhS9x/4rfCbuZXP0IGl0IqF EBAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=6dO7jU4AvNQibvBCJ10/jh+Po8gQ/v7dCby7BHiDmxM=; b=0HsEae04KM2F1mT5/LLURmeMkQxOxiehNIhSOlRmqKT+2zp7emCZkL9tNP382u6l9K pDxJN7B5QdurbJaB1gAvYbpsvhH2pLsaS5B2wcOAVIpKFs00mJShDPj6VtSMptDCjMbf NFIfqVHiywtvO7K0n/Zi6iNYxn9i3vZ79nDqLt82e9CDE+Vb7470sD+4FwX5YWlUSC4g Sjoq4qwOGnKSZE9D/vvwcoXnbRe5wyTBxtA057pFOknRcZElsWgaLBLC5EG5tS6L/6kV Hee9aAa1SwYuA7wA0lmFfg6h1LWjVv6LcSVm20QxMiepzavmgkQe6WStoatAyHBpLgRY 86lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q15-20020a17090311cf00b001aadb1147e4si10758330plh.456.2023.05.29.13.22.11; Mon, 29 May 2023 13:22:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229566AbjE2UAR (ORCPT + 99 others); Mon, 29 May 2023 16:00:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229455AbjE2UAQ (ORCPT ); Mon, 29 May 2023 16:00:16 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.67.158]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 606C6CF; Mon, 29 May 2023 13:00:14 -0700 (PDT) X-QQ-mid: bizesmtp72t1685390404tm1hc6lq Received: from linux-lab-host.localdomain ( [119.123.130.80]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 30 May 2023 04:00:03 +0800 (CST) X-QQ-SSF: 01200000000000D0V000000A0000000 X-QQ-FEAT: hHcwae2JLGcWbJfH39kHmo4snlKcsDyQqojZPXS964VUI/pU9KgvLuypS0Ah7 jYeyVqCZsExVvRBfJlr+CiyoUz3vLCHyLwxLp/d64KPpdGb9bB8hSTxi9nDGIkG3T5CUXWl ekxz82XJnF4H40ogAAvy1iEdLCLqKp94Eo1uPbII44VKTBekWYtZMOzFa+Wod+3vQNiiWRa pmueuBHNfNVM2iNDyqMzp8NUw7yYOifbwx+HQ6iREaLTCMyhglMI3jTjepktljlKAjdC2hf jMvzw5hE1hfVlh/86OfbTnombI5g+dpuv2aAWpJsjdxXMJWC5lNwPtoAaHQHMzhAXCLpTAV qXV0/H7I/oJg8xtfQg/yElw+Z0v+AGL/OWV9+iaWjDFf9RP0kwU+XVcK9A5Tn7Vqx0UKNeT X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3843116070107166378 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-riscv@lists.infradead.org, thomas@t-8ch.de Subject: [PATCH v2 11/13] tools/nolibc: sys_gettimeofday: add pure 64bit gettimeofday Date: Tue, 30 May 2023 03:59:57 +0800 Message-Id: <6d293f3957c43e60319af94b3e5463b376a86752.1685387484.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrsz:qybglogicsvrsz3a-3 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's time to provide 64bit time structs for all platforms, for y2038 is near. clock_gettime64 has been added from at least v5.0.0. Suggested-by: Arnd Bergmann Link: https://lore.kernel.org/linux-riscv/afc4944f-9494-4367-906d-06ac47648ab7@app.fastmail.com/ Signed-off-by: Zhangjin Wu --- tools/include/nolibc/sys.h | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index ca802627e88f..533233094733 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -25,6 +25,7 @@ #include "arch.h" #include "errno.h" +#include "string.h" #include "types.h" /* Functions in this file only describe syscalls. They're declared static so @@ -552,7 +553,34 @@ long getpagesize(void) static __attribute__((unused)) int sys_gettimeofday(struct timeval *tv, struct timezone *tz) { - return my_syscall2(__NR_gettimeofday, tv, tz); +#if defined(__NR_clock_gettime) || defined(__NR_clock_gettime64) +#ifdef __NR_clock_gettime64 + const long nr_clock_gettime = __NR_clock_gettime64; +#elif __SIZEOF_LONG__ == 8 + const long nr_clock_gettime = __NR_clock_gettime; +#else +#error No __NR_clock_gettime64 defined, cannot implement time64 sys_gettimeofday() +#endif + struct timespec ts; + int ret; + + /* set tz to zero to avoid random number */ + if (tz != NULL) + memset(tz, 0, sizeof(struct timezone)); + + if (tv == NULL) + return 0; + + ret = my_syscall2(nr_clock_gettime, CLOCK_REALTIME, &ts); + if (ret) + return ret; + + tv->tv_sec = ts.tv_sec; + tv->tv_usec = (unsigned int)ts.tv_nsec / 1000; + return 0; +#else +#error Neither __NR_clock_gettime nor __NR_clock_gettime64 defined, cannot implement sys_gettimeofday() +#endif } static __attribute__((unused)) -- 2.25.1