|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // pthread の OS ごとに違う部分を吸収する ! 8: ! 9: #include "mythread.h" ! 10: #include <pthread.h> ! 11: #if defined(HAVE_PTHREAD_NP_H) ! 12: #include <pthread_np.h> ! 13: #endif ! 14: ! 15: // pthread_set{,_}name_np() のプロトタイプは OS によってみんなフリーダムなので ! 16: // (というか _np は Non Portable か Non Posix のことらしい?)、 ! 17: // ここで吸収する。 ! 18: // ! 19: // MacOSX は void pthread_setname_np(name) ! 20: // Linux は int pthread_setname_np(threadID, name) ! 21: // NetBSD は int pthread_setname_np(threadID, name, arg) ! 22: // OpenBSD は void pthread_set_name_np(threadID, name) ! 23: // FreeBSD は void pthread_set_name_np(threadID, name) ! 24: // (2020/06 以降は pthread_setname_np(threadID, name) も追加) ! 25: void ! 26: PTHREAD_SETNAME(const char *name) ! 27: { ! 28: #if defined(HAVE_PTHREAD_SETNAME_NP_name) ! 29: pthread_setname_np(name); ! 30: ! 31: #elif defined(HAVE_PTHREAD_SETNAME_NP_th_name) ! 32: pthread_setname_np(pthread_self(), name); ! 33: ! 34: #elif defined(HAVE_PTHREAD_SETNAME_NP_th_name_arg) ! 35: pthread_setname_np(pthread_self(), name, NULL); ! 36: ! 37: #elif defined(HAVE_PTHREAD_SET_NAME_NP_th_name) ! 38: pthread_set_name_np(pthread_self(), name); ! 39: ! 40: #else ! 41: // デバッガとかでスレッドに名前がついてると嬉しいという程度なので、 ! 42: // なければ気にしない。 ! 43: #endif ! 44: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.