logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                               rte_spinlock.h(3)

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.

Function Documentation

staticvoidrte_spinlock_init(rte_spinlock_t*sl)[inline],[static]
       Initialize the spinlock to an unlocked state.

       Parameterssl A pointer to the spinlock.

       Definition at line 51 of file rte_spinlock.h.

   staticvoidrte_spinlock_lock(rte_spinlock_t*sl)[inline],[static]
       Take the spinlock.

       Parameterssl A pointer to the spinlock.

   staticvoidrte_spinlock_unlock(rte_spinlock_t*sl)[inline],[static]
       Release the spinlock.

       Parameterssl A pointer to the spinlock.

   static__rte_warn_unused_resultintrte_spinlock_trylock(rte_spinlock_t*sl)[inline],[static]
       Try to take the lock.

       Parameterssl A pointer to the spinlock.

       Returns
           1 if the lock is successfully taken; 0 otherwise.

   staticintrte_spinlock_is_locked(rte_spinlock_t*sl)[inline],[static]
       Test if the lock is taken.

       Parameterssl A pointer to the spinlock.

       Returns
           1 if the lock is currently taken; 0 otherwise.

       Definition at line 133 of file rte_spinlock.h.

   staticintrte_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.

   staticvoidrte_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.

       Parameterssl A pointer to the spinlock.

   staticvoidrte_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

       Parameterssl A pointer to the spinlock.

   static__rte_warn_unused_resultintrte_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.

       Parameterssl A pointer to the spinlock.

       Returns
           1 if the hardware memory transaction is successfully started or lock is successfully taken; 0
           otherwise.

   staticvoidrte_spinlock_recursive_init(rte_spinlock_recursive_t*slr)[inline],[static]
       Initialize the recursive spinlock to an unlocked state.

       Parametersslr A pointer to the recursive spinlock.

       Definition at line 215 of file rte_spinlock.h.

   staticvoidrte_spinlock_recursive_lock(rte_spinlock_recursive_t*slr)[inline],[static]
       Take the recursive spinlock.

       Parametersslr A pointer to the recursive spinlock.

       Definition at line 228 of file rte_spinlock.h.

   staticvoidrte_spinlock_recursive_unlock(rte_spinlock_recursive_t*slr)[inline],[static]
       Release the recursive spinlock.

       Parametersslr A pointer to the recursive spinlock.

       Definition at line 245 of file rte_spinlock.h.

   static__rte_warn_unused_resultintrte_spinlock_recursive_trylock(rte_spinlock_recursive_t*slr)[inline],[static]
       Try to take the recursive lock.

       Parametersslr 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.

   staticvoidrte_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.

       Parametersslr A pointer to the recursive spinlock.

   staticvoidrte_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

       Parametersslr A pointer to the recursive spinlock.

   static__rte_warn_unused_resultintrte_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.

       Parametersslr A pointer to the recursive spinlock.

       Returns
           1 if the hardware memory transaction is successfully started or lock is successfully taken; 0
           otherwise.

Macro Definition Documentation

#defineRTE_SPINLOCK_INITIALIZER{0}
       A static spinlock initializer.

       Definition at line 42 of file rte_spinlock.h.

   #defineRTE_SPINLOCK_RECURSIVE_INITIALIZER{RTE_SPINLOCK_INITIALIZER,-1,0}
       A static recursive spinlock initializer.

       Definition at line 207 of file rte_spinlock.h.

Name

       rte_spinlock.h

Synopsis

       #include <rte_lcore.h>
       #include <rte_lock_annotations.h>
       #include <rte_pause.h>
       #include <rte_stdatomic.h>

   DataStructures
       struct rte_spinlock_t
       struct rte_spinlock_recursive_tMacros
       #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)

See Also