From owner-p4-projects@FreeBSD.ORG Tue Jun 18 10:29:00 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F0414C9E; Tue, 18 Jun 2013 10:28:59 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 9697EC9C for ; Tue, 18 Jun 2013 10:28:59 +0000 (UTC) (envelope-from jonathan@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks6.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) by mx1.freebsd.org (Postfix) with ESMTP id 790851E1F for ; Tue, 18 Jun 2013 10:28:59 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r5IASxlH087480 for ; Tue, 18 Jun 2013 10:28:59 GMT (envelope-from jonathan@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r5IASxrp087477 for perforce@freebsd.org; Tue, 18 Jun 2013 10:28:59 GMT (envelope-from jonathan@freebsd.org) Date: Tue, 18 Jun 2013 10:28:59 GMT Message-Id: <201306181028.r5IASxrp087477@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jonathan@freebsd.org using -f From: Jonathan Anderson Subject: PERFORCE change 229884 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Jun 2013 10:29:00 -0000 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, };