/*
* Tracing enable/disable code
*/
-int toggle_ras_mc_event(struct ras_events *ras, int enable)
+static int __toggle_ras_mc_event(struct ras_events *ras, int enable)
{
int fd, rc;
return 0;
}
+int toggle_ras_mc_event(int enable)
+{
+ struct ras_events *ras;
+ int rc = 0;
+
+ ras = calloc(1, sizeof(*ras));
+ if (!ras) {
+ log(TERM, LOG_ERR, "Can't allocate memory for ras struct\n");
+ return errno;
+ }
+
+ rc = get_tracing_dir(ras);
+ if (rc < 0) {
+ log(TERM, LOG_ERR, "Can't locate a mounted debugfs\n");
+ goto free_ras;
+ }
+
+ __toggle_ras_mc_event(ras, enable);
+
+free_ras:
+ free(ras);
+ return rc;
+}
+
+
/*
* Tracing read code
*/
}
/* Enable RAS events */
- rc = toggle_ras_mc_event(ras, 1);
+ rc = __toggle_ras_mc_event(ras, 1);
if (rc < 0) {
log(TERM, LOG_ERR, "Can't enable RAS tracing\n");
goto free_ras;
};
/* Function prototypes */
-int toggle_ras_mc_event(struct ras_events *ras, int enable);
+int toggle_ras_mc_event(int enable);
int handle_ras_events(int record_events);
char *mc_event_error_type(unsigned long long err_type);
return -1;
}
- if (args.enable_ras > 0)
- toggle_ras_mc_event(ras, 1);
- else if (args.enable_ras < 0)
- toggle_ras_mc_event(ras, 0);
+ if (args.enable_ras) {
+ int enable;
+
+ enable = (args.enable_ras > 0) ? 1 : 0;
+ toggle_ras_mc_event(enable);
- if (args.enable_ras)
return 0;
+ }
openlog(TOOL_NAME, 0, LOG_DAEMON);
if (!args.foreground)