199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 299a2dd95SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation 399a2dd95SBruce Richardson */ 499a2dd95SBruce Richardson 599a2dd95SBruce Richardson #ifndef EAL_THREAD_H 699a2dd95SBruce Richardson #define EAL_THREAD_H 799a2dd95SBruce Richardson 8770ebc06SDavid Marchand #include <rte_common.h> 999a2dd95SBruce Richardson #include <rte_lcore.h> 1099a2dd95SBruce Richardson 1199a2dd95SBruce Richardson /** 12449e7dbcSDavid Marchand * Basic loop of EAL thread, called for each worker thread by rte_eal_init(). 1399a2dd95SBruce Richardson * 1499a2dd95SBruce Richardson * @param arg 15449e7dbcSDavid Marchand * The lcore_id (passed as an integer) of this worker thread. 1699a2dd95SBruce Richardson */ 17*8b0a1b8cSTyler Retzlaff __rte_noreturn uint32_t eal_thread_loop(void *arg); 1899a2dd95SBruce Richardson 1999a2dd95SBruce Richardson /** 2099a2dd95SBruce Richardson * Get the NUMA socket id from cpu id. 2199a2dd95SBruce Richardson * This function is private to EAL. 2299a2dd95SBruce Richardson * 2399a2dd95SBruce Richardson * @param cpu_id 2499a2dd95SBruce Richardson * The logical process id. 2599a2dd95SBruce Richardson * @return 2699a2dd95SBruce Richardson * socket_id or SOCKET_ID_ANY 2799a2dd95SBruce Richardson */ 2899a2dd95SBruce Richardson unsigned eal_cpu_socket_id(unsigned cpu_id); 2999a2dd95SBruce Richardson 3099a2dd95SBruce Richardson /** 3199a2dd95SBruce Richardson * Default buffer size to use with eal_thread_dump_affinity() 3299a2dd95SBruce Richardson */ 3399a2dd95SBruce Richardson #define RTE_CPU_AFFINITY_STR_LEN 256 3499a2dd95SBruce Richardson 3599a2dd95SBruce Richardson /** 3699a2dd95SBruce Richardson * Dump the cpuset as a human readable string. 3799a2dd95SBruce Richardson * This function is private to EAL. 3899a2dd95SBruce Richardson * 3999a2dd95SBruce Richardson * Note: 4099a2dd95SBruce Richardson * If the dump size is greater than the size of given buffer, 4199a2dd95SBruce Richardson * the string will be truncated and with '\0' at the end. 4299a2dd95SBruce Richardson * 4399a2dd95SBruce Richardson * @param cpuset 4499a2dd95SBruce Richardson * The CPU affinity object to dump. 4599a2dd95SBruce Richardson * @param str 4699a2dd95SBruce Richardson * The string buffer the cpuset will dump to. 4799a2dd95SBruce Richardson * @param size 4899a2dd95SBruce Richardson * The string buffer size. 4999a2dd95SBruce Richardson * @return 5099a2dd95SBruce Richardson * 0 for success, -1 if truncation happens. 5199a2dd95SBruce Richardson */ 5299a2dd95SBruce Richardson int 5399a2dd95SBruce Richardson eal_thread_dump_affinity(rte_cpuset_t *cpuset, char *str, unsigned int size); 5499a2dd95SBruce Richardson 5599a2dd95SBruce Richardson /** 5699a2dd95SBruce Richardson * Dump the current thread cpuset. 5799a2dd95SBruce Richardson * This is a wrapper on eal_thread_dump_affinity(). 5899a2dd95SBruce Richardson */ 5999a2dd95SBruce Richardson int 6099a2dd95SBruce Richardson eal_thread_dump_current_affinity(char *str, unsigned int size); 6199a2dd95SBruce Richardson 62a95d7054SDavid Marchand /** 63a95d7054SDavid Marchand * Called by the main thread to wake up a worker in 'WAIT' state. 64a95d7054SDavid Marchand * This function blocks until the worker acknowledge it started processing a 65a95d7054SDavid Marchand * new command. 66a95d7054SDavid Marchand * This function is private to EAL. 67a95d7054SDavid Marchand * 68a95d7054SDavid Marchand * @param worker_id 69a95d7054SDavid Marchand * The lcore_id of a worker thread. 709856af40SBruce Richardson * @return 719856af40SBruce Richardson * 0 on success, negative errno on error 72a95d7054SDavid Marchand */ 739856af40SBruce Richardson int 74a95d7054SDavid Marchand eal_thread_wake_worker(unsigned int worker_id); 75a95d7054SDavid Marchand 76a95d7054SDavid Marchand /** 77a95d7054SDavid Marchand * Called by a worker thread to sleep after entering 'WAIT' state. 78a95d7054SDavid Marchand * This function is private to EAL. 79a95d7054SDavid Marchand */ 80a95d7054SDavid Marchand void 81a95d7054SDavid Marchand eal_thread_wait_command(void); 82a95d7054SDavid Marchand 83a95d7054SDavid Marchand /** 84a95d7054SDavid Marchand * Called by a worker thread to acknowledge new command after leaving 'WAIT' 85a95d7054SDavid Marchand * state. 86a95d7054SDavid Marchand * This function is private to EAL. 87a95d7054SDavid Marchand */ 88a95d7054SDavid Marchand void 89a95d7054SDavid Marchand eal_thread_ack_command(void); 90a95d7054SDavid Marchand 9199a2dd95SBruce Richardson #endif /* EAL_THREAD_H */ 92