All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] eal: change rte pause as architecture specific function
@ 2017-05-11 10:10 Jerin Jacob
  2017-05-11 10:10 ` [PATCH 2/6] eal/arm32: rte pause implementation for arm32 Jerin Jacob
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Jerin Jacob @ 2017-05-11 10:10 UTC (permalink / raw)
  To: dev; +Cc: thomas, jianbo.liu, viktorin, Jerin Jacob

Each architecture may have different instructions for optimized
and power consumption aware rte_pause() implementation.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 doc/api/doxy-api-index.md                         |  3 +-
 lib/librte_eal/common/Makefile                    |  2 +-
 lib/librte_eal/common/include/generic/rte_pause.h | 52 +++++++++++++++++++++++
 3 files changed, 55 insertions(+), 2 deletions(-)
 create mode 100644 lib/librte_eal/common/include/generic/rte_pause.h

diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md
index f5f1f199f..a6f3fedd4 100644
--- a/doc/api/doxy-api-index.md
+++ b/doc/api/doxy-api-index.md
@@ -77,7 +77,8 @@ There are many libraries, so their headers may be grouped by topics:
   [SIMD]               (@ref rte_vect.h),
   [byte order]         (@ref rte_byteorder.h),
   [CPU flags]          (@ref rte_cpuflags.h),
-  [I/O access]         (@ref rte_io.h)
+  [I/O access]         (@ref rte_io.h),
+  [cpu pause]          (@ref rte_pause.h)
 
 - **CPU multicore**:
   [interrupts]         (@ref rte_interrupts.h),
diff --git a/lib/librte_eal/common/Makefile b/lib/librte_eal/common/Makefile
index a5bd1089a..fb1e2aab6 100644
--- a/lib/librte_eal/common/Makefile
+++ b/lib/librte_eal/common/Makefile
@@ -44,7 +44,7 @@ INC += rte_malloc.h rte_keepalive.h rte_time.h
 
 GENERIC_INC := rte_atomic.h rte_byteorder.h rte_cycles.h rte_prefetch.h
 GENERIC_INC += rte_spinlock.h rte_memcpy.h rte_cpuflags.h rte_rwlock.h
-GENERIC_INC += rte_vect.h rte_io.h
+GENERIC_INC += rte_vect.h rte_io.h rte_pause.h
 
 # defined in mk/arch/$(RTE_ARCH)/rte.vars.mk
 ARCH_DIR ?= $(RTE_ARCH)
diff --git a/lib/librte_eal/common/include/generic/rte_pause.h b/lib/librte_eal/common/include/generic/rte_pause.h
new file mode 100644
index 000000000..9625e580c
--- /dev/null
+++ b/lib/librte_eal/common/include/generic/rte_pause.h
@@ -0,0 +1,52 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2017 Cavium. All rights reserved.
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of Cavium nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _RTE_PAUSE_H_
+#define _RTE_PAUSE_H_
+
+/**
+ * @file
+ *
+ * CPU pause operation.
+ *
+ */
+
+/**
+ * Pause CPU execution for a short while
+ *
+ * This call is intended for tight loops which poll a shared resource or wait
+ * for an event. A short pause within the loop may reduce the power consumption.
+ */
+static inline void rte_pause(void);
+
+#endif /* _RTE_PAUSE_H_ */
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-07-03 21:59 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-11 10:10 [PATCH 1/6] eal: change rte pause as architecture specific function Jerin Jacob
2017-05-11 10:10 ` [PATCH 2/6] eal/arm32: rte pause implementation for arm32 Jerin Jacob
2017-05-18  8:11   ` Jan Viktorin
2017-05-18  9:14     ` Jianbo Liu
2017-05-11 10:10 ` [PATCH 3/6] eal/arm64: rte pause implementation for arm64 Jerin Jacob
2017-05-18  9:40   ` Jianbo Liu
2017-05-18 10:16     ` Jerin Jacob
2017-05-19  1:46       ` Jianbo Liu
2017-05-11 10:10 ` [PATCH 4/6] eal/x86: rte pause implementation for x86 Jerin Jacob
2017-05-11 10:10 ` [PATCH 5/6] eal/ppc64: rte pause implementation for ppc64 Jerin Jacob
2017-05-18  6:35   ` Chao Zhu
2017-05-11 10:10 ` [PATCH 6/6] eal: switchover to architecture specific rte pause function Jerin Jacob
2017-06-05  8:58 ` [PATCH v2 1/6] eal: change rte pause as architecture specific function Jerin Jacob
2017-06-05  8:58   ` [PATCH v2 2/6] eal/arm32: rte pause implementation for arm32 Jerin Jacob
2017-06-05  8:58   ` [PATCH v2 3/6] eal/arm64: rte pause implementation for arm64 Jerin Jacob
2017-06-06  1:36     ` Jianbo Liu
2017-06-05  8:58   ` [PATCH v2 4/6] eal/x86: rte pause implementation for x86 Jerin Jacob
2017-06-05  8:58   ` [PATCH v2 5/6] eal/ppc64: rte pause implementation for ppc64 Jerin Jacob
2017-06-05  8:58   ` [PATCH v2 6/6] eal: switchover to architecture specific rte pause function Jerin Jacob
2017-07-03 21:59   ` [PATCH v2 1/6] eal: change rte pause as architecture specific function Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.