PERFORCE change 229884 for review

Jonathan Anderson jonathan at FreeBSD.org
Tue Jun 18 10:29:00 UTC 2013


http://p4web.freebsd.org/@@229884?ac=10

Change 229884 by jonathan at jonathan-on-zenith on 2013/06/18 10:28:01

	Add tan event-handling path for less-serious-than-panic() errors.

Affected files ...

.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/include/libtesla.h#7 edit
.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_internal.h#7 edit
.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#9 edit

Differences ...

==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/include/libtesla.h#7 (text+ko) ====

@@ -230,6 +230,9 @@
 typedef void	(*tesla_ev_bad_transition)(struct tesla_class *,
 	    struct tesla_instance *, const struct tesla_transitions *);
 
+/** Generic error handler. */
+typedef void	(*tesla_ev_error)(struct tesla_class *, int32_t, const char *);
+
 /** A @ref tesla_instance has accepted a sequence of events. */
 typedef void	(*tesla_ev_accept)(struct tesla_class *,
 	    struct tesla_instance *);
@@ -245,6 +248,7 @@
 	tesla_ev_clone		teh_clone;
 	tesla_ev_no_instance	teh_fail_no_instance;
 	tesla_ev_bad_transition	teh_bad_transition;
+	tesla_ev_error		teh_err;
 	tesla_ev_accept		teh_accept;
 	tesla_ev_ignored	teh_ignored;
 };

==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_internal.h#7 (text+ko) ====

@@ -324,6 +324,7 @@
 	    const struct tesla_transitions *);
 void	ev_bad_transition(struct tesla_class *, struct tesla_instance *,
 	    const struct tesla_transitions *);
+void	ev_err(struct tesla_class *tcp, int errno, const char *message);
 void	ev_accept(struct tesla_class *, struct tesla_instance *);
 void	ev_ignored(const struct tesla_class *, const struct tesla_key *,
 	    const struct tesla_transitions *);

==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#9 (text+ko) ====

@@ -47,7 +47,7 @@
 
 	if (!tehp || !tehp->teh_init || !tehp->teh_transition
 	    || !tehp->teh_clone || !tehp->teh_fail_no_instance
-	    || !tehp->teh_bad_transition
+	    || !tehp->teh_bad_transition || !tehp->teh_err
 	    || !tehp->teh_accept || !tehp->teh_ignored)
 		return (TESLA_ERROR_EINVAL);
 
@@ -151,6 +151,13 @@
 }
 
 void
+ev_err(struct tesla_class *tcp, int errno, const char *message)
+{
+
+	FOREACH_ERROR_HANDLER()->teh_err(tcp, errno, message);
+}
+
+void
 ev_accept(struct tesla_class *tcp, struct tesla_instance *tip)
 {
 
@@ -259,6 +266,14 @@
 }
 
 static void
+print_error(struct tesla_class *tcp, int errno, const char *message)
+{
+
+	DEBUG(libtesla.event, "%s in '%s': %s\n",
+	      tesla_strerror(errno), tcp->tc_name, message);
+}
+
+static void
 print_accept(struct tesla_class *tcp, struct tesla_instance *tip)
 {
 
@@ -288,6 +303,7 @@
 	.teh_clone		= print_clone,
 	.teh_fail_no_instance	= print_no_instance,
 	.teh_bad_transition	= print_bad_transition,
+	.teh_err		= print_error,
 	.teh_accept		= print_accept,
 	.teh_ignored		= print_ignored,
 };


More information about the p4-projects mailing list