From patchwork Wed Jun 21 18:32:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yonggang Luo X-Patchwork-Id: 1798078 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=kTQnE8FA; dkim-atps=neutral Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QmXDY4T4qz20Zv for ; Thu, 22 Jun 2023 04:32:45 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8E8CE3858002 for ; Wed, 21 Jun 2023 18:32:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8E8CE3858002 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1687372363; bh=Y7qDLZhrq9LE2+vGe25BGPNi9thIthcPfg4W+mHDLE4=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=kTQnE8FAVpk08XNfRVc1sr/f3Dd/sxDASKFGzdQgg8YqgWpG2s0FWXLTl97aMRY3+ gA3bjxIAQ2x/PlRukXof9lfvdY4+IP+xPfMVNQBoL+Pzy5hsppYns0Rx5MsBCVF5h5 NUE0Ch/3JrtM6gvMsYYxurruenwctWf1z8Hi6jGU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id 9BD623858CDA for ; Wed, 21 Jun 2023 18:32:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9BD623858CDA Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1b53b8465daso29128425ad.0 for ; Wed, 21 Jun 2023 11:32:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687372346; x=1689964346; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y7qDLZhrq9LE2+vGe25BGPNi9thIthcPfg4W+mHDLE4=; b=IXSnimsIt6T3uhZkj/rQWvQaZEPTW2Rd0beDyeewA2gqWatltLqKRD5/ATFTimy3oo z9sITQh4o55fRjPJETJlZYI7XSdFmTvho43l6nRn984LmpJmZCvUW4ElqOynHU6zoUA+ adPojedQerUJVmLy6eYB7XyZrYnIvgc491buUc27BDzLrhLK+A8JFel9YHeuoCgLRmLt Txe9ZKTIGpEtm0T4tzOVLEks2Q8owSVulWy2d8/YzUqkgSdv7Cj82H9xdIAviESh2nA1 KB2dLPCNaz5SV1sdFF0hxRlfoxJ4eLGJ1hsI/k6TIosr8oBrDbNRE1jjUdBuFY/wGoMv nSLQ== X-Gm-Message-State: AC+VfDzoZXHk9n7S0WTVnBkxvi+t2Y7EZEccUnVR6Ga0Um0SK7AXRxzI 5MqRNxRm+0GvbhES1ES1KsXK7q3tfWAXYGyC X-Google-Smtp-Source: ACHHUZ4k77C3CQV/cvDzTZbuIDygWLAdR45a8neT1NSjn8k3Txhe7fwCabwI/I2RhwOJm2L6sPuoxA== X-Received: by 2002:a17:903:245:b0:1ae:10bc:4ae8 with SMTP id j5-20020a170903024500b001ae10bc4ae8mr13379016plh.26.1687372345528; Wed, 21 Jun 2023 11:32:25 -0700 (PDT) Received: from localhost.localdomain ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm3817323pll.118.2023.06.21.11.32.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jun 2023 11:32:25 -0700 (PDT) To: Joseph Myers , libc-alpha@sourceware.org Cc: Yonggang Luo Subject: [PATCH 2/2] time: Implement extra timebase defines for timespec_get and timespec_getres Date: Thu, 22 Jun 2023 02:32:06 +0800 Message-Id: <20230621183206.260-3-luoyonggang@gmail.com> X-Mailer: git-send-email 2.39.0.windows.1 In-Reply-To: <20230621183206.260-1-luoyonggang@gmail.com> References: <20230621183206.260-1-luoyonggang@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, 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 server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Yonggang Luo via Libc-alpha From: Yonggang Luo Reply-To: Yonggang Luo Errors-To: libc-alpha-bounces+incoming=patchwork.ozlabs.org@sourceware.org Sender: "Libc-alpha" these are: TIME_MONOTONIC_RAW TIME_UTC_COARSE TIME_MONOTONIC_COARSE TIME_BOOTTIME TIME_UTC_ALARM TIME_BOOTTIME_ALARM TIME_SGI_CYCLE TIME_TAI according to https://gustedt.gitlabpages.inria.fr/c23-library/#time_monotonic-time_active-time_thread_active Signed-off-by: Yonggang Luo --- NEWS | 10 ++++++++++ include/time.h | 34 +++++++++++++++++++++++++++++++ time/time.h | 10 ++++++++++ time/tst-timespec_get.c | 41 ++++++++++++++++++++++++++++++++++++++ time/tst-timespec_getres.c | 35 ++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+) diff --git a/NEWS b/NEWS index 375e15c5e1..2889e4b6c4 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,16 @@ Version 2.38 Major new features: +* Extra timebase defines are supported, these are: + TIME_MONOTONIC_RAW + TIME_UTC_COARSE + TIME_MONOTONIC_COARSE + TIME_BOOTTIME + TIME_UTC_ALARM + TIME_BOOTTIME_ALARM + TIME_SGI_CYCLE + TIME_TAI + * C2x timebase macro defines are supported, these are: TIME_MONOTONIC TIME_ACTIVE diff --git a/include/time.h b/include/time.h index 77ca52ecbf..19db10ffc6 100644 --- a/include/time.h +++ b/include/time.h @@ -381,6 +381,40 @@ clock_from_timebase (int timebase) case TIME_THREAD_ACTIVE: clockid = CLOCK_THREAD_CPUTIME_ID; break; + case TIME_MONOTONIC_RAW: + clockid = CLOCK_MONOTONIC_RAW; + break; + case TIME_UTC_COARSE: + clockid = CLOCK_REALTIME_COARSE; + break; + case TIME_MONOTONIC_COARSE: + clockid = CLOCK_MONOTONIC_COARSE; + break; +# ifdef CLOCK_BOOTTIME + case TIME_BOOTTIME: + clockid = CLOCK_BOOTTIME; + break; +# endif +# ifdef CLOCK_REALTIME_ALARM + case TIME_UTC_ALARM: + clockid = CLOCK_REALTIME_ALARM; + break; +# endif +# ifdef CLOCK_BOOTTIME_ALARM + case TIME_BOOTTIME_ALARM: + clockid = CLOCK_BOOTTIME_ALARM; + break; +# endif +# ifdef CLOCK_SGI_CYCLE + case TIME_SGI_CYCLE: + clockid = CLOCK_SGI_CYCLE; + break; +# endif +# ifdef CLOCK_TAI + case TIME_TAI: + clockid = CLOCK_TAI; + break; +# endif default: break; } diff --git a/time/time.h b/time/time.h index d01c90e229..10dfabbd3f 100644 --- a/time/time.h +++ b/time/time.h @@ -69,6 +69,16 @@ typedef __pid_t pid_t; # define TIME_ACTIVE 3 # define TIME_THREAD_ACTIVE 4 #endif +#ifdef __USE_GNU +# define TIME_MONOTONIC_RAW 5 +# define TIME_UTC_COARSE 6 +# define TIME_MONOTONIC_COARSE 7 +# define TIME_BOOTTIME 8 +# define TIME_UTC_ALARM 9 +# define TIME_BOOTTIME_ALARM 10 +# define TIME_SGI_CYCLE 11 +# define TIME_TAI 12 +#endif __BEGIN_DECLS diff --git a/time/tst-timespec_get.c b/time/tst-timespec_get.c index f97327666c..99a08279fc 100644 --- a/time/tst-timespec_get.c +++ b/time/tst-timespec_get.c @@ -28,6 +28,13 @@ test_timespec_get (int timebase) TEST_VERIFY (ts.tv_nsec < 1000000000); } +static void +test_timespec_get_not_support(int timebase) +{ + struct timespec ts; + TEST_COMPARE (timespec_get (&ts, timebase), 0); +} + static int do_test (void) { @@ -43,6 +50,40 @@ do_test (void) test_timespec_get (TIME_THREAD_ACTIVE); } + { + test_timespec_get (TIME_MONOTONIC_RAW); + test_timespec_get (TIME_UTC_COARSE); + test_timespec_get (TIME_MONOTONIC_COARSE); + } + + { +#ifdef CLOCK_BOOTTIME + test_timespec_get (TIME_BOOTTIME); +#else + test_timespec_get_not_support (TIME_BOOTTIME); +#endif +#ifdef CLOCK_REALTIME_ALARM + test_timespec_get (TIME_UTC_ALARM); +#else + test_timespec_get_not_support (TIME_UTC_ALARM); +#endif +#ifdef CLOCK_BOOTTIME_ALARM + test_timespec_get (TIME_BOOTTIME_ALARM); +#else + test_timespec_get_not_support (TIME_BOOTTIME_ALARM); +#endif +#ifdef CLOCK_SGI_CYCLE + test_timespec_get (TIME_SGI_CYCLE); +#else + test_timespec_get_not_support (TIME_SGI_CYCLE); +#endif +#ifdef CLOCK_TAI + test_timespec_get (TIME_TAI); +#else + test_timespec_get_not_support (TIME_TAI); +#endif + } + return 0; } diff --git a/time/tst-timespec_getres.c b/time/tst-timespec_getres.c index 960f7c3298..623a1d841c 100644 --- a/time/tst-timespec_getres.c +++ b/time/tst-timespec_getres.c @@ -54,6 +54,41 @@ do_test (void) test_timespec_getres (CLOCK_THREAD_CPUTIME_ID, TIME_THREAD_ACTIVE); } + { + test_timespec_getres (CLOCK_MONOTONIC_RAW, TIME_MONOTONIC_RAW); + test_timespec_getres (CLOCK_REALTIME_COARSE, TIME_UTC_COARSE); + test_timespec_getres (CLOCK_MONOTONIC_COARSE, TIME_MONOTONIC_COARSE); + } + + { + struct timespec ts; +#ifdef CLOCK_BOOTTIME + test_timespec_getres (CLOCK_BOOTTIME, TIME_BOOTTIME); +#else + TEST_COMPARE (timespec_getres (&ts, TIME_BOOTTIME), 0); +#endif +#ifdef CLOCK_REALTIME_ALARM + test_timespec_getres (CLOCK_REALTIME_ALARM, TIME_UTC_ALARM); +#else + TEST_COMPARE (timespec_getres (&ts, TIME_UTC_ALARM), 0); +#endif +#ifdef CLOCK_BOOTTIME_ALARM + test_timespec_getres (CLOCK_BOOTTIME_ALARM, TIME_BOOTTIME_ALARM); +#else + TEST_COMPARE (timespec_getres (&ts, TIME_BOOTTIME_ALARM), 0); +#endif +#ifdef CLOCK_SGI_CYCLE + test_timespec_getres (CLOCK_SGI_CYCLE, TIME_SGI_CYCLE); +#else + TEST_COMPARE (timespec_getres (&ts, TIME_SGI_CYCLE), 0); +#endif +#ifdef CLOCK_TAI + test_timespec_getres (CLOCK_TAI, TIME_TAI); +#else + TEST_COMPARE (timespec_getres (&ts, TIME_TAI), 0); +#endif + } + return 0; }