DPDK: Data Plane Development Kit

18.02.0-rc0
rte_lcore.h File Reference
#include <rte_per_lcore.h>
#include <rte_eal.h>
#include <rte_launch.h>

Go to the source code of this file.

Data Structures

struct  lcore_config

Macros

#define LCORE_ID_ANY   UINT32_MAX
#define RTE_LCORE_FOREACH(i)
#define RTE_LCORE_FOREACH_SLAVE(i)

Functions

 RTE_DECLARE_PER_LCORE (unsigned, _lcore_id)
 RTE_DECLARE_PER_LCORE (rte_cpuset_t, _cpuset)
static unsigned rte_lcore_id (void)
static unsigned rte_get_master_lcore (void)
static unsigned rte_lcore_count (void)
static int rte_lcore_index (int lcore_id)
unsigned rte_socket_id (void)
static unsigned rte_lcore_to_socket_id (unsigned lcore_id)
static int rte_lcore_is_enabled (unsigned lcore_id)
static unsigned rte_get_next_lcore (unsigned i, int skip_master, int wrap)
int rte_thread_set_affinity (rte_cpuset_t *cpusetp)
void rte_thread_get_affinity (rte_cpuset_t *cpusetp)
int rte_thread_setname (pthread_t id, const char *name)
int rte_lcore_has_role (unsigned int lcore_id, enum rte_lcore_role_t role)

Variables

struct lcore_config lcore_config [RTE_MAX_LCORE]

Detailed Description

API for lcore and socket manipulation

Definition in file rte_lcore.h.

Macro Definition Documentation

#define LCORE_ID_ANY   UINT32_MAX

Any lcore.

Definition at line 51 of file rte_lcore.h.

#define RTE_LCORE_FOREACH (   i)

Function Documentation

RTE_DECLARE_PER_LCORE ( unsigned  ,
_lcore_id   
)

Per thread "lcore id".

RTE_DECLARE_PER_LCORE ( rte_cpuset_t  ,
_cpuset   
)

Per thread "cpuset".

static unsigned rte_lcore_id ( void  )
inlinestatic

Return the ID of the execution unit we are running on.

Returns
Logical core ID (in EAL thread) or LCORE_ID_ANY (in non-EAL thread)
Examples:
examples/bond/main.c, examples/distributor/main.c, examples/ethtool/ethtool-app/main.c, examples/eventdev_pipeline_sw_pmd/main.c, examples/exception_path/main.c, examples/flow_classify/flow_classify.c, examples/helloworld/main.c, examples/ip_fragmentation/main.c, examples/ip_pipeline/thread.c, examples/ip_reassembly/main.c, examples/ipsec-secgw/ipsec-secgw.c, examples/ipsec-secgw/ipsec.c, examples/ipv4_multicast/main.c, examples/kni/main.c, examples/l2fwd-cat/l2fwd-cat.c, examples/l2fwd-crypto/main.c, examples/l2fwd-jobstats/main.c, examples/l2fwd-keepalive/main.c, examples/l2fwd/main.c, examples/l3fwd-acl/main.c, examples/l3fwd-power/main.c, examples/l3fwd-vf/main.c, examples/l3fwd/l3fwd_em.c, examples/l3fwd/l3fwd_lpm.c, examples/link_status_interrupt/main.c, examples/load_balancer/runtime.c, examples/multi_process/client_server_mp/mp_server/main.c, examples/multi_process/l2fwd_fork/flib.c, examples/multi_process/l2fwd_fork/main.c, examples/multi_process/simple_mp/main.c, examples/multi_process/symmetric_mp/main.c, examples/packet_ordering/main.c, examples/performance-thread/common/lthread.c, examples/performance-thread/common/lthread_diag.c, examples/performance-thread/common/lthread_sched.c, examples/performance-thread/l3fwd-thread/main.c, examples/performance-thread/pthread_shim/main.c, examples/ptpclient/ptpclient.c, examples/qos_meter/main.c, examples/qos_sched/main.c, examples/quota_watermark/qw/main.c, examples/rxtx_callbacks/main.c, examples/server_node_efd/server/main.c, examples/skeleton/basicfwd.c, examples/tep_termination/main.c, examples/timer/main.c, examples/vhost/main.c, examples/vmdq/main.c, and examples/vmdq_dcb/main.c.

Definition at line 93 of file rte_lcore.h.

static int rte_lcore_index ( int  lcore_id)
inlinestatic

Return the index of the lcore starting from zero. The order is physical or given by command line (-l option).

Parameters
lcore_idThe targeted lcore, or -1 for the current one.
Returns
The relative index, or -1 if not enabled.
Examples:
examples/performance-thread/common/lthread_sched.c.

Definition at line 133 of file rte_lcore.h.

static unsigned rte_lcore_to_socket_id ( unsigned  lcore_id)
inlinestatic
static unsigned rte_get_next_lcore ( unsigned  i,
int  skip_master,
int  wrap 
)
inlinestatic

Get the next enabled lcore ID.

Parameters
iThe current lcore (reference).
skip_masterIf true, do not return the ID of the master lcore.
wrapIf true, go back to 0 when RTE_MAX_LCORE is reached; otherwise, return RTE_MAX_LCORE.
Returns
The next lcore_id or RTE_MAX_LCORE if not found.
Examples:
examples/bond/main.c, examples/ethtool/ethtool-app/main.c, examples/timer/main.c, and examples/vm_power_manager/main.c.

Definition at line 196 of file rte_lcore.h.

int rte_thread_set_affinity ( rte_cpuset_t *  cpusetp)

Set core affinity of the current thread. Support both EAL and non-EAL thread and update TLS.

Parameters
cpusetpPoint to cpu_set_t for setting current thread affinity.
Returns
On success, return 0; otherwise return -1;
void rte_thread_get_affinity ( rte_cpuset_t *  cpusetp)

Get core affinity of the current thread.

Parameters
cpusetpPoint to cpu_set_t for getting current thread cpu affinity. It presumes input is not NULL, otherwise it causes panic.
int rte_thread_setname ( pthread_t  id,
const char *  name 
)

Set thread names.

Note
It fails with glibc < 2.12.
Parameters
idThread id.
nameThread name to set.
Returns
On success, return 0; otherwise return a negative value.
Examples:
examples/tep_termination/main.c, and examples/vhost/main.c.
int rte_lcore_has_role ( unsigned int  lcore_id,
enum rte_lcore_role_t  role 
)

Test if the core supplied has a specific role

Parameters
lcore_idThe identifier of the lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
roleThe role to be checked against.
Returns
On success, return 0; otherwise return a negative value.

Variable Documentation

struct lcore_config lcore_config[RTE_MAX_LCORE]

Internal configuration (per-lcore)