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