xref: /dpdk/lib/eal/linux/eal_thread.c (revision ae67895b507bb6af22263c79ba0d5c374b396485)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 #include <errno.h>
6 #include <stdio.h>
7 #include <unistd.h>
8 #include <pthread.h>
9 #include <sys/syscall.h>
10 
11 #include <rte_eal.h>
12 #include <rte_lcore.h>
13 #include <rte_log.h>
14 #include <rte_string_fns.h>
15 
16 #include "eal_private.h"
17 
18 /* require calling thread tid by gettid() */
rte_sys_gettid(void)19 int rte_sys_gettid(void)
20 {
21 	return (int)syscall(SYS_gettid);
22 }
23 
rte_thread_set_name(rte_thread_t thread_id,const char * thread_name)24 void rte_thread_set_name(rte_thread_t thread_id, const char *thread_name)
25 {
26 	int ret = ENOSYS;
27 #if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
28 #if __GLIBC_PREREQ(2, 12)
29 	char truncated[RTE_THREAD_NAME_SIZE];
30 	const size_t truncatedsz = sizeof(truncated);
31 
32 	if (strlcpy(truncated, thread_name, truncatedsz) >= truncatedsz)
33 		EAL_LOG(DEBUG, "Truncated thread name");
34 
35 	ret = pthread_setname_np((pthread_t)thread_id.opaque_id, truncated);
36 #endif
37 #endif
38 	RTE_SET_USED(thread_id);
39 	RTE_SET_USED(thread_name);
40 
41 	if (ret != 0)
42 		EAL_LOG(DEBUG, "Failed to set thread name");
43 }
44