forked from Mirror/frr
lib, bgpd: Convert frr_pthread_set_name to only cause it to set os name of the thread
The current invocation of frr_pthread_set_name was causing it reset the os_name. There is no need for this, we now always create the pthread appropriately to have both name and os_name. So convert this function to a simple call through of the pthread call now. Before(any of these changes): sharpd@robot ~/frr1> ps -L -p 16895 PID LWP TTY TIME CMD 16895 16895 ? 00:01:39 bgpd 16895 16896 ? 00:00:54 16895 16897 ? 00:00:07 bgpd_ka After: sharpd@donna ~/frr1> ps -L -p 1752 PID LWP TTY TIME CMD 1752 1752 ? 00:00:00 bgpd 1752 1753 ? 00:00:00 bgpd_io 1752 1754 ? 00:00:00 bgpd_ka Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
6d0a40b5b7
commit
c80bedb83b
|
@ -181,7 +181,11 @@ void *bgp_keepalives_start(void *arg)
|
||||||
pthread_cond_init(peerhash_cond, &attrs);
|
pthread_cond_init(peerhash_cond, &attrs);
|
||||||
pthread_condattr_destroy(&attrs);
|
pthread_condattr_destroy(&attrs);
|
||||||
|
|
||||||
frr_pthread_set_name(fpt, NULL, "bgpd_ka");
|
/*
|
||||||
|
* We are not using normal FRR pthread mechanics and are
|
||||||
|
* not using fpt_run
|
||||||
|
*/
|
||||||
|
frr_pthread_set_name(fpt);
|
||||||
|
|
||||||
/* initialize peer hashtable */
|
/* initialize peer hashtable */
|
||||||
peerhash = hash_create_size(2048, peer_hash_key, peer_hash_cmp, NULL);
|
peerhash = hash_create_size(2048, peer_hash_key, peer_hash_cmp, NULL);
|
||||||
|
|
|
@ -117,26 +117,10 @@ void frr_pthread_destroy(struct frr_pthread *fpt)
|
||||||
XFREE(MTYPE_FRR_PTHREAD, fpt);
|
XFREE(MTYPE_FRR_PTHREAD, fpt);
|
||||||
}
|
}
|
||||||
|
|
||||||
int frr_pthread_set_name(struct frr_pthread *fpt, const char *name,
|
int frr_pthread_set_name(struct frr_pthread *fpt)
|
||||||
const char *os_name)
|
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (name) {
|
|
||||||
pthread_mutex_lock(&fpt->mtx);
|
|
||||||
{
|
|
||||||
if (fpt->name)
|
|
||||||
XFREE(MTYPE_FRR_PTHREAD, fpt->name);
|
|
||||||
fpt->name = XSTRDUP(MTYPE_FRR_PTHREAD, name);
|
|
||||||
}
|
|
||||||
pthread_mutex_unlock(&fpt->mtx);
|
|
||||||
thread_master_set_name(fpt->master, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (os_name) {
|
|
||||||
pthread_mutex_lock(&fpt->mtx);
|
|
||||||
snprintf(fpt->os_name, OS_THREAD_NAMELEN, "%s", os_name);
|
|
||||||
pthread_mutex_unlock(&fpt->mtx);
|
|
||||||
#ifdef HAVE_PTHREAD_SETNAME_NP
|
#ifdef HAVE_PTHREAD_SETNAME_NP
|
||||||
# ifdef GNU_LINUX
|
# ifdef GNU_LINUX
|
||||||
ret = pthread_setname_np(fpt->thread, fpt->os_name);
|
ret = pthread_setname_np(fpt->thread, fpt->os_name);
|
||||||
|
@ -146,7 +130,6 @@ int frr_pthread_set_name(struct frr_pthread *fpt, const char *name,
|
||||||
#elif defined(HAVE_PTHREAD_SET_NAME_NP)
|
#elif defined(HAVE_PTHREAD_SET_NAME_NP)
|
||||||
pthread_set_name_np(fpt->thread, fpt->os_name);
|
pthread_set_name_np(fpt->thread, fpt->os_name);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -275,15 +258,7 @@ static void *fpt_run(void *arg)
|
||||||
|
|
||||||
fpt->master->handle_signals = false;
|
fpt->master->handle_signals = false;
|
||||||
|
|
||||||
#ifdef HAVE_PTHREAD_SETNAME_NP
|
frr_pthread_set_name(fpt);
|
||||||
# ifdef GNU_LINUX
|
|
||||||
pthread_setname_np(fpt->thread, fpt->os_name);
|
|
||||||
# else /* NetBSD */
|
|
||||||
pthread_setname_np(fpt->thread, fpt->os_name, NULL);
|
|
||||||
# endif
|
|
||||||
#elif defined(HAVE_PTHREAD_SET_NAME_NP)
|
|
||||||
pthread_set_name_np(fpt->thread, fpt->os_name);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
frr_pthread_notify_running(fpt);
|
frr_pthread_notify_running(fpt);
|
||||||
|
|
||||||
|
|
|
@ -133,16 +133,13 @@ struct frr_pthread *frr_pthread_new(struct frr_pthread_attr *attr,
|
||||||
const char *name, const char *os_name);
|
const char *name, const char *os_name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Changes the name of the frr_pthread.
|
* Changes the name of the frr_pthread as reported by the operating
|
||||||
|
* system.
|
||||||
*
|
*
|
||||||
* @param fpt - the frr_pthread to operate on
|
* @param fpt - the frr_pthread to operate on
|
||||||
* @param name - Human-readable name
|
|
||||||
* @param os_name - 16 characters thread name , including the null
|
|
||||||
* terminator ('\0') to set in os.
|
|
||||||
* @return - on success returns 0 otherwise nonzero error number.
|
* @return - on success returns 0 otherwise nonzero error number.
|
||||||
*/
|
*/
|
||||||
int frr_pthread_set_name(struct frr_pthread *fpt, const char *name,
|
int frr_pthread_set_name(struct frr_pthread *fpt);
|
||||||
const char *os_name);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Destroys an frr_pthread.
|
* Destroys an frr_pthread.
|
||||||
|
|
Loading…
Reference in a new issue