@@ -48,7 +48,6 @@
#endif
#include <complib/cl_spinlock.h>
#include <opensm/osm_base.h>
-#include <opensm/osm_subnet.h>
#include <iba/ib_types.h>
#include <stdio.h>
@@ -99,10 +98,7 @@ BEGIN_C_DECLS
* AUTHOR
*
*********/
-#ifndef OSM_LOG_LEVEL_T_DEFINED
-#define OSM_LOG_LEVEL_T_DEFINED
typedef uint8_t osm_log_level_t;
-#endif
#define OSM_LOG_NONE 0x00
#define OSM_LOG_ERROR 0x01
@@ -139,7 +135,7 @@ typedef struct osm_log {
boolean_t daemon;
char *log_file_name;
char *log_prefix;
- osm_subn_t *p_subn;
+ osm_log_level_t per_mod_log_tbl[256];
} osm_log_t;
/*********/
@@ -156,12 +152,12 @@ typedef struct osm_log {
*
* SYNOPSIS
*/
-osm_log_level_t osm_get_log_per_module(IN osm_subn_t * subn,
+osm_log_level_t osm_get_log_per_module(IN osm_log_t * p_log,
IN const int file_id);
/*
* PARAMETERS
- * subn
- * [in] Pointer to an osm_subn_t object
+ * p_log
+ * [in] Pointer to a Log object to construct.
*
* file_id
* [in] File ID for module
@@ -170,6 +166,55 @@ osm_log_level_t osm_get_log_per_module(IN osm_subn_t * subn,
* The log level from the per module logging structure for this file ID.
*********/
+/****f* OpenSM: Log/osm_set_log_per_module
+ * NAME
+ * osm_set_log_per_module
+ *
+ * DESCRIPTION
+ * This sets log level for the given file ID in the per module log table.
+ * NOTE: this code is not thread safe. Need to grab the lock before
+ * calling it.
+ *
+ * SYNOPSIS
+ */
+void osm_set_log_per_module(IN osm_log_t * p_log, IN const int file_id,
+ IN osm_log_level_t level);
+/*
+ * PARAMETERS
+ * p_log
+ * [in] Pointer to a Log object to construct.
+ *
+ * file_id
+ * [in] File ID for module
+ *
+ * level
+ * [in] Log level of the module
+ *
+ * RETURN VALUES
+ * This function does not return a value.
+ *********/
+
+/****f* OpenSM: Log/osm_reset_log_per_module
+ * NAME
+ * osm_reset_log_per_module
+ *
+ * DESCRIPTION
+ * This resets log level for the entire per module log table.
+ * NOTE: this code is not thread safe. Need to grab the lock before
+ * calling it.
+ *
+ * SYNOPSIS
+ */
+void osm_reset_log_per_module(IN osm_log_t * p_log);
+/*
+ * PARAMETERS
+ * p_log
+ * [in] Pointer to a Log object to construct.
+ *
+ * RETURN VALUES
+ * This function does not return a value.
+ *********/
+
/****f* OpenSM: Log/osm_log_construct
* NAME
* osm_log_construct
@@ -432,9 +477,7 @@ static inline boolean_t osm_log_is_active_v2(IN const osm_log_t * p_log,
{
if ((p_log->level & level) != 0)
return 1;
- if (!p_log->p_subn)
- return 0;
- if ((level & p_log->p_subn->per_mod_log_tbl[file_id]))
+ if ((level & p_log->per_mod_log_tbl[file_id]))
return 1;
return 0;
}
@@ -74,11 +74,6 @@ BEGIN_C_DECLS
#define OSM_PARTITION_ENFORCE_OUT "out"
#define OSM_PARTITION_ENFORCE_OFF "off"
-#ifndef OSM_LOG_LEVEL_T_DEFINED
-#define OSM_LOG_LEVEL_T_DEFINED
-typedef uint8_t osm_log_level_t;
-#endif
-
typedef enum _osm_partition_enforce_type_enum {
OSM_PARTITION_ENFORCE_TYPE_BOTH,
OSM_PARTITION_ENFORCE_TYPE_IN,
@@ -604,7 +599,6 @@ typedef struct osm_subn {
unsigned need_update;
cl_fmap_t mgrp_mgid_tbl;
void *mboxes[IB_LID_MCAST_END_HO - IB_LID_MCAST_START_HO + 1];
- osm_log_level_t per_mod_log_tbl[256];
} osm_subn_t;
/*
* FIELDS
@@ -749,9 +743,6 @@ typedef struct osm_subn {
* Array of pointers to all Multicast MLID box objects in the
* subnet. Indexed by MLID offset from base MLID.
*
-* per_mod_log_tbl
-* Array of log levels based on per module logging file ID.
-*
* SEE ALSO
* Subnet object
*********/
@@ -92,5 +92,7 @@ OPENSM_1.5 {
osm_log_msg_box_v2;
osm_log_is_active_v2;
osm_get_log_per_module;
+ osm_set_log_per_module;
+ osm_reset_log_per_module;
local: *;
};
@@ -239,9 +239,7 @@ void osm_log_v2(IN osm_log_t * p_log, IN osm_log_level_t verbosity,
/* If this is a call to syslog - always print it */
if (!(verbosity & p_log->level)) {
- if (!p_log->p_subn)
- return;
- if (!(verbosity & p_log->p_subn->per_mod_log_tbl[file_id]))
+ if (!(verbosity & p_log->per_mod_log_tbl[file_id]))
return;
}
@@ -472,7 +470,7 @@ ib_api_status_t osm_log_init_v2(IN osm_log_t * p_log, IN boolean_t flush,
p_log->max_size = max_size << 20; /* convert size in MB to bytes */
p_log->accum_log_file = accum_log_file;
p_log->log_file_name = (char *)log_file;
- p_log->p_subn = NULL;
+ memset(p_log->per_mod_log_tbl, 0, sizeof(p_log->per_mod_log_tbl));
openlog("OpenSM", LOG_CONS | LOG_PID, LOG_USER);
@@ -498,8 +496,19 @@ ib_api_status_t osm_log_init(IN osm_log_t * p_log, IN boolean_t flush,
accum_log_file);
}
-osm_log_level_t osm_get_log_per_module(IN osm_subn_t * subn,
+osm_log_level_t osm_get_log_per_module(IN osm_log_t * p_log,
IN const int file_id)
{
- return subn->per_mod_log_tbl[file_id];
+ return p_log->per_mod_log_tbl[file_id];
+}
+
+void osm_set_log_per_module(IN osm_log_t * p_log, IN const int file_id,
+ IN osm_log_level_t level)
+{
+ p_log->per_mod_log_tbl[file_id] = level;
+}
+
+void osm_reset_log_per_module(IN osm_log_t * p_log)
+{
+ memset(p_log->per_mod_log_tbl, 0, sizeof(p_log->per_mod_log_tbl));
}
@@ -375,7 +375,6 @@ ib_api_status_t osm_opensm_init(IN osm_opensm_t * p_osm,
if (status != IB_SUCCESS)
return status;
p_osm->log.log_prefix = p_opt->log_prefix;
- p_osm->log.p_subn = &p_osm->subn;
/* If there is a log level defined - add the OSM_VERSION to it */
osm_log_v2(&p_osm->log,
@@ -1201,7 +1201,7 @@ static ib_api_status_t insert_per_module_debug(IN osm_subn_t * p_subn,
"Module name %s not found\n", mod_name);
return IB_ERROR;
}
- p_subn->per_mod_log_tbl[index] = level;
+ osm_set_log_per_module(&p_subn->p_osm->log, index, level);
return IB_SUCCESS;
}
@@ -1213,7 +1213,7 @@ static ib_api_status_t parse_per_mod_logging_file(IN osm_subn_t * p_subn)
int line = 0;
int errors = 0;
- memset(p_subn->per_mod_log_tbl, 0, sizeof(p_subn->per_mod_log_tbl));
+ osm_reset_log_per_module(log);
fp = fopen(p_subn->opt.per_module_logging_file, "r");
if (!fp) {