Date: Tue, 18 Jun 2013 10:28:59 GMT From: Jonathan Anderson <jonathan@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 229884 for review Message-ID: <201306181028.r5IASxrp087477@skunkworks.freebsd.org>
index | next in thread | raw e-mail
http://p4web.freebsd.org/@@229884?ac=10 Change 229884 by jonathan@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, };help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306181028.r5IASxrp087477>
