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) provides 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 acquired the lock.

Definition in file rte_mcslock.h.

Typedef Documentation

  typedef struct rte_mcslock rte_mcslock_t
The rte_mcslock_t type.

Function Documentation

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

  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.

  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.

  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.