summaryrefslogtreecommitdiffstats
path: root/src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h
diff options
context:
space:
mode:
authorIdo Barnea <ibarnea@cisco.com>2016-08-08 13:07:20 +0300
committerIdo Barnea <ibarnea@cisco.com>2016-08-08 13:07:20 +0300
commitdc56569b146966c17433fef70d4eb5456871dcc6 (patch)
tree73eb19c9aad6570007fd808e478b7a23f6ca835c /src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h
parent2067ee3de8e6664e66f872a0b5c6d1b68b99625a (diff)
removed dpdk22 files
Diffstat (limited to 'src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h')
-rw-r--r--src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h325
1 files changed, 0 insertions, 325 deletions
diff --git a/src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h b/src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h
deleted file mode 100644
index 4e0a3c30..00000000
--- a/src/dpdk22/lib/librte_eal/common/include/generic/rte_spinlock.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright(c) 2010-2014 Intel Corporation. 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 Intel Corporation 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_SPINLOCK_H_
-#define _RTE_SPINLOCK_H_
-
-/**
- * @file
- *
- * RTE Spinlocks
- *
- * This file defines an API for read-write locks, which are implemented
- * in an architecture-specific way. This kind of lock simply waits in
- * a loop repeatedly checking until the lock becomes available.
- *
- * All locks must be initialised before use, and only initialised once.
- *
- */
-
-#include <rte_lcore.h>
-#ifdef RTE_FORCE_INTRINSICS
-#include <rte_common.h>
-#endif
-
-/**
- * The rte_spinlock_t type.
- */
-typedef struct {
- volatile int locked; /**< lock status 0 = unlocked, 1 = locked */
-} rte_spinlock_t;
-
-/**
- * A static spinlock initializer.
- */
-#define RTE_SPINLOCK_INITIALIZER { 0 }
-
-/**
- * Initialize the spinlock to an unlocked state.
- *
- * @param sl
- * A pointer to the spinlock.
- */
-static inline void
-rte_spinlock_init(rte_spinlock_t *sl)
-{
- sl->locked = 0;
-}
-
-/**
- * Take the spinlock.
- *
- * @param sl
- * A pointer to the spinlock.
- */
-static inline void
-rte_spinlock_lock(rte_spinlock_t *sl);
-
-#ifdef RTE_FORCE_INTRINSICS
-static inline void
-rte_spinlock_lock(rte_spinlock_t *sl)
-{
- while (__sync_lock_test_and_set(&sl->locked, 1))
- while(sl->locked)
- rte_pause();
-}
-#endif
-
-/**
- * Release the spinlock.
- *
- * @param sl
- * A pointer to the spinlock.
- */
-static inline void
-rte_spinlock_unlock (rte_spinlock_t *sl);
-
-#ifdef RTE_FORCE_INTRINSICS
-static inline void
-rte_spinlock_unlock (rte_spinlock_t *sl)
-{
- __sync_lock_release(&sl->locked);
-}
-#endif
-
-/**
- * Try to take the lock.
- *
- * @param sl
- * A pointer to the spinlock.
- * @return
- * 1 if the lock is successfully taken; 0 otherwise.
- */
-static inline int
-rte_spinlock_trylock (rte_spinlock_t *sl);
-
-#ifdef RTE_FORCE_INTRINSICS
-static inline int
-rte_spinlock_trylock (rte_spinlock_t *sl)
-{
- return (__sync_lock_test_and_set(&sl->locked,1) == 0);
-}
-#endif
-
-/**
- * Test if the lock is taken.
- *
- * @param sl
- * A pointer to the spinlock.
- * @return
- * 1 if the lock is currently taken; 0 otherwise.
- */
-static inline int rte_spinlock_is_locked (rte_spinlock_t *sl)
-{
- return sl->locked;
-}
-
-/**
- * Test if hardware transactional memory (lock elision) is supported
- *
- * @return
- * 1 if the hardware transactional memory is supported; 0 otherwise.
- */
-static inline int rte_tm_supported(void);
-
-/**
- * Try to execute critical section in a hardware memory transaction,
- * if it fails or not available take the spinlock.
- *
- * NOTE: An attempt to perform a HW I/O operation inside a hardware memory
- * transaction always aborts the transaction since the CPU is not able to
- * roll-back should the transaction fail. Therefore, hardware transactional
- * locks are not advised to be used around rte_eth_rx_burst() and
- * rte_eth_tx_burst() calls.
- *
- * @param sl
- * A pointer to the spinlock.
- */
-static inline void
-rte_spinlock_lock_tm(rte_spinlock_t *sl);
-
-/**
- * Commit hardware memory transaction or release the spinlock if
- * the spinlock is used as a fall-back
- *
- * @param sl
- * A pointer to the spinlock.
- */
-static inline void
-rte_spinlock_unlock_tm(rte_spinlock_t *sl);
-
-/**
- * Try to execute critical section in a hardware memory transaction,
- * if it fails or not available try to take the lock.
- *
- * NOTE: An attempt to perform a HW I/O operation inside a hardware memory
- * transaction always aborts the transaction since the CPU is not able to
- * roll-back should the transaction fail. Therefore, hardware transactional
- * locks are not advised to be used around rte_eth_rx_burst() and
- * rte_eth_tx_burst() calls.
- *
- * @param sl
- * A pointer to the spinlock.
- * @return
- * 1 if the hardware memory transaction is successfully started
- * or lock is successfully taken; 0 otherwise.
- */
-static inline int
-rte_spinlock_trylock_tm(rte_spinlock_t *sl);
-
-/**
- * The rte_spinlock_recursive_t type.
- */
-typedef struct {
- rte_spinlock_t sl; /**< the actual spinlock */
- volatile int user; /**< core id using lock, -1 for unused */
- volatile int count; /**< count of time this lock has been called */
-} rte_spinlock_recursive_t;
-
-/**
- * A static recursive spinlock initializer.
- */
-#define RTE_SPINLOCK_RECURSIVE_INITIALIZER {RTE_SPINLOCK_INITIALIZER, -1, 0}
-
-/**
- * Initialize the recursive spinlock to an unlocked state.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- */
-static inline void rte_spinlock_recursive_init(rte_spinlock_recursive_t *slr)
-{
- rte_spinlock_init(&slr->sl);
- slr->user = -1;
- slr->count = 0;
-}
-
-/**
- * Take the recursive spinlock.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- */
-static inline void rte_spinlock_recursive_lock(rte_spinlock_recursive_t *slr)
-{
- int id = rte_gettid();
-
- if (slr->user != id) {
- rte_spinlock_lock(&slr->sl);
- slr->user = id;
- }
- slr->count++;
-}
-/**
- * Release the recursive spinlock.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- */
-static inline void rte_spinlock_recursive_unlock(rte_spinlock_recursive_t *slr)
-{
- if (--(slr->count) == 0) {
- slr->user = -1;
- rte_spinlock_unlock(&slr->sl);
- }
-
-}
-
-/**
- * Try to take the recursive lock.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- * @return
- * 1 if the lock is successfully taken; 0 otherwise.
- */
-static inline int rte_spinlock_recursive_trylock(rte_spinlock_recursive_t *slr)
-{
- int id = rte_gettid();
-
- if (slr->user != id) {
- if (rte_spinlock_trylock(&slr->sl) == 0)
- return 0;
- slr->user = id;
- }
- slr->count++;
- return 1;
-}
-
-
-/**
- * Try to execute critical section in a hardware memory transaction,
- * if it fails or not available take the recursive spinlocks
- *
- * NOTE: An attempt to perform a HW I/O operation inside a hardware memory
- * transaction always aborts the transaction since the CPU is not able to
- * roll-back should the transaction fail. Therefore, hardware transactional
- * locks are not advised to be used around rte_eth_rx_burst() and
- * rte_eth_tx_burst() calls.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- */
-static inline void rte_spinlock_recursive_lock_tm(
- rte_spinlock_recursive_t *slr);
-
-/**
- * Commit hardware memory transaction or release the recursive spinlock
- * if the recursive spinlock is used as a fall-back
- *
- * @param slr
- * A pointer to the recursive spinlock.
- */
-static inline void rte_spinlock_recursive_unlock_tm(
- rte_spinlock_recursive_t *slr);
-
-/**
- * Try to execute critical section in a hardware memory transaction,
- * if it fails or not available try to take the recursive lock
- *
- * NOTE: An attempt to perform a HW I/O operation inside a hardware memory
- * transaction always aborts the transaction since the CPU is not able to
- * roll-back should the transaction fail. Therefore, hardware transactional
- * locks are not advised to be used around rte_eth_rx_burst() and
- * rte_eth_tx_burst() calls.
- *
- * @param slr
- * A pointer to the recursive spinlock.
- * @return
- * 1 if the hardware memory transaction is successfully started
- * or lock is successfully taken; 0 otherwise.
- */
-static inline int rte_spinlock_recursive_trylock_tm(
- rte_spinlock_recursive_t *slr);
-
-#endif /* _RTE_SPINLOCK_H_ */