199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 299a2dd95SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation 399a2dd95SBruce Richardson */ 499a2dd95SBruce Richardson 599a2dd95SBruce Richardson #include <errno.h> 699a2dd95SBruce Richardson #include <stdio.h> 799a2dd95SBruce Richardson #include <unistd.h> 899a2dd95SBruce Richardson #include <pthread.h> 999a2dd95SBruce Richardson #include <sys/syscall.h> 1099a2dd95SBruce Richardson 1199a2dd95SBruce Richardson #include <rte_eal.h> 1299a2dd95SBruce Richardson #include <rte_lcore.h> 136d87be58STyler Retzlaff #include <rte_log.h> 14a95d7054SDavid Marchand #include <rte_string_fns.h> 1599a2dd95SBruce Richardson 1699a2dd95SBruce Richardson /* require calling thread tid by gettid() */ 1799a2dd95SBruce Richardson int rte_sys_gettid(void) 1899a2dd95SBruce Richardson { 1999a2dd95SBruce Richardson return (int)syscall(SYS_gettid); 2099a2dd95SBruce Richardson } 2199a2dd95SBruce Richardson 226d87be58STyler Retzlaff void rte_thread_set_name(rte_thread_t thread_id, const char *thread_name) 236d87be58STyler Retzlaff { 246d87be58STyler Retzlaff int ret = ENOSYS; 256d87be58STyler Retzlaff #if defined(__GLIBC__) && defined(__GLIBC_PREREQ) 266d87be58STyler Retzlaff #if __GLIBC_PREREQ(2, 12) 27*93d8a7edSThomas Monjalon char truncated[RTE_THREAD_NAME_SIZE]; 286d87be58STyler Retzlaff const size_t truncatedsz = sizeof(truncated); 296d87be58STyler Retzlaff 306d87be58STyler Retzlaff if (strlcpy(truncated, thread_name, truncatedsz) >= truncatedsz) 316d87be58STyler Retzlaff RTE_LOG(DEBUG, EAL, "Truncated thread name\n"); 326d87be58STyler Retzlaff 336d87be58STyler Retzlaff ret = pthread_setname_np((pthread_t)thread_id.opaque_id, truncated); 346d87be58STyler Retzlaff #endif 356d87be58STyler Retzlaff #endif 366d87be58STyler Retzlaff RTE_SET_USED(thread_id); 376d87be58STyler Retzlaff RTE_SET_USED(thread_name); 386d87be58STyler Retzlaff 396d87be58STyler Retzlaff if (ret != 0) 406d87be58STyler Retzlaff RTE_LOG(DEBUG, EAL, "Failed to set thread name\n"); 416d87be58STyler Retzlaff } 426d87be58STyler Retzlaff 4399a2dd95SBruce Richardson int rte_thread_setname(pthread_t id, const char *name) 4499a2dd95SBruce Richardson { 4599a2dd95SBruce Richardson int ret = ENOSYS; 4699a2dd95SBruce Richardson #if defined(__GLIBC__) && defined(__GLIBC_PREREQ) 4799a2dd95SBruce Richardson #if __GLIBC_PREREQ(2, 12) 4899a2dd95SBruce Richardson char truncated[16]; 4999a2dd95SBruce Richardson 5099a2dd95SBruce Richardson strlcpy(truncated, name, sizeof(truncated)); 5199a2dd95SBruce Richardson ret = pthread_setname_np(id, truncated); 5299a2dd95SBruce Richardson #endif 5399a2dd95SBruce Richardson #endif 5499a2dd95SBruce Richardson RTE_SET_USED(id); 5599a2dd95SBruce Richardson RTE_SET_USED(name); 5699a2dd95SBruce Richardson return -ret; 5799a2dd95SBruce Richardson } 58