diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-09-20 18:04:46 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-09-28 23:17:57 +0000 |
commit | 5b60c98769ba297053801a3192187ebdd558698a (patch) | |
tree | d820183c9b7ec21088aa842a0f743938576c9da3 /Transceiver52M | |
parent | 207d8a26246eb095425487c2bb3e8a0ca101340e (diff) |
Use pthread_setname_np to name threads
osmo-trx can start a considerable amount of threads that can make
debugging it challenging at least. By using phtread_setname_np, the
system sets a meaningful name to the thread which can be seen while
debugging with gdb or by printing /proc/$pid/task/$tid/comm.
Now we also log system TID when setting the name so we can identify
different tasks in /proc even if pthread_setname_np fails.
Change-Id: I84711739c3e224cb383fd12b6db933785b28209e
Diffstat (limited to 'Transceiver52M')
-rw-r--r-- | Transceiver52M/Transceiver.cpp | 16 | ||||
-rw-r--r-- | Transceiver52M/device/uhd/UHDDevice.cpp | 1 | ||||
-rw-r--r-- | Transceiver52M/radioInterface.cpp | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp index cdfd79d..076db3e 100644 --- a/Transceiver52M/Transceiver.cpp +++ b/Transceiver52M/Transceiver.cpp @@ -1044,11 +1044,15 @@ void Transceiver::writeClockInterface() void *RxUpperLoopAdapter(TransceiverChannel *chan) { + char thread_name[16]; Transceiver *trx = chan->trx; size_t num = chan->num; delete chan; + snprintf(thread_name, 16, "RxUpper%zu", num); + set_selfthread_name(thread_name); + trx->setPriority(0.42); while (1) { @@ -1060,6 +1064,8 @@ void *RxUpperLoopAdapter(TransceiverChannel *chan) void *RxLowerLoopAdapter(Transceiver *transceiver) { + set_selfthread_name("RxLower"); + transceiver->setPriority(0.45); while (1) { @@ -1071,6 +1077,8 @@ void *RxLowerLoopAdapter(Transceiver *transceiver) void *TxLowerLoopAdapter(Transceiver *transceiver) { + set_selfthread_name("TxLower"); + transceiver->setPriority(0.44); while (1) { @@ -1082,11 +1090,15 @@ void *TxLowerLoopAdapter(Transceiver *transceiver) void *ControlServiceLoopAdapter(TransceiverChannel *chan) { + char thread_name[16]; Transceiver *trx = chan->trx; size_t num = chan->num; delete chan; + snprintf(thread_name, 16, "CtrlService%zu", num); + set_selfthread_name(thread_name); + while (1) { trx->driveControl(num); pthread_testcancel(); @@ -1096,11 +1108,15 @@ void *ControlServiceLoopAdapter(TransceiverChannel *chan) void *TxUpperLoopAdapter(TransceiverChannel *chan) { + char thread_name[16]; Transceiver *trx = chan->trx; size_t num = chan->num; delete chan; + snprintf(thread_name, 16, "TxUpper%zu", num); + set_selfthread_name(thread_name); + trx->setPriority(0.40); while (1) { diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index b7109a4..c30f3a7 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -322,6 +322,7 @@ private: void *async_event_loop(uhd_device *dev) { + set_selfthread_name("UHDAsyncEvent"); dev->setPriority(0.43); while (1) { diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index 7d6a03b..0f949d7 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -148,6 +148,7 @@ bool RadioInterface::tuneRx(double freq, size_t chan) /** synchronization thread loop */ void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface) { + set_selfthread_name("AlignRadio"); while (1) { sleep(60); radioInterface->alignRadio(); |