From patchwork Tue Oct 10 15:00:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 115411 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp3855880qgn; Tue, 10 Oct 2017 08:02:13 -0700 (PDT) X-Google-Smtp-Source: AOwi7QCgxGPjiGlatkkkc/u+NTfRVELR4Q5pVZCAcUWmw7D3RU0m+9tIwTANytp304VkQ0lP5ojg X-Received: by 10.36.243.68 with SMTP id t4mr16649468iti.67.1507647733270; Tue, 10 Oct 2017 08:02:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507647733; cv=none; d=google.com; s=arc-20160816; b=ED9TlXQPyy/QFt8yLNV+RnghE2U+2FT3TcBvZfhA1wVFiogo8474rRRWPwPfkdBvup BJSYxO4Z6qC41O6iDNm2B6ia1BRsfStw6ewTWcIS57c1AW735WG/ZAbSF/71/Wix2s95 ppRiEXUz9LmTMnFbut3C2M/Ej6/7FPWAyKhbdxTMs8yAHjw8WN8PzQY0nUPPdbDh2o7A x12zMi4jUF+eYM6tnVugHw7eVmrb0l+WsZiKIIi4qQ2D4ned9vyiAtOAhZE70R9H3Tb4 mG9/4VDF5KlU6RDbqQwy1QAgL03+48TyrofHpBb1WdPcBKjzpRvWLr0CEz655GIZ8Z8B DU6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=a62ppgDhu7AqJvRZruzEGF5IH29790crauczeGmbFgQ=; b=WM93perE2NwEP9TAt3dK6L3qWA43oRsVriKKCaYMaf8YMWep+EhLIrJSS6WEKTPJ/K iiG/Mwv6lvv0TFXDV0gZ/hneVC0Xd5mAvnW7LqHCgaW8117r/C6cgl+c7su50FqEXAIV HteIO1CneuXJD8VLrkJftdIikkMEwehc4pvR2MCPiGZWlwxRhL/6Ujhhaf1QhSgcEUcx 8vJExfV9+lr/EYC4Tom3EYAwASIyR8qihM4azN6NFDlmIaS5Zv+pK+m+n+3qIwKN/trA KNrTmaLjX6Mr8/2vyi8++KEoeeGaCx8Xh52PoPTOk7G6DCKKVXRjzWtkzSABDAnvSM6B iqoQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id p23si7003849ioi.25.2017.10.10.08.02.07; Tue, 10 Oct 2017 08:02:13 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id CC7F9607E6; Tue, 10 Oct 2017 15:02:06 +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.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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 C2FF660C03; Tue, 10 Oct 2017 15:01:03 +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 9781860C03; Tue, 10 Oct 2017 15:00:49 +0000 (UTC) Received: from forward104p.mail.yandex.net (forward104p.mail.yandex.net [77.88.28.107]) by lists.linaro.org (Postfix) with ESMTPS id A750D60C03 for ; Tue, 10 Oct 2017 15:00:46 +0000 (UTC) Received: from mxback18j.mail.yandex.net (mxback18j.mail.yandex.net [IPv6:2a02:6b8:0:1619::94]) by forward104p.mail.yandex.net (Yandex) with ESMTP id 3FCA31828A4 for ; Tue, 10 Oct 2017 18:00:45 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback18j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 6MxneAhKYY-0dje4ivL; Tue, 10 Oct 2017 18:00:39 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id jk0YtVglYD-0cxS3E0a; Tue, 10 Oct 2017 18:00:38 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 10 Oct 2017 18:00:07 +0300 Message-Id: <1507647610-23573-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> References: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 205 Subject: [lng-odp] [PATCH v2 1/4] linux-gen: timer: drop odp prefix from odp_timer_pool_new 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: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Maxim Uvarov Internal static function does not need odp_ prefix. Signed-off-by: Maxim Uvarov --- /** Email created from pull request 205 (muvarov:master_timer_cleanup) ** https://github.com/Linaro/odp/pull/205 ** Patch: https://github.com/Linaro/odp/pull/205.patch ** Base sha: 3bacbfd55edf76b897a4b2e5c62b59ca6fa95331 ** Merge commit sha: 818bddefdf4c5afa6d1608da3de280ebcf585d75 **/ platform/linux-generic/odp_timer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 3a8cfcddd..0a4fbb7e3 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -225,8 +225,8 @@ static inline odp_timer_t tp_idx_to_handle(struct odp_timer_pool_s *tp, static void itimer_init(odp_timer_pool *tp); static void itimer_fini(odp_timer_pool *tp); -static odp_timer_pool_t odp_timer_pool_new(const char *name, - const odp_timer_pool_param_t *param) +static odp_timer_pool_t timer_pool_new(const char *name, + const odp_timer_pool_param_t *param) { uint32_t tp_idx = odp_atomic_fetch_add_u32(&num_timer_pools, 1); if (odp_unlikely(tp_idx >= MAX_TIMER_POOLS)) { @@ -804,7 +804,7 @@ odp_timer_pool_create(const char *name, __odp_errno = EINVAL; return ODP_TIMER_POOL_INVALID; } - return odp_timer_pool_new(name, param); + return timer_pool_new(name, param); } void odp_timer_pool_start(void) From patchwork Tue Oct 10 15:00:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 115413 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp3858518qgn; Tue, 10 Oct 2017 08:04:03 -0700 (PDT) X-Google-Smtp-Source: AOwi7QA7IwA+vsG2QsEg66i/QkDlsXEl6aXPz2Mfn8aL5LPIx3rJVutWEfMGVC5/AqMoUq+5Th8b X-Received: by 10.36.150.3 with SMTP id z3mr17658424itd.43.1507647843739; Tue, 10 Oct 2017 08:04:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507647843; cv=none; d=google.com; s=arc-20160816; b=JvD27JgX8C04xAgW6StZ8UcZxZYyLd+0XpRpkYifTV3Ffta5ATbfRARx0DsS5j8Utv lczQsKbDA8qlwc3PpJz7pR+9E0ZvmKfuycOJ8IC1cGdPMnhY5r+l6hkSBlExkHYXzio3 U1tcdyUTYaLAfuqynq8sha2M+0HbhavoLzw3a0h6GiGFV0IEv0rpqXu/y2AqrlmwTdKl jAdgmGcHix8Sr6du6lDtZGnDQKdfFQvMC6dk3q8UTO3YOEZwvMSR4VJcpmMkutrJMoO/ DXSXfBegeNm4e9m3HBezDZWMCF3AH8ryi3xt3DUY4rQGEDGM/9OC9TzpwoJXVXH4+uIT 0Rpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=bE2PlRnryUnnWatM3D+jAtPpk0+pFMf37ZQIhZ5wIpo=; b=ybVsj24X9NeYnW3w/RGsNGFZ/1WsJ4Uqp7P91HUVXJoeyv2uQoljZQJ87Pl1YMVOGR l2k+lInia3pmTgysSQwF6VB7LRCAzg/kkNlOFIRjxX+zg9bW6iwQdXLUbXjLPey7GQMs EGvmcsmR7bzktfPY8twak472DgoiKmrLc39I8/HUGQFIuxVNlDcwubNi2rs8OEp4HBmy lOWRvXCh6XewynkIQbub+5h0RYr27dOueEwkgekL754VwdM60LD+hWTf5bJmALm0dmLF Xv+gueT2p2d9x2GtGIpbiGpI1N9aIXfL3WEceZoHnfr3nXwoRVTklsvzqK8jqsl69pSz pJ4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id p23si7007383ioi.25.2017.10.10.08.04.01; Tue, 10 Oct 2017 08:04:03 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id A9C7861056; Tue, 10 Oct 2017 15:04:01 +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.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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 6B04D60CC6; Tue, 10 Oct 2017 15:01:24 +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 6A7B960C18; Tue, 10 Oct 2017 15:00:55 +0000 (UTC) Received: from forward104o.mail.yandex.net (forward104o.mail.yandex.net [37.140.190.179]) by lists.linaro.org (Postfix) with ESMTPS id C917560BFB for ; Tue, 10 Oct 2017 15:00:47 +0000 (UTC) Received: from mxback6o.mail.yandex.net (mxback6o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::20]) by forward104o.mail.yandex.net (Yandex) with ESMTP id C3CE6701FBE for ; Tue, 10 Oct 2017 18:00:45 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback6o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 42vHMoSo7o-0jOaYg6M; Tue, 10 Oct 2017 18:00:45 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id jk0YtVglYD-0jxqSxop; Tue, 10 Oct 2017 18:00:45 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 10 Oct 2017 18:00:08 +0300 Message-Id: <1507647610-23573-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> References: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 205 Subject: [lng-odp] [PATCH v2 2/4] linux-gen: timer: drop odp prefix from odp_timer_pool 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: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Maxim Uvarov internal data type should not be named with odp api prefix. Signed-off-by: Maxim Uvarov --- /** Email created from pull request 205 (muvarov:master_timer_cleanup) ** https://github.com/Linaro/odp/pull/205 ** Patch: https://github.com/Linaro/odp/pull/205.patch ** Base sha: 3bacbfd55edf76b897a4b2e5c62b59ca6fa95331 ** Merge commit sha: 818bddefdf4c5afa6d1608da3de280ebcf585d75 **/ platform/linux-generic/odp_timer.c | 61 +++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 0a4fbb7e3..977385a7f 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -162,7 +162,7 @@ static inline void set_next_free(odp_timer *tim, uint32_t nf) } /****************************************************************************** - * odp_timer_pool abstract datatype + * timer_pool_t abstract datatype * Inludes alloc and free timer *****************************************************************************/ @@ -186,18 +186,18 @@ typedef struct odp_timer_pool_s { pthread_t timer_thread; /* pthread_t of timer thread */ pid_t timer_thread_id; /* gettid() for timer thread */ int timer_thread_exit; /* request to exit for timer thread */ -} odp_timer_pool; +} timer_pool_t; #define MAX_TIMER_POOLS 255 /* Leave one for ODP_TIMER_INVALID */ #define INDEX_BITS 24 static odp_atomic_u32_t num_timer_pools; -static odp_timer_pool *timer_pool[MAX_TIMER_POOLS]; +static timer_pool_t *timer_pool[MAX_TIMER_POOLS]; -static inline odp_timer_pool *handle_to_tp(odp_timer_t hdl) +static inline timer_pool_t *handle_to_tp(odp_timer_t hdl) { uint32_t tp_idx = _odp_typeval(hdl) >> INDEX_BITS; if (odp_likely(tp_idx < MAX_TIMER_POOLS)) { - odp_timer_pool *tp = timer_pool[tp_idx]; + timer_pool_t *tp = timer_pool[tp_idx]; if (odp_likely(tp != NULL)) return timer_pool[tp_idx]; } @@ -222,8 +222,8 @@ static inline odp_timer_t tp_idx_to_handle(struct odp_timer_pool_s *tp, } /* Forward declarations */ -static void itimer_init(odp_timer_pool *tp); -static void itimer_fini(odp_timer_pool *tp); +static void itimer_init(timer_pool_t *tp); +static void itimer_fini(timer_pool_t *tp); static odp_timer_pool_t timer_pool_new(const char *name, const odp_timer_pool_param_t *param) @@ -235,7 +235,7 @@ static odp_timer_pool_t timer_pool_new(const char *name, __odp_errno = ENFILE; /* Table overflow */ return ODP_TIMER_POOL_INVALID; } - size_t sz0 = ROUNDUP_CACHE_LINE(sizeof(odp_timer_pool)); + size_t sz0 = ROUNDUP_CACHE_LINE(sizeof(timer_pool_t)); size_t sz1 = ROUNDUP_CACHE_LINE(sizeof(tick_buf_t) * param->num_timers); size_t sz2 = ROUNDUP_CACHE_LINE(sizeof(odp_timer) * param->num_timers); odp_shm_t shm = odp_shm_reserve(name, sz0 + sz1 + sz2, @@ -243,7 +243,7 @@ static odp_timer_pool_t timer_pool_new(const char *name, if (odp_unlikely(shm == ODP_SHM_INVALID)) ODP_ABORT("%s: timer pool shm-alloc(%zuKB) failed\n", name, (sz0 + sz1 + sz2) / 1024); - odp_timer_pool *tp = (odp_timer_pool *)odp_shm_addr(shm); + timer_pool_t *tp = (timer_pool_t *)odp_shm_addr(shm); odp_atomic_init_u64(&tp->cur_tick, 0); if (name == NULL) { @@ -292,7 +292,7 @@ static void block_sigalarm(void) sigprocmask(SIG_BLOCK, &sigset, NULL); } -static void stop_timer_thread(odp_timer_pool *tp) +static void stop_timer_thread(timer_pool_t *tp) { int ret; @@ -303,7 +303,7 @@ static void stop_timer_thread(odp_timer_pool *tp) ODP_ABORT("unable to join thread, err %d\n", ret); } -static void odp_timer_pool_del(odp_timer_pool *tp) +static void odp_timer_pool_del(timer_pool_t *tp) { odp_spinlock_lock(&tp->lock); timer_pool[tp->tp_idx] = NULL; @@ -326,7 +326,7 @@ static void odp_timer_pool_del(odp_timer_pool *tp) odp_atomic_sub_u32(&num_timer_pools, 1); } -static inline odp_timer_t timer_alloc(odp_timer_pool *tp, +static inline odp_timer_t timer_alloc(timer_pool_t *tp, odp_queue_t queue, void *user_ptr) { @@ -357,11 +357,11 @@ static inline odp_timer_t timer_alloc(odp_timer_pool *tp, return hdl; } -static odp_buffer_t timer_cancel(odp_timer_pool *tp, - uint32_t idx, - uint64_t new_state); +static odp_buffer_t timer_cancel(timer_pool_t *tp, + uint32_t idx, + uint64_t new_state); -static inline odp_buffer_t timer_free(odp_timer_pool *tp, uint32_t idx) +static inline odp_buffer_t timer_free(timer_pool_t *tp, uint32_t idx) { odp_timer *tim = &tp->timers[idx]; @@ -391,7 +391,7 @@ static inline odp_buffer_t timer_free(odp_timer_pool *tp, uint32_t idx) static bool timer_reset(uint32_t idx, uint64_t abs_tck, odp_buffer_t *tmo_buf, - odp_timer_pool *tp) + timer_pool_t *tp) { bool success = true; tick_buf_t *tb = &tp->tick_buf[idx]; @@ -522,9 +522,9 @@ static bool timer_reset(uint32_t idx, return success; } -static odp_buffer_t timer_cancel(odp_timer_pool *tp, - uint32_t idx, - uint64_t new_state) +static odp_buffer_t timer_cancel(timer_pool_t *tp, + uint32_t idx, + uint64_t new_state) { tick_buf_t *tb = &tp->tick_buf[idx]; odp_buffer_t old_buf; @@ -561,7 +561,7 @@ static odp_buffer_t timer_cancel(odp_timer_pool *tp, return old_buf; } -static unsigned timer_expire(odp_timer_pool *tp, uint32_t idx, uint64_t tick) +static unsigned timer_expire(timer_pool_t *tp, uint32_t idx, uint64_t tick) { odp_timer *tim = &tp->timers[idx]; tick_buf_t *tb = &tp->tick_buf[idx]; @@ -677,7 +677,7 @@ static unsigned odp_timer_pool_expire(odp_timer_pool_t tpid, uint64_t tick) * Functions that use Linux/POSIX per-process timers and related facilities *****************************************************************************/ -static void timer_notify(odp_timer_pool *tp) +static void timer_notify(timer_pool_t *tp) { int overrun; int64_t prev_tick; @@ -707,7 +707,7 @@ static void timer_notify(odp_timer_pool *tp) static void *timer_thread(void *arg) { - odp_timer_pool *tp = (odp_timer_pool *)arg; + timer_pool_t *tp = (timer_pool_t *)arg; sigset_t sigset; int ret; struct timespec tmo; @@ -737,7 +737,7 @@ static void *timer_thread(void *arg) return NULL; } -static void itimer_init(odp_timer_pool *tp) +static void itimer_init(timer_pool_t *tp) { struct sigevent sigev; struct itimerspec ispec; @@ -782,7 +782,7 @@ static void itimer_init(odp_timer_pool *tp) strerror(errno)); } -static void itimer_fini(odp_timer_pool *tp) +static void itimer_fini(timer_pool_t *tp) { if (timer_delete(tp->timerid) != 0) ODP_ABORT("timer_delete() returned error %s\n", @@ -868,7 +868,7 @@ odp_timer_t odp_timer_alloc(odp_timer_pool_t tpid, odp_event_t odp_timer_free(odp_timer_t hdl) { - odp_timer_pool *tp = handle_to_tp(hdl); + timer_pool_t *tp = handle_to_tp(hdl); uint32_t idx = handle_to_idx(hdl, tp); odp_buffer_t old_buf = timer_free(tp, idx); return odp_buffer_to_event(old_buf); @@ -878,9 +878,10 @@ int odp_timer_set_abs(odp_timer_t hdl, uint64_t abs_tck, odp_event_t *tmo_ev) { - odp_timer_pool *tp = handle_to_tp(hdl); + timer_pool_t *tp = handle_to_tp(hdl); uint32_t idx = handle_to_idx(hdl, tp); uint64_t cur_tick = odp_atomic_load_u64(&tp->cur_tick); + if (odp_unlikely(abs_tck < cur_tick + tp->min_rel_tck)) return ODP_TIMER_TOOEARLY; if (odp_unlikely(abs_tck > cur_tick + tp->max_rel_tck)) @@ -895,7 +896,7 @@ int odp_timer_set_rel(odp_timer_t hdl, uint64_t rel_tck, odp_event_t *tmo_ev) { - odp_timer_pool *tp = handle_to_tp(hdl); + timer_pool_t *tp = handle_to_tp(hdl); uint32_t idx = handle_to_idx(hdl, tp); uint64_t abs_tck = odp_atomic_load_u64(&tp->cur_tick) + rel_tck; if (odp_unlikely(rel_tck < tp->min_rel_tck)) @@ -910,7 +911,7 @@ int odp_timer_set_rel(odp_timer_t hdl, int odp_timer_cancel(odp_timer_t hdl, odp_event_t *tmo_ev) { - odp_timer_pool *tp = handle_to_tp(hdl); + timer_pool_t *tp = handle_to_tp(hdl); uint32_t idx = handle_to_idx(hdl, tp); /* Set the expiration tick of the timer to TMO_INACTIVE */ odp_buffer_t old_buf = timer_cancel(tp, idx, TMO_INACTIVE); @@ -949,7 +950,7 @@ int odp_timeout_fresh(odp_timeout_t tmo) { const odp_timeout_hdr_t *hdr = timeout_hdr(tmo); odp_timer_t hdl = hdr->timer; - odp_timer_pool *tp = handle_to_tp(hdl); + timer_pool_t *tp = handle_to_tp(hdl); uint32_t idx = handle_to_idx(hdl, tp); tick_buf_t *tb = &tp->tick_buf[idx]; #if __GCC_ATOMIC_LLONG_LOCK_FREE < 2 From patchwork Tue Oct 10 15:00:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 115414 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp3860498qgn; Tue, 10 Oct 2017 08:05:29 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBZIIUv0+FlChiKf8dYAjJ7n5keBE9BKhnC+yVw4sw4TZulRfNouG522l8nAhLOji0a/Kky X-Received: by 10.107.201.144 with SMTP id z138mr4872488iof.223.1507647929333; Tue, 10 Oct 2017 08:05:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507647929; cv=none; d=google.com; s=arc-20160816; b=1KKmELDOhKCW9IR/7eR4CD8BwD1L37nVbLzm+rlQ/S/T9XonqQafg5zCiuBay67pxJ g585dGy3rfVTaNeqL2e5AAoBNvE6M6QMnZNJKEmQbix5pqPzKulAtFmqS+ALupt4h4/u iTdFuHBMAZ734E7kJrHXPmf4KvRLjZ5pcjdvJCCvFKmMT7cUGxBFGwLTafb2Aey09OhY UmCskn5SvwqpGTWZbNxcw+3+qPlxdUKXBcmlzkYoXfEuGNMadThVqNKkJccPbJEYBmHQ bxJ/x68Xax8dHxcXFUMVT3wwyoXcWKT9Y3VFEEBNUwZ8QkZOVU5aOFKGf1tHqQG/pz0F aghA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=2zRfzq7qelY4y9Btjbr5TPyJ41jzAv+rFDewkwEgMkw=; b=Bvyj4AQVmp1vTqcW1hndHdWkc0XtrZPlqrXIpj+z3h32Y+ZwlBxH8ANC1PfoJK+EdT pYXgzNZDJLOVXRJReOjKP95DF2MAYk701aU5uleAZbNkV35vYjFiqSY1WZntT0vcEksk D16cB6ePLscumlhKa1qeXEOBGA9PFUTOKIrUzofXnZT6VihHSMgXYLW9m99yrdhSBtQm IwfiNA6e6L+qT/TiyQE7yKSRjwft0Aiu/z7i6oZFejhd/quSSZPGjQZfcGt20s5L2ruj mRbV03LvJLYdaV/kF/ALwnGu1gg34fpBT6SH1TLIlQtoKHMSttzv5S1jV4kvoptN4ISu XO5g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id y67si3683817itg.46.2017.10.10.08.05.21; Tue, 10 Oct 2017 08:05:29 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id BEBE761CBB; Tue, 10 Oct 2017 15:05:21 +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.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,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 A6A3F60D3E; Tue, 10 Oct 2017 15:01:33 +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 6F29860C03; Tue, 10 Oct 2017 15:00:56 +0000 (UTC) Received: from forward103p.mail.yandex.net (forward103p.mail.yandex.net [77.88.28.106]) by lists.linaro.org (Postfix) with ESMTPS id 066BD60C16 for ; Tue, 10 Oct 2017 15:00:48 +0000 (UTC) Received: from mxback5o.mail.yandex.net (mxback5o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1f]) by forward103p.mail.yandex.net (Yandex) with ESMTP id 7959921844F1 for ; Tue, 10 Oct 2017 18:00:46 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback5o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id YfXO8TVNFs-0kVeGuYd; Tue, 10 Oct 2017 18:00:46 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id jk0YtVglYD-0jxGRn3g; Tue, 10 Oct 2017 18:00:45 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 10 Oct 2017 18:00:09 +0300 Message-Id: <1507647610-23573-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> References: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 205 Subject: [lng-odp] [PATCH v2 3/4] linux-gen: timer: drop odp prefix from odp_timer_pool_s 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: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Maxim Uvarov internal structure should not be named with odp_. Also make code a little bit more consistent to pass type instead of struct to 2 more functions. Signed-off-by: Maxim Uvarov --- /** Email created from pull request 205 (muvarov:master_timer_cleanup) ** https://github.com/Linaro/odp/pull/205 ** Patch: https://github.com/Linaro/odp/pull/205.patch ** Base sha: 3bacbfd55edf76b897a4b2e5c62b59ca6fa95331 ** Merge commit sha: 818bddefdf4c5afa6d1608da3de280ebcf585d75 **/ platform/linux-generic/include/odp/api/plat/timer_types.h | 4 ++-- platform/linux-generic/odp_timer.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/linux-generic/include/odp/api/plat/timer_types.h b/platform/linux-generic/include/odp/api/plat/timer_types.h index a8891f11f..9605d5841 100644 --- a/platform/linux-generic/include/odp/api/plat/timer_types.h +++ b/platform/linux-generic/include/odp/api/plat/timer_types.h @@ -24,9 +24,9 @@ extern "C" { * @{ **/ -struct odp_timer_pool_s; /**< Forward declaration */ +struct timer_pool_s; /**< Forward declaration */ -typedef struct odp_timer_pool_s *odp_timer_pool_t; +typedef struct timer_pool_s *odp_timer_pool_t; #define ODP_TIMER_POOL_INVALID NULL diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 977385a7f..8b8166784 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -166,7 +166,7 @@ static inline void set_next_free(odp_timer *tim, uint32_t nf) * Inludes alloc and free timer *****************************************************************************/ -typedef struct odp_timer_pool_s { +typedef struct timer_pool_s { /* Put frequently accessed fields in the first cache line */ odp_atomic_u64_t cur_tick;/* Current tick value */ uint64_t min_rel_tck; @@ -205,7 +205,7 @@ static inline timer_pool_t *handle_to_tp(odp_timer_t hdl) } static inline uint32_t handle_to_idx(odp_timer_t hdl, - struct odp_timer_pool_s *tp) + timer_pool_t *tp) { uint32_t idx = _odp_typeval(hdl) & ((1U << INDEX_BITS) - 1U); __builtin_prefetch(&tp->tick_buf[idx], 0, 0); @@ -214,8 +214,8 @@ static inline uint32_t handle_to_idx(odp_timer_t hdl, ODP_ABORT("Invalid timer handle %#x\n", hdl); } -static inline odp_timer_t tp_idx_to_handle(struct odp_timer_pool_s *tp, - uint32_t idx) +static inline odp_timer_t tp_idx_to_handle(timer_pool_t *tp, + uint32_t idx) { ODP_ASSERT(idx < (1U << INDEX_BITS)); return _odp_cast_scalar(odp_timer_t, (tp->tp_idx << INDEX_BITS) | idx); From patchwork Tue Oct 10 15:00:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 115412 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp3857270qgn; Tue, 10 Oct 2017 08:03:12 -0700 (PDT) X-Google-Smtp-Source: AOwi7QDWHYaYDL4kXF+JBU9kPViY60faumQ+5heM5kbB/n+0AH61Cx5BOs6I+Eoyz5BK86qJAsGx X-Received: by 10.36.160.136 with SMTP id o130mr6157143ite.36.1507647792420; Tue, 10 Oct 2017 08:03:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507647792; cv=none; d=google.com; s=arc-20160816; b=nCE8FdhB1iFEABG23LC7JF7dnFd/fxiNl8Elef14i2JmfoqeMx3BMHlNUkvUy6ItlG uAbEtWVI3sDanRQRtalUSM+N9sBHSl458qASqQDEohTrTOzuyCCW4ylhQFmp9Ln5Jr+i 2DTUbPzGQF8mDruYcBmMdmSKgjxRslhojOx2OAG/X6hiniD5z3Mg8hPV7mf0czDj8baK PoJDW4SoFkLBOhLXBR9iiLCqQtDH2BAobBjNKrV715jhaNL9ebWiPRcYYkQFUcHJJSS/ 62IKnkqmGf3ROqqjsI5n11W5hx6fwZscTcb6M/5HK+kFwmMDHkAJFufVf1VNsJPuN+3N S3Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=uMvFpb44XYgj6ZZhMlQ/nTpgEZeLocCCXrfsrbp7gMU=; b=AQl3foDDI7BRMB8FiSqFaSZOMCYJETGlihQqqWL7Caaus0+zCJV5enBGMydnl0TU6J N7lNzJHqMzxBysQZmXk7znZu5MsZuVuwnI8xRgtzLC3G9jgnocOCb0o8+03dp0Ma9e4+ EqoFkE4+DN3MBFldnqbH4Sdwy8qncZsGD0IPCqaYjBf7JwMwEhyLLZQpCOq9umvDPT94 tP/e3zVczY0LhLMSPsnLHl068JKJli9SxkIm2CuWPqAZTjmR8zbCanj/l4cxZCzJSSIN kZCqh2W2DdAlcR8HpZ4h30ClGcNLWcjWj/8cAwCZMgu/M2ZVBWLqZ5KzePaAznL07zr/ HNfA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id p127si8993046itd.109.2017.10.10.08.03.10; Tue, 10 Oct 2017 08:03:12 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id C81C960D87; Tue, 10 Oct 2017 15:03:09 +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=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 30DC060C79; Tue, 10 Oct 2017 15:01:14 +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 ADC0460805; Tue, 10 Oct 2017 15:00:51 +0000 (UTC) Received: from forward106j.mail.yandex.net (forward106j.mail.yandex.net [5.45.198.249]) by lists.linaro.org (Postfix) with ESMTPS id 8FE7260805 for ; Tue, 10 Oct 2017 15:00:48 +0000 (UTC) Received: from mxback5j.mail.yandex.net (mxback5j.mail.yandex.net [IPv6:2a02:6b8:0:1619::10e]) by forward106j.mail.yandex.net (Yandex) with ESMTP id 192691802C58 for ; Tue, 10 Oct 2017 18:00:47 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback5j.mail.yandex.net (nwsmtp/Yandex) with ESMTP id iYF0Fw68wp-0lga95Wg; Tue, 10 Oct 2017 18:00:47 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id jk0YtVglYD-0kxusgUY; Tue, 10 Oct 2017 18:00:46 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Tue, 10 Oct 2017 18:00:10 +0300 Message-Id: <1507647610-23573-5-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> References: <1507647610-23573-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 205 Subject: [lng-odp] [PATCH v2 4/4] linux-gen: timer: drop odp prefix from odp_timer_s 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: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Maxim Uvarov Signed-off-by: Maxim Uvarov --- /** Email created from pull request 205 (muvarov:master_timer_cleanup) ** https://github.com/Linaro/odp/pull/205 ** Patch: https://github.com/Linaro/odp/pull/205.patch ** Base sha: 3bacbfd55edf76b897a4b2e5c62b59ca6fa95331 ** Merge commit sha: 818bddefdf4c5afa6d1608da3de280ebcf585d75 **/ platform/linux-generic/odp_timer.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 8b8166784..70a9c97b7 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -116,15 +116,15 @@ ODP_ALIGNED(16) /* 16-byte atomic operations need properly aligned addresses */ ODP_STATIC_ASSERT(sizeof(tick_buf_t) == 16, "sizeof(tick_buf_t) == 16"); #endif -typedef struct odp_timer_s { +typedef struct { void *user_ptr; odp_queue_t queue;/* Used for free list when timer is free */ -} odp_timer; +} _odp_timer_t; -static void timer_init(odp_timer *tim, - tick_buf_t *tb, - odp_queue_t _q, - void *_up) +static void timer_init(_odp_timer_t *tim, + tick_buf_t *tb, + odp_queue_t _q, + void *_up) { tim->queue = _q; tim->user_ptr = _up; @@ -140,7 +140,7 @@ static void timer_init(odp_timer *tim, } /* Teardown when timer is freed */ -static void timer_fini(odp_timer *tim, tick_buf_t *tb) +static void timer_fini(_odp_timer_t *tim, tick_buf_t *tb) { ODP_ASSERT(tb->exp_tck.v == TMO_UNUSED); ODP_ASSERT(tb->tmo_buf == ODP_BUFFER_INVALID); @@ -148,13 +148,13 @@ static void timer_fini(odp_timer *tim, tick_buf_t *tb) tim->user_ptr = NULL; } -static inline uint32_t get_next_free(odp_timer *tim) +static inline uint32_t get_next_free(_odp_timer_t *tim) { /* Reusing 'queue' for next free index */ return _odp_typeval(tim->queue); } -static inline void set_next_free(odp_timer *tim, uint32_t nf) +static inline void set_next_free(_odp_timer_t *tim, uint32_t nf) { ODP_ASSERT(tim->queue == ODP_QUEUE_INVALID); /* Reusing 'queue' for next free index */ @@ -172,7 +172,7 @@ typedef struct timer_pool_s { uint64_t min_rel_tck; uint64_t max_rel_tck; tick_buf_t *tick_buf; /* Expiration tick and timeout buffer */ - odp_timer *timers; /* User pointer and queue handle (and lock) */ + _odp_timer_t *timers; /* User pointer and queue handle (and lock) */ odp_atomic_u32_t high_wm;/* High watermark of allocated timers */ odp_spinlock_t lock; uint32_t num_alloc;/* Current number of allocated timers */ @@ -237,7 +237,8 @@ static odp_timer_pool_t timer_pool_new(const char *name, } size_t sz0 = ROUNDUP_CACHE_LINE(sizeof(timer_pool_t)); size_t sz1 = ROUNDUP_CACHE_LINE(sizeof(tick_buf_t) * param->num_timers); - size_t sz2 = ROUNDUP_CACHE_LINE(sizeof(odp_timer) * param->num_timers); + size_t sz2 = ROUNDUP_CACHE_LINE(sizeof(_odp_timer_t) * + param->num_timers); odp_shm_t shm = odp_shm_reserve(name, sz0 + sz1 + sz2, ODP_CACHE_LINE_SIZE, ODP_SHM_SW_ONLY); if (odp_unlikely(shm == ODP_SHM_INVALID)) @@ -337,7 +338,7 @@ static inline odp_timer_t timer_alloc(timer_pool_t *tp, /* Remove first unused timer from free list */ ODP_ASSERT(tp->first_free != tp->param.num_timers); uint32_t idx = tp->first_free; - odp_timer *tim = &tp->timers[idx]; + _odp_timer_t *tim = &tp->timers[idx]; tp->first_free = get_next_free(tim); /* Initialize timer */ timer_init(tim, &tp->tick_buf[idx], queue, user_ptr); @@ -363,7 +364,7 @@ static odp_buffer_t timer_cancel(timer_pool_t *tp, static inline odp_buffer_t timer_free(timer_pool_t *tp, uint32_t idx) { - odp_timer *tim = &tp->timers[idx]; + _odp_timer_t *tim = &tp->timers[idx]; /* Free the timer by setting timer state to unused and * grab any timeout buffer */ @@ -563,7 +564,7 @@ static odp_buffer_t timer_cancel(timer_pool_t *tp, static unsigned timer_expire(timer_pool_t *tp, uint32_t idx, uint64_t tick) { - odp_timer *tim = &tp->timers[idx]; + _odp_timer_t *tim = &tp->timers[idx]; tick_buf_t *tb = &tp->tick_buf[idx]; odp_buffer_t tmo_buf = ODP_BUFFER_INVALID; uint64_t exp_tck; @@ -691,7 +692,7 @@ static void timer_notify(timer_pool_t *tp) } } - odp_timer *array = &tp->timers[0]; + _odp_timer_t *array = &tp->timers[0]; uint32_t i; /* Prefetch initial cache lines (match 32 above) */ for (i = 0; i < 32; i += ODP_CACHE_LINE_SIZE / sizeof(array[0]))