Provided by: dpdk-doc_24.11.2-2_all 

NAME
rte_spinlock.h
SYNOPSIS
#include <rte_lcore.h> #include <rte_lock_annotations.h> #include <rte_pause.h> #include <rte_stdatomic.h> Data Structures struct rte_spinlock_t struct rte_spinlock_recursive_t Macros #define RTE_SPINLOCK_INITIALIZER { 0 } #define RTE_SPINLOCK_RECURSIVE_INITIALIZER {RTE_SPINLOCK_INITIALIZER, -1, 0} Functions static void rte_spinlock_init (rte_spinlock_t *sl) static void rte_spinlock_lock (rte_spinlock_t *sl) static void rte_spinlock_unlock (rte_spinlock_t *sl) static __rte_warn_unused_result int rte_spinlock_trylock (rte_spinlock_t *sl) sl) static int rte_spinlock_is_locked (rte_spinlock_t *sl) static int rte_tm_supported (void) static void rte_spinlock_lock_tm (rte_spinlock_t *sl) static void rte_spinlock_unlock_tm (rte_spinlock_t *sl) static __rte_warn_unused_result int rte_spinlock_trylock_tm (rte_spinlock_t *sl) sl) static void rte_spinlock_recursive_init (rte_spinlock_recursive_t *slr) static void rte_spinlock_recursive_lock (rte_spinlock_recursive_t *slr) __rte_no_thread_safety_analysis static void rte_spinlock_recursive_unlock (rte_spinlock_recursive_t *slr) __rte_no_thread_safety_analysis static __rte_warn_unused_result int rte_spinlock_recursive_trylock (rte_spinlock_recursive_t *slr) __rte_no_thread_safety_analysis static void rte_spinlock_recursive_lock_tm (rte_spinlock_recursive_t *slr) static void rte_spinlock_recursive_unlock_tm (rte_spinlock_recursive_t *slr) static __rte_warn_unused_result int rte_spinlock_recursive_trylock_tm (rte_spinlock_recursive_t *slr)
Detailed Description
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. Definition in file rte_spinlock.h.
Macro Definition Documentation
#define RTE_SPINLOCK_INITIALIZER { 0 } A static spinlock initializer. Definition at line 42 of file rte_spinlock.h. #define RTE_SPINLOCK_RECURSIVE_INITIALIZER {RTE_SPINLOCK_INITIALIZER, -1, 0} A static recursive spinlock initializer. Definition at line 207 of file rte_spinlock.h.
Function Documentation
static void rte_spinlock_init (rte_spinlock_t * sl) [inline], [static] Initialize the spinlock to an unlocked state. Parameters sl A pointer to the spinlock. Definition at line 51 of file rte_spinlock.h. static void rte_spinlock_lock (rte_spinlock_t * sl) [inline], [static] Take the spinlock. Parameters sl A pointer to the spinlock. static void rte_spinlock_unlock (rte_spinlock_t * sl) [inline], [static] Release the spinlock. Parameters sl A pointer to the spinlock. static __rte_warn_unused_result int rte_spinlock_trylock (rte_spinlock_t * sl) [inline], [static] Try to take the lock. Parameters sl A pointer to the spinlock. Returns 1 if the lock is successfully taken; 0 otherwise. static int rte_spinlock_is_locked (rte_spinlock_t * sl) [inline], [static] Test if the lock is taken. Parameters sl A pointer to the spinlock. Returns 1 if the lock is currently taken; 0 otherwise. Definition at line 133 of file rte_spinlock.h. static int rte_tm_supported (void) [inline], [static] Test if hardware transactional memory (lock elision) is supported Returns 1 if the hardware transactional memory is supported; 0 otherwise. static void rte_spinlock_lock_tm (rte_spinlock_t * sl) [inline], [static] 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. Parameters sl A pointer to the spinlock. static void rte_spinlock_unlock_tm (rte_spinlock_t * sl) [inline], [static] Commit hardware memory transaction or release the spinlock if the spinlock is used as a fall-back Parameters sl A pointer to the spinlock. static __rte_warn_unused_result int rte_spinlock_trylock_tm (rte_spinlock_t * sl) [inline], [static] 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. Parameters sl A pointer to the spinlock. Returns 1 if the hardware memory transaction is successfully started or lock is successfully taken; 0 otherwise. static void rte_spinlock_recursive_init (rte_spinlock_recursive_t * slr) [inline], [static] Initialize the recursive spinlock to an unlocked state. Parameters slr A pointer to the recursive spinlock. Definition at line 215 of file rte_spinlock.h. static void rte_spinlock_recursive_lock (rte_spinlock_recursive_t * slr) [inline], [static] Take the recursive spinlock. Parameters slr A pointer to the recursive spinlock. Definition at line 228 of file rte_spinlock.h. static void rte_spinlock_recursive_unlock (rte_spinlock_recursive_t * slr) [inline], [static] Release the recursive spinlock. Parameters slr A pointer to the recursive spinlock. Definition at line 245 of file rte_spinlock.h. static __rte_warn_unused_result int rte_spinlock_recursive_trylock (rte_spinlock_recursive_t * slr) [inline], [static] Try to take the recursive lock. Parameters slr A pointer to the recursive spinlock. Returns 1 if the lock is successfully taken; 0 otherwise. Definition at line 264 of file rte_spinlock.h. static void rte_spinlock_recursive_lock_tm (rte_spinlock_recursive_t * slr) [inline], [static] 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. Parameters slr A pointer to the recursive spinlock. static void rte_spinlock_recursive_unlock_tm (rte_spinlock_recursive_t * slr) [inline], [static] Commit hardware memory transaction or release the recursive spinlock if the recursive spinlock is used as a fall-back Parameters slr A pointer to the recursive spinlock. static __rte_warn_unused_result int rte_spinlock_recursive_trylock_tm (rte_spinlock_recursive_t * slr) [inline], [static] 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. Parameters slr A pointer to the recursive spinlock. Returns 1 if the hardware memory transaction is successfully started or lock is successfully taken; 0 otherwise.
Author
Generated automatically by Doxygen for DPDK from the source code. DPDK Version 24.11.2 rte_spinlock.h(3)