DPDK  21.08.0
Typedefs | Functions
rte_thread.h File Reference
#include <rte_os.h>
#include <rte_compat.h>

Go to the source code of this file.

Typedefs

typedef struct eal_tls_key * rte_thread_key
 

Functions

int rte_thread_set_affinity (rte_cpuset_t *cpusetp)
 
void rte_thread_get_affinity (rte_cpuset_t *cpusetp)
 
__rte_experimental int rte_thread_key_create (rte_thread_key *key, void(*destructor)(void *))
 
__rte_experimental int rte_thread_key_delete (rte_thread_key key)
 
__rte_experimental int rte_thread_value_set (rte_thread_key key, const void *value)
 
__rte_experimental void * rte_thread_value_get (rte_thread_key key)
 

Detailed Description

Threading functions

Simple threads functionality supplied by EAL.

Definition in file rte_thread.h.

Typedef Documentation

◆ rte_thread_key

typedef struct eal_tls_key* rte_thread_key

TLS key type, an opaque pointer.

Definition at line 26 of file rte_thread.h.

Function Documentation

◆ rte_thread_set_affinity()

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
cpusetpPointer to CPU affinity to set.
Returns
On success, return 0; otherwise return -1;

◆ rte_thread_get_affinity()

void rte_thread_get_affinity ( rte_cpuset_t *  cpusetp)

Get core affinity of the current thread.

Parameters
cpusetpPointer to CPU affinity of current thread. It presumes input is not NULL, otherwise it causes panic.

◆ rte_thread_key_create()

__rte_experimental int rte_thread_key_create ( rte_thread_key key,
void(*)(void *)  destructor 
)

Create a TLS data key visible to all threads in the process. the created key is later used to get/set a value. and optional destructor can be set to be called when a thread exits.

Parameters
keyPointer to store the allocated key.
destructorThe function to be called when the thread exits. Ignored on Windows OS.
Returns
On success, zero. On failure, a negative number and an error number is set in rte_errno. rte_errno can be: ENOMEM - Memory allocation error. ENOEXEC - Specific OS error.

◆ rte_thread_key_delete()

__rte_experimental int rte_thread_key_delete ( rte_thread_key  key)

Delete a TLS data key visible to all threads in the process.

Parameters
keyThe key allocated by rte_thread_key_create().
Returns
On success, zero. On failure, a negative number and an error number is set in rte_errno. rte_errno can be: EINVAL - Invalid parameter passed. ENOEXEC - Specific OS error.

◆ rte_thread_value_set()

__rte_experimental int rte_thread_value_set ( rte_thread_key  key,
const void *  value 
)

Set value bound to the TLS key on behalf of the calling thread.

Parameters
keyThe key allocated by rte_thread_key_create().
valueThe value bound to the rte_thread_key key for the calling thread.
Returns
On success, zero. On failure, a negative number and an error number is set in rte_errno. rte_errno can be: EINVAL - Invalid parameter passed. ENOEXEC - Specific OS error.

◆ rte_thread_value_get()

__rte_experimental void* rte_thread_value_get ( rte_thread_key  key)

Get value bound to the TLS key on behalf of the calling thread.

Parameters
keyThe key allocated by rte_thread_key_create().
Returns
On success, value data pointer (can also be NULL). On failure, NULL and an error number is set in rte_errno. rte_errno can be: EINVAL - Invalid parameter passed. ENOEXEC - Specific OS error.