DPDK  22.07.0
Data Structures | Typedefs | Enumerations | Functions
rte_thread.h File Reference
#include <stdint.h>
#include <rte_os.h>
#include <rte_compat.h>

Go to the source code of this file.

Data Structures

struct  rte_thread_t
 

Typedefs

typedef struct eal_tls_key * rte_thread_key
 

Enumerations

enum  rte_thread_priority { RTE_THREAD_PRIORITY_NORMAL = 0, RTE_THREAD_PRIORITY_REALTIME_CRITICAL = 1 }
 

Functions

__rte_experimental rte_thread_t rte_thread_self (void)
 
__rte_experimental int rte_thread_set_affinity_by_id (rte_thread_t thread_id, const rte_cpuset_t *cpuset)
 
__rte_experimental int rte_thread_get_affinity_by_id (rte_thread_t thread_id, rte_cpuset_t *cpuset)
 
int rte_thread_set_affinity (rte_cpuset_t *cpusetp)
 
void rte_thread_get_affinity (rte_cpuset_t *cpusetp)
 
__rte_experimental int rte_thread_get_priority (rte_thread_t thread_id, enum rte_thread_priority *priority)
 
__rte_experimental int rte_thread_set_priority (rte_thread_t thread_id, enum rte_thread_priority priority)
 
__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 46 of file rte_thread.h.

Enumeration Type Documentation

◆ rte_thread_priority

Thread priority values.

Enumerator
RTE_THREAD_PRIORITY_NORMAL 

normal thread priority, the default

RTE_THREAD_PRIORITY_REALTIME_CRITICAL 

highest thread priority allowed

Definition at line 36 of file rte_thread.h.

Function Documentation

◆ rte_thread_self()

__rte_experimental rte_thread_t rte_thread_self ( void  )
Warning
EXPERIMENTAL: this API may change without prior notice.

Get the id of the calling thread.

Returns
Return the thread id of the calling thread.

◆ rte_thread_set_affinity_by_id()

__rte_experimental int rte_thread_set_affinity_by_id ( rte_thread_t  thread_id,
const rte_cpuset_t *  cpuset 
)
Warning
EXPERIMENTAL: this API may change without prior notice.

Set the affinity of thread 'thread_id' to the cpu set specified by 'cpuset'.

Parameters
thread_idId of the thread for which to set the affinity.
cpusetPointer to CPU affinity to set.
Returns
On success, return 0. On failure, return a positive errno-style error number.

◆ rte_thread_get_affinity_by_id()

__rte_experimental int rte_thread_get_affinity_by_id ( rte_thread_t  thread_id,
rte_cpuset_t *  cpuset 
)
Warning
EXPERIMENTAL: this API may change without prior notice.

Get the affinity of thread 'thread_id' and store it in 'cpuset'.

Parameters
thread_idId of the thread for which to get the affinity.
cpusetPointer for storing the affinity value.
Returns
On success, return 0. On failure, return a positive errno-style error number.

◆ 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_get_priority()

__rte_experimental int rte_thread_get_priority ( rte_thread_t  thread_id,
enum rte_thread_priority priority 
)
Warning
EXPERIMENTAL: this API may change without prior notice.

Get the priority of a thread.

Parameters
thread_idId of the thread for which to get priority.
priorityLocation to store the retrieved priority.
Returns
On success, return 0. On failure, return a positive errno-style error number.

◆ rte_thread_set_priority()

__rte_experimental int rte_thread_set_priority ( rte_thread_t  thread_id,
enum rte_thread_priority  priority 
)
Warning
EXPERIMENTAL: this API may change without prior notice.

Set the priority of a thread.

Parameters
thread_idId of the thread for which to set priority.
priorityPriority value to be set.
Returns
On success, return 0. On failure, return a positive errno-style error number.

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