osaf/libs/core/mds/Makefile.am | 2 +-
osaf/libs/core/mds/include/mds_dt2c.h | 3 -
osaf/libs/core/mds/include/mds_log.h | 59 +++--
osaf/libs/core/mds/mds_dt_tipc.c | 5 +-
osaf/libs/core/mds/mds_log.cc | 369 +++++++++++++++++----------------
osaf/libs/core/mds/mds_main.c | 3 +-
6 files changed, 228 insertions(+), 213 deletions(-)
Convert the mds_log.c file to C++ so that it can use C++ classes without the
need for any wrappers.
diff --git a/osaf/libs/core/mds/Makefile.am b/osaf/libs/core/mds/Makefile.am
--- a/osaf/libs/core/mds/Makefile.am
+++ b/osaf/libs/core/mds/Makefile.am
@@ -37,7 +37,7 @@ libmds_la_SOURCES = \
mds_papi.c \
mds_c_sndrcv.c \
mds_c_api.c \
- mds_log.c \
+ mds_log.cc \
ncs_ada.c \
ncs_mda.c \
ncs_vda.c
diff --git a/osaf/libs/core/mds/include/mds_dt2c.h
b/osaf/libs/core/mds/include/mds_dt2c.h
--- a/osaf/libs/core/mds/include/mds_dt2c.h
+++ b/osaf/libs/core/mds/include/mds_dt2c.h
@@ -316,9 +316,6 @@ typedef struct mds_mbx_evt_info {
/* ******************************************** */
/* ******************************************** */
-/* Initialize Logging */
-extern uint32_t mds_log_init(char *log_file_name, char *line_prefix);
-
/* extern gl_mds_checksum */
extern uint32_t gl_mds_checksum;
diff --git a/osaf/libs/core/mds/include/mds_log.h
b/osaf/libs/core/mds/include/mds_log.h
--- a/osaf/libs/core/mds/include/mds_log.h
+++ b/osaf/libs/core/mds/include/mds_log.h
@@ -22,39 +22,50 @@
******************************************************************************
*/
-#ifndef _MDS_LOG_H
-#define _MDS_LOG_H
+#ifndef OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
+#define OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
-#include <ncsgl_defs.h>
-#include "ncs_lib.h"
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
/* Logging utility functions - Phani */
-extern uint32_t gl_mds_log_level;
+extern int gl_mds_log_level;
-#define NCSMDS_LC_CRITICAL 1
-#define NCSMDS_LC_ERR 2
-#define NCSMDS_LC_NOTIFY 3
-#define NCSMDS_LC_INFO 4
-#define NCSMDS_LC_DBG 5
+enum {
+ NCSMDS_LC_CRITICAL = 1,
+ NCSMDS_LC_ERR = 2,
+ NCSMDS_LC_NOTIFY = 3,
+ NCSMDS_LC_INFO = 4,
+ NCSMDS_LC_DBG = 5
+};
-#define m_MDS_LOG_CRITICAL if (gl_mds_log_level < NCSMDS_LC_CRITICAL) {} else
log_mds_critical
-
-#define m_MDS_LOG_ERR if (gl_mds_log_level < NCSMDS_LC_ERR) {} else log_mds_err
-
-#define m_MDS_LOG_NOTIFY if (gl_mds_log_level < NCSMDS_LC_NOTIFY) {} else
log_mds_notify
-
-#define m_MDS_LOG_INFO if (gl_mds_log_level < NCSMDS_LC_INFO) {} else
log_mds_info
-
-#define m_MDS_LOG_DBG if (gl_mds_log_level < NCSMDS_LC_DBG) {} else log_mds_dbg
+#define m_MDS_LOG_CRITICAL log_mds_critical
+#define m_MDS_LOG_ERR log_mds_err
+#define m_MDS_LOG_NOTIFY log_mds_notify
+#define m_MDS_LOG_INFO log_mds_info
+#define m_MDS_LOG_DBG log_mds_dbg
#define m_MDS_ENTER() m_MDS_LOG_DBG(">> %s", __FUNCTION__)
#define m_MDS_LEAVE() m_MDS_LOG_DBG("<< %s", __FUNCTION__)
-extern void log_mds_dbg(char *fmt, ...);
-extern void log_mds_info(char *fmt, ...);
-extern void log_mds_notify(char *fmt, ...);
-extern void log_mds_err(char *fmt, ...);
-extern void log_mds_critical(char *fmt, ...);
+uint32_t mds_log_init(const char *log_file_name);
+void log_mds_dbg(const char *fmt, ...)
+ __attribute__ ((format(printf, 1, 2)));
+void log_mds_info(const char *fmt, ...)
+ __attribute__ ((format(printf, 1, 2)));
+void log_mds_notify(const char *fmt, ...)
+ __attribute__ ((format(printf, 1, 2)));
+void log_mds_err(const char *fmt, ...)
+ __attribute__ ((format(printf, 1, 2)));
+void log_mds_critical(const char *fmt, ...)
+ __attribute__ ((format(printf, 1, 2)));
+#ifdef __cplusplus
+}
#endif
+
+#endif // OSAF_LIBS_CORE_MDS_INCLUDE_MDS_LOG_H_
diff --git a/osaf/libs/core/mds/mds_dt_tipc.c b/osaf/libs/core/mds/mds_dt_tipc.c
--- a/osaf/libs/core/mds/mds_dt_tipc.c
+++ b/osaf/libs/core/mds/mds_dt_tipc.c
@@ -31,6 +31,7 @@
#include "ncssysf_tsk.h"
#include "ncssysf_mem.h"
+#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h>
#include <sched.h>
@@ -1107,12 +1108,12 @@ static uint32_t mdtm_process_discovery_e
m_MDS_LOG_INFO("MDTM: Raising the NODE UP event
for NODE id = %d", node_id);
uint32_t up_node_id;
if ((up_node_id =
m_MDS_GET_NODE_ID_FROM_ADEST(m_MDS_GET_ADEST)) == node_id) {
- m_MDS_LOG_INFO("MDTM:NODE_UP for
subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ",
+ m_MDS_LOG_INFO("MDTM:NODE_UP for
subtn_ref_val:%" PRIu64 " node_name:%s, node_id:%u addr_family:%d ",
(uint64_t)subtn_ref_val,gl_mds_mcm_cb->node_name, node_id, AF_TIPC);
return mds_mcm_node_up(svc_hdl,
node_id, NULL, AF_TIPC, gl_mds_mcm_cb->node_name);
} else {
- m_MDS_LOG_INFO("MDTM:NODE_UP for
subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ",
+ m_MDS_LOG_INFO("MDTM:NODE_UP for
subtn_ref_val:%" PRIu64 " node_name:%s, node_id:%u addr_family:%d ",
(uint64_t)subtn_ref_val, "REMOTE_NODE", node_id, AF_TIPC);
return mds_mcm_node_up(svc_hdl,
node_id, NULL, AF_TIPC, "REMOTE_NODE");
}
diff --git a/osaf/libs/core/mds/mds_log.c b/osaf/libs/core/mds/mds_log.cc
rename from osaf/libs/core/mds/mds_log.c
rename to osaf/libs/core/mds/mds_log.cc
--- a/osaf/libs/core/mds/mds_log.c
+++ b/osaf/libs/core/mds/mds_log.cc
@@ -19,233 +19,240 @@
..............................................................................
DESCRIPTION: MDS LOG APIs
-******************************************************************************
-*/
+
******************************************************************************
+ */
-#include "mds_log.h"
-#include "mds_dt2c.h" /* Include for arch-word definitions */
+#include "osaf/libs/core/mds/include/mds_log.h"
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+#include <cstdarg>
+#include <cstdio>
+#include <cstring>
+#include "osaf/libs/core/include/mds_papi.h"
+#include "osaf/libs/core/include/ncsgl_defs.h"
+#include "osaf/libs/core/mds/include/mds_dt2c.h"
-static char *lf = NULL;
+constexpr static const size_t kMaxMdsFileNameLen = 256;
static void log_mds(const char *str);
+
+int gl_mds_log_level = 3;
+static char *lf = nullptr;
static char process_name[MDS_MAX_PROCESS_NAME_LEN];
+static char mds_log_fname[kMaxMdsFileNameLen];
/*****************************************************
Function NAME: get_process_name()
Returns : <process_name>[<pid> or <tipc_port_ref>]
*****************************************************/
-static void get_process_name(void)
-{
- char pid_path[1024];
- uint32_t process_id = getpid();
- char *token, *saveptr;
- char *pid_name = NULL;
+static void get_process_name() {
+ char pid_path[1024];
+ uint32_t process_id = getpid();
+ char *token, *saveptr;
+ char *pid_name = nullptr;
- sprintf(pid_path, "/proc/%d/cmdline", process_id);
- FILE* f = fopen(pid_path,"r");
- if(f){
- size_t size;
- size = fread(pid_path, sizeof(char), 1024, f);
- if(size>0){
- if('\n' == pid_path[size-1])
- pid_path[size-1]='\0';
- }
- fclose(f);
- }
- token = strtok_r(pid_path, "/", &saveptr);
- while( token != NULL )
- {
- pid_name = token;
- token = strtok_r(NULL, "/", &saveptr);
- }
- snprintf(process_name, MDS_MAX_PROCESS_NAME_LEN, "%s[%d]", pid_name,
process_id);
- return;
+ snprintf(pid_path, sizeof(pid_path), "/proc/%d/cmdline", process_id);
+ FILE* f = fopen(pid_path, "r");
+ if (f) {
+ size_t size;
+ size = fread(pid_path, sizeof(char), 1024, f);
+ if (size > 0) {
+ if ('\n' == pid_path[size-1])
+ pid_path[size-1] = '\0';
+ }
+ fclose(f);
+ }
+ token = strtok_r(pid_path, "/", &saveptr);
+ while (token != nullptr) {
+ pid_name = token;
+ token = strtok_r(nullptr, "/", &saveptr);
+ }
+ snprintf(process_name, MDS_MAX_PROCESS_NAME_LEN, "%s[%d]", pid_name,
+ process_id);
+ return;
}
/*******************************************************************************
-* Funtion Name : mds_log_init
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-#define MAX_MDS_FNAME_LEN 256
-static char mds_log_fname[MAX_MDS_FNAME_LEN];
+ * Funtion Name : mds_log_init
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+uint32_t mds_log_init(const char *log_file_name) {
+ FILE *fh;
+ memset(process_name, 0, MDS_MAX_PROCESS_NAME_LEN);
+ tzset();
+ get_process_name();
-uint32_t mds_log_init(char *log_file_name, char *line_prefix)
-{
- FILE *fh;
- memset(process_name, 0, MDS_MAX_PROCESS_NAME_LEN);
- tzset();
- get_process_name();
+ if (lf != nullptr)
+ return NCSCC_RC_FAILURE;
- if (lf != NULL)
- return NCSCC_RC_FAILURE;
+ if (strlen(log_file_name) >= kMaxMdsFileNameLen)
+ return NCSCC_RC_FAILURE;
- if (strlen(log_file_name) >= MAX_MDS_FNAME_LEN)
- return NCSCC_RC_FAILURE;
+ snprintf(mds_log_fname, sizeof(mds_log_fname), "%s", log_file_name);
- strcpy(mds_log_fname, log_file_name);
+ lf = mds_log_fname;
- lf = mds_log_fname;
+ if ((fh = fopen(lf, "a+")) != nullptr) {
+ fclose(fh);
+ log_mds_notify("BEGIN MDS LOGGING| PID=<%s> | ARCHW=%x|64bit=%zu\n",
+ process_name, MDS_SELF_ARCHWORD, MDS_WORD_SIZE_TYPE);
+ }
- if ((fh = fopen(lf, "a+")) != NULL) {
- fclose(fh);
- log_mds_notify("BEGIN MDS LOGGING| PID=<%s> |
ARCHW=%x|64bit=%ld\n",
- process_name, MDS_SELF_ARCHWORD,
(long)MDS_WORD_SIZE_TYPE);
- }
-
- return NCSCC_RC_SUCCESS;
+ return NCSCC_RC_SUCCESS;
}
/*******************************************************************************
-* Funtion Name : log_mds_critical
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-void log_mds_critical(char *fmt, ...)
-{
- char str[MDS_MAX_PROCESS_NAME_LEN + 32];
- int i;
- va_list ap;
+ * Funtion Name : log_mds_critical
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+void log_mds_critical(const char *fmt, ...) {
+ if (gl_mds_log_level < NCSMDS_LC_CRITICAL) return;
+ char str[MDS_MAX_PROCESS_NAME_LEN + 32];
+ int i;
+ va_list ap;
- i = snprintf(str, sizeof(str), "%s CRITICAL |", process_name);
- va_start(ap, fmt);
- vsnprintf(str + i, sizeof(str) - i, fmt, ap);
- va_end(ap);
- log_mds(str);
+ i = snprintf(str, sizeof(str), "%s CRITICAL |", process_name);
+ va_start(ap, fmt);
+ vsnprintf(str + i, sizeof(str) - i, fmt, ap);
+ va_end(ap);
+ log_mds(str);
}
/*******************************************************************************
-* Funtion Name : log_mds_err
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-void log_mds_err(char *fmt, ...)
-{
- char str[MDS_MAX_PROCESS_NAME_LEN + 32];
- int i;
- va_list ap;
+ * Funtion Name : log_mds_err
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+void log_mds_err(const char *fmt, ...) {
+ if (gl_mds_log_level < NCSMDS_LC_ERR) return;
+ char str[MDS_MAX_PROCESS_NAME_LEN + 32];
+ int i;
+ va_list ap;
- i = snprintf(str, sizeof(str), "%s ERR |", process_name);
- va_start(ap, fmt);
- vsnprintf(str + i, sizeof(str) - i, fmt, ap);
- va_end(ap);
- log_mds(str);
+ i = snprintf(str, sizeof(str), "%s ERR |", process_name);
+ va_start(ap, fmt);
+ vsnprintf(str + i, sizeof(str) - i, fmt, ap);
+ va_end(ap);
+ log_mds(str);
}
/*******************************************************************************
-* Funtion Name : log_mds_notify
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-void log_mds_notify(char *fmt, ...)
-{
- char str[MDS_MAX_PROCESS_NAME_LEN + 32];
- int i;
- va_list ap;
+ * Funtion Name : log_mds_notify
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+void log_mds_notify(const char *fmt, ...) {
+ if (gl_mds_log_level < NCSMDS_LC_NOTIFY) return;
+ char str[MDS_MAX_PROCESS_NAME_LEN + 32];
+ int i;
+ va_list ap;
- i = snprintf(str, sizeof(str), "%s NOTIFY |", process_name);
- va_start(ap, fmt);
- vsnprintf(str + i, sizeof(str) - i, fmt, ap);
- va_end(ap);
- log_mds(str);
+ i = snprintf(str, sizeof(str), "%s NOTIFY |", process_name);
+ va_start(ap, fmt);
+ vsnprintf(str + i, sizeof(str) - i, fmt, ap);
+ va_end(ap);
+ log_mds(str);
}
/*******************************************************************************
-* Funtion Name : log_mds_info
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-void log_mds_info(char *fmt, ...)
-{
- char str[MDS_MAX_PROCESS_NAME_LEN + 32];
- int i;
- va_list ap;
+ * Funtion Name : log_mds_info
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+void log_mds_info(const char *fmt, ...) {
+ if (gl_mds_log_level < NCSMDS_LC_INFO) return;
+ char str[MDS_MAX_PROCESS_NAME_LEN + 32];
+ int i;
+ va_list ap;
- i = snprintf(str, sizeof(str), "%s INFO |", process_name);
- va_start(ap, fmt);
- vsnprintf(str + i, sizeof(str) - i, fmt, ap);
- va_end(ap);
- log_mds(str);
+ i = snprintf(str, sizeof(str), "%s INFO |", process_name);
+ va_start(ap, fmt);
+ vsnprintf(str + i, sizeof(str) - i, fmt, ap);
+ va_end(ap);
+ log_mds(str);
}
/*******************************************************************************
-* Funtion Name : log_mds_dbg
-*
-* Purpose :
-*
-* Return Value : NCSCC_RC_SUCCESS
-* NCSCC_RC_FAILURE
-*
-*******************************************************************************/
-void log_mds_dbg(char *fmt, ...)
-{
- char str[MDS_MAX_PROCESS_NAME_LEN + 32];
- int i;
- va_list ap;
+ * Funtion Name : log_mds_dbg
+ *
+ * Purpose :
+ *
+ * Return Value : NCSCC_RC_SUCCESS
+ * NCSCC_RC_FAILURE
+ *
+
*******************************************************************************/
+void log_mds_dbg(const char *fmt, ...) {
+ if (gl_mds_log_level < NCSMDS_LC_DBG) return;
+ char str[MDS_MAX_PROCESS_NAME_LEN + 32];
+ int i;
+ va_list ap;
- i = snprintf(str, sizeof(str), "%s DBG |", process_name);
- va_start(ap, fmt);
- vsnprintf(str + i, sizeof(str) - i, fmt, ap);
- va_end(ap);
- log_mds(str);
+ i = snprintf(str, sizeof(str), "%s DBG |", process_name);
+ va_start(ap, fmt);
+ vsnprintf(str + i, sizeof(str) - i, fmt, ap);
+ va_end(ap);
+ log_mds(str);
}
/*******************************************************************************
-* Funtion Name : log_mds
-*
-* Purpose :
-*
-* Return Value : None
-*
-*******************************************************************************/
-static void log_mds(const char *str)
-{
- FILE *fp;
- struct tm *tstamp_data, tm_info;
+ * Funtion Name : log_mds
+ *
+ * Purpose :
+ *
+ * Return Value : None
+ *
+
*******************************************************************************/
+static void log_mds(const char *str) {
+ FILE *fp;
- if (lf != NULL && ((fp = fopen(lf, "a+")) != NULL)) {
- struct timeval tv;
- char asc_tod[128];
- char log_string[512];
- int i;
+ if (lf != nullptr && ((fp = fopen(lf, "a+")) != nullptr)) {
+ struct tm tm_info;
+ struct timeval tv;
+ char asc_tod[128];
+ char log_string[512];
+ int i;
- gettimeofday(&tv, NULL);
- tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
- osafassert(tstamp_data);
+ gettimeofday(&tv, nullptr);
+ struct tm* tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
+ osafassert(tstamp_data);
- strftime(asc_tod, sizeof(asc_tod), "%b %e %k:%M:%S",
tstamp_data);
- i = snprintf(log_string, sizeof(log_string), "%s.%06ld %s",
- asc_tod, tv.tv_usec, str);
+ strftime(asc_tod, sizeof(asc_tod), "%b %e %k:%M:%S", tstamp_data);
+ i = snprintf(log_string, sizeof(log_string), "%s.%06ld %s",
+ asc_tod, tv.tv_usec, str);
- if (i >= sizeof(log_string)) {
- i = sizeof(log_string);
- log_string[i - 1] = '\n';
- } else if (log_string[i - 1] != '\n') {
- log_string[i] = '\n';
- i++;
- }
+ if (i < 0) {
+ i = 1;
+ log_string[i - 1] = '\n';
+ } else if (static_cast<size_t>(i) >= sizeof(log_string)) {
+ i = sizeof(log_string);
+ log_string[i - 1] = '\n';
+ } else if (log_string[i - 1] != '\n') {
+ log_string[i] = '\n';
+ i++;
+ }
- if (! fwrite(log_string, 1, i, fp)) {
- fclose(fp);
- return;
- }
+ if (fwrite(log_string, 1, i, fp) != static_cast<size_t>(i)) {
+ fclose(fp);
+ return;
+ }
- fclose(fp);
- }
+ fclose(fp);
+ }
}
-
-
diff --git a/osaf/libs/core/mds/mds_main.c b/osaf/libs/core/mds/mds_main.c
--- a/osaf/libs/core/mds/mds_main.c
+++ b/osaf/libs/core/mds/mds_main.c
@@ -102,7 +102,6 @@ static void mds_mutex_init_once(void)
}
/* global Log level variable */
-uint32_t gl_mds_log_level = 3;
uint32_t gl_mds_checksum = 0;
uint32_t MDS_QUIESCED_TMR_VAL = 80;
@@ -558,7 +557,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
char buff[50], pref[50];
snprintf(buff, sizeof(buff), PKGLOGDIR "/mds.log");
memset(pref, 0 ,sizeof(pref));
- mds_log_init(buff, pref);
+ mds_log_init(buff);
}
osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel