From owner-p4-projects@FreeBSD.ORG Tue Jun 18 10:26:57 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7537EB84; Tue, 18 Jun 2013 10:26:57 +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 1BA8AB82 for ; Tue, 18 Jun 2013 10:26:57 +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 E75461E03 for ; Tue, 18 Jun 2013 10:26:56 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id r5IAQu47087290 for ; Tue, 18 Jun 2013 10:26:56 GMT (envelope-from jonathan@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id r5IAQu63087287 for perforce@freebsd.org; Tue, 18 Jun 2013 10:26:56 GMT (envelope-from jonathan@freebsd.org) Date: Tue, 18 Jun 2013 10:26:56 GMT Message-Id: <201306181026.r5IAQu63087287@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jonathan@freebsd.org using -f From: Jonathan Anderson Subject: PERFORCE change 229882 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:26:57 -0000 http://p4web.freebsd.org/@@229882?ac=10 Change 229882 by jonathan@jonathan-on-zenith on 2013/06/18 10:26:28 Impprove printf-based handling of TESLA events in the kernel. Affected files ... .. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_debug.c#4 edit .. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#8 edit Differences ... ==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_debug.c#4 (text+ko) ==== @@ -132,6 +132,24 @@ tesla_debugging(const char *name) { #ifdef _KERNEL + /* + * In the kernel, only print 'libtesla.{event,instance}*' output. + */ + static const char* allowed[] = { + "libtesla.event", + "libtesla.instance", + NULL, + }; + const size_t len = sizeof(allowed) / sizeof(allowed[0]); + + for (size_t i = 0; (i < len) && (allowed[i] != NULL); i++) { + const char *s = allowed[i]; + const size_t len = strlen(s); + + if (strncmp(s, name, len) == 0) + return 1; + } + return 0; #else #ifdef HAVE_ISSETUGID ==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#8 (text+ko) ==== @@ -229,7 +229,7 @@ next = sprint_transitions(next, end, transp); assert(next > buffer); - error("%s", buffer); + DEBUG(libtesla.instance.fail, "%s", buffer); } static void @@ -255,7 +255,7 @@ next = sprint_transitions(next, end, transp); assert(next > buffer); - error("%s", buffer); + DEBUG(libtesla.instance.fail, "%s", buffer); } static void @@ -326,8 +326,8 @@ /** - * Default event handlers: always print, then use DTrace in the kernel - * if it's available; if it isn't, panic on failure. + * Default event handlers: printf first (but disable in kernel), then + * either use DTrace or fail-stop if DTrace is not available. */ const static struct tesla_event_handlers* const default_handlers[] = { &printf_handlers, @@ -340,7 +340,11 @@ static struct tesla_event_metahandler default_event_handlers = { .tem_length = sizeof(default_handlers) / sizeof(*default_handlers), - .tem_mask = 0xFFFF, +#if defined(_KERNEL) && defined(KDTRACE_HOOKS) + .tem_mask = 0x2, +#else + .tem_mask = 0x3, +#endif .tem_handlers = default_handlers, };