RTE_DECLARE_PER_LCORE(unsigned,_lcore_id)
Per thread 'lcore id'.
enumrte_lcore_role_trte_eal_lcore_role(unsignedintlcore_id)
Get a lcore's role.
Parameterslcore_id The identifier of the lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
Returns
The role of the lcore.
intrte_lcore_has_role(unsignedintlcore_id,enumrte_lcore_role_trole)
Test if the core supplied has a specific role
Parameterslcore_id The identifier of the lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
role The role to be checked against.
Returns
Boolean value: positive if test is true; otherwise returns 0.
staticunsignedrte_lcore_id(void)[inline],[static]
Return the Application thread ID of the execution unit.
Note: in most cases the lcore id returned here will also correspond to the processor id of the CPU on
which the thread is pinned, this will not be the case if the user has explicitly changed the thread to
core affinities using --lcores EAL argument e.g. --lcores '(0-3)@10' to run threads with lcore IDs 0, 1,
2 and 3 on physical core 10..
Returns
Logical core ID (in EAL thread or registered non-EAL thread) or LCORE_ID_ANY (in unregistered non-EAL
thread)
Definition at line 78 of file rte_lcore.h.
unsignedintrte_get_main_lcore(void)
Get the id of the main lcore
Returns
the id of the main lcore
unsignedintrte_lcore_count(void)
Return the number of execution units (lcores) on the system.
Returns
the number of execution units (lcores) on the system.
intrte_lcore_index(intlcore_id)
Return the index of the lcore starting from zero.
When option -c or -l is given, the index corresponds to the order in the list. For example: -c 0x30,
lcore 4 has index 0, and 5 has index 1. -l 22,18 lcore 22 has index 0, and 18 has index 1.
Parameterslcore_id The targeted lcore, or -1 for the current one.
Returns
The relative index, or -1 if not enabled.
unsignedintrte_socket_id(void)
Return the ID of the physical socket of the logical core we are running on.
Returns
the ID of current lcoreid's physical socket
unsignedintrte_socket_count(void)
Return number of physical sockets detected on the system.
Note that number of nodes may not be correspondent to their physical id's: for example, a system may
report two socket id's, but the actual socket id's may be 0 and 8.
Returns
the number of physical sockets as recognized by EAL
intrte_socket_id_by_idx(unsignedintidx)
Return socket id with a particular index.
This will return socket id at a particular position in list of all detected physical socket id's. For
example, on a machine with sockets [0, 8], passing 1 as a parameter will return 8.
Parametersidx index of physical socket id to return
Returns
• physical socket id as recognized by EAL
• -1 on error, with errno set to EINVAL
unsignedintrte_lcore_to_socket_id(unsignedintlcore_id)
Get the ID of the physical socket of the specified lcore
Parameterslcore_id the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
Returns
the ID of lcoreid's physical socket
intrte_lcore_to_cpu_id(intlcore_id)
Return the id of the lcore on a socket starting from zero.
Parameterslcore_id The targeted lcore, or -1 for the current one.
Returns
The relative index, or -1 if not enabled.
rte_cpuset_trte_lcore_cpuset(unsignedintlcore_id)
Return the cpuset for a given lcore.
Parameterslcore_id the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
Returns
The cpuset of that lcore
intrte_lcore_is_enabled(unsignedintlcore_id)
Test if an lcore is enabled.
Parameterslcore_id The identifier of the lcore, which MUST be between 0 and RTE_MAX_LCORE-1.
Returns
True if the given lcore is enabled; false otherwise.
unsignedintrte_get_next_lcore(unsignedinti,intskip_main,intwrap)
Get the next enabled lcore ID.
Parametersi The current lcore (reference).
skip_main If true, do not return the ID of the main lcore.
wrap If 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.
void*rte_lcore_callback_register(constchar*name,rte_lcore_init_cbinit,rte_lcore_uninit_cbuninit,void*arg)
Register callbacks invoked when initializing and uninitializing a lcore.
This function calls the init callback with all initialized lcores. Any error reported by the init
callback triggers a rollback calling the uninit callback for each lcore. If this step succeeds, the
callbacks are put in the lcore callbacks list that will get called for each lcore allocation/release.
Note: callbacks execution is serialised under a write lock protecting the lcores and callbacks list.
Parametersname A name serving as a small description for this callback.
init The callback invoked when a lcore_id is initialized. init can be NULL.
uninit The callback invoked when a lcore_id is uninitialized. uninit can be NULL.
arg An optional argument that gets passed to the callback when it gets invoked.
Returns
On success, returns an opaque pointer for the registered object. On failure (either memory allocation
issue in the function itself or an error is returned by the init callback itself), returns NULL.
voidrte_lcore_callback_unregister(void*handle)
Unregister callbacks previously registered with rte_lcore_callback_register.
This function calls the uninit callback with all initialized lcores. The callbacks are then removed from
the lcore callbacks list.
Parametershandle The handle pointer returned by a former successful call to rte_lcore_callback_register.
intrte_lcore_iterate(rte_lcore_iterate_cbcb,void*arg)
Iterate on all active lcores (ROLE_RTE, ROLE_SERVICE and ROLE_NON_EAL). No modification on the lcore
states is allowed in the callback.
Note: as opposed to init/uninit callbacks, iteration callbacks can be invoked in parallel as they are run
under a read lock protecting the lcores and callbacks list.
Parameterscb The callback that gets passed each lcore.
arg An opaque pointer passed to cb.
Returns
Same return code as the callback last invocation (see rte_lcore_iterate_cb description).
voidrte_lcore_register_usage_cb(rte_lcore_usage_cbcb)
Register a callback from an application to be called in rte_lcore_dump() and the /eal/lcore/info
telemetry endpoint handler. Applications are expected to report lcore usage statistics via this callback.
If a callback was already registered, it can be replaced with another callback or unregistered with NULL.
The previously registered callback may remain in use for an undetermined period of time.
Parameterscb The callback function.
voidrte_lcore_dump(FILE*f)
List all lcores.
Parametersf The output stream where the dump should be sent.
intrte_thread_register(void)
Register current non-EAL thread as a lcore.
Note
This API is not compatible with the multi-process feature:
• if a primary process registers a non-EAL thread, then no secondary process will initialise.
• if a secondary process initialises successfully, trying to register a non-EAL thread from either
primary or secondary processes will always end up with the thread getting LCORE_ID_ANY as lcore.
Returns
On success, return 0; otherwise return -1 with rte_errno set.
voidrte_thread_unregister(void)
Unregister current thread and release lcore if one was associated.