From patchwork Wed Dec 9 15:53:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Fischofer X-Patchwork-Id: 58153 Delivered-To: patch@linaro.org Received: by 10.112.147.194 with SMTP id tm2csp755261lbb; Wed, 9 Dec 2015 07:53:34 -0800 (PST) X-Received: by 10.140.30.180 with SMTP id d49mr7912911qgd.48.1449676414766; Wed, 09 Dec 2015 07:53:34 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id 11si9412560qhg.74.2015.12.09.07.53.34; Wed, 09 Dec 2015 07:53:34 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dkim=neutral (body hash did not verify) header.i=@linaro-org.20150623.gappssmtp.com Received: by lists.linaro.org (Postfix, from userid 109) id 3B0C261D8A; Wed, 9 Dec 2015 15:53:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,T_DKIM_INVALID,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 316BA61B08; Wed, 9 Dec 2015 15:53:30 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 395BD61CEB; Wed, 9 Dec 2015 15:53:28 +0000 (UTC) Received: from mail-oi0-f47.google.com (mail-oi0-f47.google.com [209.85.218.47]) by lists.linaro.org (Postfix) with ESMTPS id 5C03F6181D for ; Wed, 9 Dec 2015 15:53:27 +0000 (UTC) Received: by oiww189 with SMTP id w189so28754880oiw.3 for ; Wed, 09 Dec 2015 07:53:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=8rkEUoOtpOIU2AZzPenHfiBarlWK2BqDX2kGrVY+0Uk=; b=ZdA9oI7sKyio86vb6Jhz6x9VV02fTMuPyGkMt2PEtJjyqIIzNkbHOiO+738yd4MBVP iTkXpgkRXfuxXt9gMXFyy5saenmqwfqHV7Iy5s4lt4Ld+p57pr/T6BGQm2FS4Fq75Z+W cPJlgDNlolMpLthyUNe1+D5Se581goFqy3pHkjOhaXv3oM6Q80rDaQVipd1SRADnzOio WCQnepCkkL9CEzqNY4aqm8kLweusVxlT2aWp6xGRa5tOD4LP2p7m7/6+p806k13OksEi 9uZzLcZ/ZlA7sym+Q9gO2jKnbQteQYICOplvglfA/q1XUxkLuMgW9jnX6zIAmpFH8qKi nYcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=8rkEUoOtpOIU2AZzPenHfiBarlWK2BqDX2kGrVY+0Uk=; b=ZiwHe7QrXEvc9B+a6Hgr40xRhWiG7EuzYi3CEQbGt6LtBEwqLXGgEuIIIKrYcBsV5T XYxpFa40bau6KaSVU0QVzMLMOPKhtep2xURqlxf7gaPUSW59kdaOMOW9Ez/CLh9K3Hqm SRvAWUiFk1TwC6eyO57KFMLoi6oPENa43FkO3zZdgTffVC8oDkJmmQyBsIdz9FckVhs2 /xc7fPxnKx/L0qGVk9XA7bBQE9ardyHYM3jYCg4AYKpxcE54zR6/PmhxFIyJycNNQgrd rnaH5exvbBGNAa80t7v+2QG6SwfJELRtgooZ0G8rDhgLh4lB/fCsWPl+fXbxW94n1AuU vNQQ== X-Gm-Message-State: ALoCoQlwU+xa9foEcW5NbMrE1isrVy1TWGYpnvSho8MTY+dLWarc2NF6p92BTxLdZmla6+G7LgbX3av8EmZunip3h/NRLiYJNQ== X-Received: by 10.202.73.209 with SMTP id w200mr4441030oia.85.1449676406890; Wed, 09 Dec 2015 07:53:26 -0800 (PST) Received: from Ubuntu15.localdomain (cpe-66-68-129-43.austin.res.rr.com. [66.68.129.43]) by smtp.gmail.com with ESMTPSA id ch1sm3731732oec.16.2015.12.09.07.53.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 09 Dec 2015 07:53:26 -0800 (PST) From: Bill Fischofer To: lng-odp@lists.linaro.org Date: Wed, 9 Dec 2015 09:53:21 -0600 Message-Id: <1449676401-16217-1-git-send-email-bill.fischofer@linaro.org> X-Mailer: git-send-email 2.1.4 X-Topics: patch Subject: [lng-odp] [API-NEXT PATCH] linux-generic: time: remove posix bleed through on odp_time_t X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" The linux-generic implementation of odp_time_t makes use of POSIX APIs that are sensitive to the _POSIX_C_SOURCE level. Use an indirection mechanism so that these dependencies do not "bleed through" the ODP API. This means that ODP applications can be independent of _POSIX_C_SOURCE level. Signed-off-by: Bill Fischofer --- .../linux-generic/include/odp/plat/time_types.h | 5 +++- platform/linux-generic/odp_time.c | 27 +++++++++++++--------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/platform/linux-generic/include/odp/plat/time_types.h b/platform/linux-generic/include/odp/plat/time_types.h index e5765ec..05e2b59 100644 --- a/platform/linux-generic/include/odp/plat/time_types.h +++ b/platform/linux-generic/include/odp/plat/time_types.h @@ -21,7 +21,10 @@ extern "C" { * @{ **/ -typedef struct timespec odp_time_t; +typedef struct { + uint64_t tv_sec; + int64_t tv_nsec; +} odp_time_t; odp_time_t odp_time_null(void); diff --git a/platform/linux-generic/odp_time.c b/platform/linux-generic/odp_time.c index 1c7c214..b5737f6 100644 --- a/platform/linux-generic/odp_time.c +++ b/platform/linux-generic/odp_time.c @@ -11,7 +11,12 @@ #include #include -static struct timespec start_time; +typedef union { + odp_time_t ex; + struct timespec in; +} _odp_time_t; + +static odp_time_t start_time; static inline uint64_t time_to_ns(odp_time_t time) @@ -27,7 +32,7 @@ uint64_t time_to_ns(odp_time_t time) static inline odp_time_t time_diff(odp_time_t t2, odp_time_t t1) { - struct timespec time; + odp_time_t time; time.tv_sec = t2.tv_sec - t1.tv_sec; time.tv_nsec = t2.tv_nsec - t1.tv_nsec; @@ -43,13 +48,13 @@ odp_time_t time_diff(odp_time_t t2, odp_time_t t1) odp_time_t odp_time_local(void) { int ret; - struct timespec time; + _odp_time_t time; - ret = clock_gettime(CLOCK_MONOTONIC_RAW, &time); + ret = clock_gettime(CLOCK_MONOTONIC_RAW, &time.in); if (odp_unlikely(ret != 0)) ODP_ABORT("clock_gettime failed\n"); - return time_diff(time, start_time); + return time_diff(time.ex, start_time); } odp_time_t odp_time_diff(odp_time_t t2, odp_time_t t1) @@ -64,7 +69,7 @@ uint64_t odp_time_to_ns(odp_time_t time) odp_time_t odp_time_local_from_ns(uint64_t ns) { - struct timespec time; + odp_time_t time; time.tv_sec = ns / ODP_TIME_SEC_IN_NS; time.tv_nsec = ns - time.tv_sec * ODP_TIME_SEC_IN_NS; @@ -85,7 +90,7 @@ int odp_time_cmp(odp_time_t t2, odp_time_t t1) odp_time_t odp_time_sum(odp_time_t t1, odp_time_t t2) { - struct timespec time; + odp_time_t time; time.tv_sec = t2.tv_sec + t1.tv_sec; time.tv_nsec = t2.tv_nsec + t1.tv_nsec; @@ -115,16 +120,16 @@ uint64_t odp_time_to_u64(odp_time_t time) odp_time_t odp_time_null(void) { - return (struct timespec) {0, 0}; + return (odp_time_t) {0, 0}; } int odp_time_global_init(void) { int ret; - struct timespec time; + _odp_time_t time; - ret = clock_gettime(CLOCK_MONOTONIC_RAW, &time); - start_time = ret ? odp_time_null() : time; + ret = clock_gettime(CLOCK_MONOTONIC_RAW, &time.in); + start_time = ret ? odp_time_null() : time.ex; return ret; }