On Saturday, July 5, 2025 10:40:16 PM Pacific Daylight Time Hal Murray via devel wrote: > I'd like msyslog to indicate which thread is doing the logging. > > The main thread in ntpd currently creates up to 3 threads. > One for DNS, and a NTS thread for each of IPv4 and IPv6. > The DNS thread gets created and joined, but there is only one at any time. > We may need more NTS threads in the future. > > Linux has gettid() that returns a pid_t for the current thread. > So a line in wscript to see if gettid exissts and an ifdef > in msyslog.c to use it would solve my problem on Linux. > > FreeBSD uses a pointer for pthread_t > We could teach msyslog to keep a small table of pthread_t > and then print [pid.idx] rather than [pid] > > Anybody thought about this area? Any good ideas?
I built a toy version and I am running it on a machine. Currently it adds 16 bytes per line logged. The code is pretty simple and I think it should be portable. I feel this is unworthy of consideration though. Better yet would be a translation table or macro. 2025-07-06T03:06:33 ntpd[532173.123383191787520]: DNS: dns_probe: nts.ntp.se:3443, cast_flags:1, flags:21901 2025-07-06T03:06:33 ntpd[532173.123383162848960]: NTSc: DNS lookup of nts.ntp.se:3443 took 0.053 sec ``` --- a/libntp/msyslog.c +++ b/libntp/msyslog.c @@ -8,6 +8,7 @@ #include "config.h" #include <limits.h> +#include <pthread.h> #include <sys/types.h> #include <time.h> #include <unistd.h> @@ -160,7 +161,7 @@ addto_syslog( if (msyslog_include_timestamp) fprintf(term_file, "%s ", human_time); if (termlogit_pid) - fprintf(term_file, "%s[%d]: ", prog, pid); + fprintf(term_file, "%s[%d.%ld]: ", prog, pid, (long int)pthread_self()); fprintf(term_file, "%s%s", msg, nl_or_empty); fflush(term_file); } @@ -181,7 +182,7 @@ addto_syslog( if (msyslog_include_timestamp) snprintf(buf, sizeof(buf), "%s ", human_time); snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf) - 1, - "%s[%d]: %s%s", prog, pid, msg, nl_or_empty); + "%s[%d.%ld]: %s%s", prog, pid, (long int)pthread_self(), msg, nl_or_empty); IGNORE(write(fileno(syslog_file), buf, strlen(buf))); } } ``` wrong... https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_self.html https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_types.h.html _______________________________________________ devel mailing list devel@ntpsec.org https://lists.ntpsec.org/mailman/listinfo/devel