PERFORCE change 229923 for review
Robert Watson
rwatson at FreeBSD.org
Tue Jun 18 21:51:29 UTC 2013
http://p4web.freebsd.org/@@229923?ac=10
Change 229923 by rwatson at rwatson_cinnamon on 2013/06/18 21:51:11
Implement the tesla_event_handler teh_err method for DTrace and
failstop in preference to dereferencing a NULL pointer.
Affected files ...
.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_dtrace.c#6 edit
.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#11 edit
Differences ...
==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_dtrace.c#6 (text+ko) ====
@@ -52,6 +52,8 @@
SDT_PROBE_DEFINE3(tesla, kernel, notify, bad_transition, bad-transition,
"struct tesla_class *", "struct tesla_instance *",
"struct tesla_transitions *");
+SDT_PROBE_DEFINE3(tesla, kernel, notify, err, err, "struct tesla_class *",
+ "int", "const char *");
SDT_PROBE_DEFINE2(tesla, kernel, notify, accept, accept,
"struct tesla_class *", "struct tesla_instance *");
SDT_PROBE_DEFINE3(tesla, kernel, notify, ignored, ignored-event,
@@ -98,6 +100,13 @@
}
static void
+err(struct tesla_class *tcp, int errno, const char *message)
+{
+
+ SDT_PROBE(tesla, kernel, notify, err, tcp, errno, message, 0, 0);
+}
+
+static void
accept(struct tesla_class *tcp, struct tesla_instance *tip)
{
@@ -118,6 +127,7 @@
.teh_clone = clone,
.teh_fail_no_instance = no_instance,
.teh_bad_transition = bad_transition,
+ .teh_err = err,
.teh_accept = accept,
.teh_ignored = ignored,
};
==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#11 (text+ko) ====
@@ -330,12 +330,21 @@
tesla_panic("TESLA: failure in '%s': bad transition", tcp->tc_name);
}
+static void
+panic_err(struct tesla_class *tcp, int errno, const char *message)
+{
+
+ tesla_panic("TESLA: error in '%s': %s (%d)", tcp->tc_name, message,
+ errno);
+}
+
static const struct tesla_event_handlers failstop_handlers = {
.teh_init = ev_noop,
.teh_transition = ev_noop,
.teh_clone = ev_noop,
.teh_fail_no_instance = panic_no_instance,
.teh_bad_transition = panic_bad_transition,
+ .teh_err = panic_err,
.teh_accept = ev_noop,
.teh_ignored = ev_noop,
};
More information about the p4-projects
mailing list