Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_spinlock.h(3)		      DPDK		       rte_spinlock.h(3)

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 repeat-
     edly 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) [in-
     line],  [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) [in-
     line],  [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_spin-
     lock_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.

Version 25.11.0 		 Thu Aug 27 2026	       rte_spinlock.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_SPINLOCK_INITIALIZER&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help