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

NAME
     rte_mcslock.h

SYNOPSIS
     #include <rte_lcore.h>
     #include <rte_common.h>
     #include <rte_pause.h>
     #include <rte_branch_prediction.h>
     #include <rte_stdatomic.h>

   Data Structures
     struct rte_mcslock

   Typedefs
     typedef struct rte_mcslock rte_mcslock_t

   Functions
     static void rte_mcslock_lock (1(rte_mcslock_t *) *msl, rte_mcslock_t *me)
     static void rte_mcslock_unlock (1(rte_mcslock_t *) *msl, 1(rte_mcslock_t *)
	 me)
     static int rte_mcslock_trylock (1(rte_mcslock_t *) *msl, rte_mcslock_t *me)
     static int rte_mcslock_is_locked (1(rte_mcslock_t *) msl)

Detailed Description
     RTE MCS lock

     This file defines the main data structure and APIs for MCS queued lock.

     The MCS lock (proposed by John M. Mellor-Crummey and Michael L. Scott) pro-
     vides  scalability  by spinning on a CPU/thread local variable which avoids
     expensive cache bouncings. It provides fairness by maintaining  a	list  of
     acquirers	and  passing  the  lock to each CPU/thread in the order they ac-
     quired the lock.

     Definition in file rte_mcslock.h.

Typedef Documentation
   typedef struct rte_mcslock rte_mcslock_t
     The rte_mcslock_t type.

Function Documentation
   static void rte_mcslock_lock (1(rte_mcslock_t *) * msl, rte_mcslock_t  *  me)
     [inline],	[static]
     Take the MCS lock.

     Parameters
	 msl  A  pointer to the pointer of a MCS lock. When the lock is initial-
	 ized or declared, the msl pointer should be set to NULL.
	 me A pointer to a new node of MCS lock. Each CPU/thread  acquiring  the
	 lock should use its 'own node'.

     Definition at line 52 of file rte_mcslock.h.

   static  void rte_mcslock_unlock (1(rte_mcslock_t *) * msl, 1(rte_mcslock_t *)
     me) [inline],  [static]
     Release the MCS lock.

     Parameters
	 msl A pointer to the pointer of a MCS lock.
	 me A pointer to the node of MCS lock passed in rte_mcslock_lock.

     Definition at line 116 of file rte_mcslock.h.

   static int rte_mcslock_trylock (1(rte_mcslock_t *) * msl, rte_mcslock_t * me)
     [inline],	[static]
     Try to take the lock.

     Parameters
	 msl A pointer to the pointer of a MCS lock.
	 me A pointer to a new node of MCS lock.

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

     Definition at line 172 of file rte_mcslock.h.

   static int rte_mcslock_is_locked (1(rte_mcslock_t *) msl) [inline],	[static]

     Test if the lock is taken.

     Parameters
	 msl A pointer to a MCS lock node.

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

     Definition at line 199 of file rte_mcslock.h.

Author
     Generated automatically by Doxygen for DPDK from the source code.

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

home | help