X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=meta-starlingx%2Fmeta-stx-integ%2Frecipes-core%2Fsystemd%2Ffiles%2F0900-inject-milisec-in-syslog-date.patch;fp=meta-starlingx%2Fmeta-stx-integ%2Frecipes-core%2Fsystemd%2Ffiles%2F0900-inject-milisec-in-syslog-date.patch;h=4a768faf5529b65b593caa449f2f92bbae402876;hb=e0634c6eaf2fe2641a0fb90e84a5defb880b1335;hp=0000000000000000000000000000000000000000;hpb=210d0f78485e760dffcdd3f630f59cec797f3f11;p=pti%2Frtp.git diff --git a/meta-starlingx/meta-stx-integ/recipes-core/systemd/files/0900-inject-milisec-in-syslog-date.patch b/meta-starlingx/meta-stx-integ/recipes-core/systemd/files/0900-inject-milisec-in-syslog-date.patch new file mode 100644 index 0000000..4a768fa --- /dev/null +++ b/meta-starlingx/meta-stx-integ/recipes-core/systemd/files/0900-inject-milisec-in-syslog-date.patch @@ -0,0 +1,76 @@ +From 5ef6dbb951246912ba021f9e2edacd0f9e7619e6 Mon Sep 17 00:00:00 2001 +From: "Sar Ashki, Babak" +Date: Sat, 29 Feb 2020 12:48:57 -0800 +Subject: [PATCH] inject milisec in syslog date + +From stx.3.0: 0231aba5cdcb96b15106591acfff280159050366 +--- + src/journal/journald-syslog.c | 45 +++++++++++++++++++++++++++++++---- + 1 file changed, 40 insertions(+), 5 deletions(-) + +diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c +index a60a259bc4..0036750353 100644 +--- a/src/journal/journald-syslog.c ++++ b/src/journal/journald-syslog.c +@@ -25,6 +25,44 @@ + /* Warn once every 30s if we missed syslog message */ + #define WARN_FORWARD_SYSLOG_MISSED_USEC (30 * USEC_PER_SEC) + ++/* internal function that builds a formatted time str of the ++ * tv parameter into the passed buffer. (ie Nov 7 16:28:38.109) ++ * If tv is NULL, then the clock function is used to build the formatted time ++ * returns (same as snprintf) - number of characters written to buffer. ++ */ ++static int formatSyslogDate(char * buffer, int bufLen, const struct timeval *tv) { ++ struct timeval tv_tmp; ++ long int millisec; ++ char tmpbuf[64]; ++ struct tm *tm; ++ time_t t; ++ ++ if (!tv) { ++ // no timeval input so get time data from clock ++ usec_t now_usec = now(CLOCK_REALTIME); ++ time_t now_sec = ((time_t) now_usec / USEC_PER_SEC); ++ long int now_fraction_secs = now_usec % USEC_PER_SEC; ++ tv_tmp.tv_sec = now_sec; ++ tv_tmp.tv_usec = now_fraction_secs; ++ tv = &tv_tmp; ++ } ++ ++ t = tv->tv_sec; ++ tm = localtime(&t); ++ if (!tm) ++ return 0; ++ ++ // format time to the second granularity - ie Nov 7 16:28:38 ++ if (strftime(tmpbuf,sizeof(tmpbuf),"%h %e %T", tm) <= 0) ++ return 0; ++ ++ millisec = tv->tv_usec / 1000; ++ // now append millisecond granularity (ie Nov 7 16:28:38.109) to ++ // the formatted string. ++ return snprintf(buffer, bufLen, "%s.%03lu", tmpbuf, millisec); ++} ++ ++ + static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned n_iovec, const struct ucred *ucred, const struct timeval *tv) { + + static const union sockaddr_union sa = { +@@ -133,11 +171,8 @@ void server_forward_syslog(Server *s, int priority, const char *identifier, cons + iovec[n++] = IOVEC_MAKE_STRING(header_priority); + + /* Second: timestamp */ +- t = tv ? tv->tv_sec : ((time_t) (now(CLOCK_REALTIME) / USEC_PER_SEC)); +- if (!localtime_r(&t, &tm)) +- return; +- if (strftime(header_time, sizeof(header_time), "%h %e %T ", &tm) <= 0) +- return; ++ if (formatSyslogDate(header_time, sizeof(header_time), tv) <=0 ) ++ return; + iovec[n++] = IOVEC_MAKE_STRING(header_time); + + /* Third: identifier and PID */ +-- +2.23.0 +