From owner-p4-projects@FreeBSD.ORG Mon Jun 26 06:29:44 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9796916A406; Mon, 26 Jun 2006 06:29:42 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 195CB16A577 for ; Mon, 26 Jun 2006 06:29:42 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id EDFD1444C4 for ; Mon, 26 Jun 2006 06:04:00 +0000 (GMT) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k5Q640Ee022631 for ; Mon, 26 Jun 2006 06:04:00 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k5Q640jm022626 for perforce@freebsd.org; Mon, 26 Jun 2006 06:04:00 GMT (envelope-from jb@freebsd.org) Date: Mon, 26 Jun 2006 06:04:00 GMT Message-Id: <200606260604.k5Q640jm022626@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 100030 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2006 06:29:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=100030 Change 100030 by jb@jb_freebsd2 on 2006/06/26 06:03:26 Allow the state creation function to be called for anon states. For the time being, use only high level cyclic timers. The low level ones come from software interrupts and the current cyclic implementation causes scheduler instability when using those. The long term solution may well be to only have one cyclic timer level since FreeBSD isn't built on top of this timer design. Affected files ... .. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_state.c#10 edit Differences ... ==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_state.c#10 (text+ko) ==== @@ -191,7 +191,7 @@ major_t major; #else cred_t *cr = NULL; - int m = minor(dev); + int m = 0; #endif char c[30]; dtrace_state_t *state; @@ -212,8 +212,10 @@ state = ddi_get_soft_state(dtrace_softstate, m); #else - if (dev != NULL) + if (dev != NULL) { cr = dev->si_cred; + m = minor(dev); + } /* Allocate memory for the state. */ state = malloc(sizeof(dtrace_state_t), M_DTRACE, M_WAITOK | M_ZERO); @@ -710,6 +712,8 @@ hdlr.cyh_func = (cyc_func_t)dtrace_state_clean; hdlr.cyh_arg = state; hdlr.cyh_level = CY_LOW_LEVEL; +/* XXX CY_LOW_LEVEL requires use of the scheduler on FreeBSD and this ends in tears for anon enablings. */ +hdlr.cyh_level = CY_HIGH_LEVEL; when.cyt_when = 0; when.cyt_interval = opt[DTRACEOPT_CLEANRATE]; @@ -719,6 +723,8 @@ hdlr.cyh_func = (cyc_func_t)dtrace_state_deadman; hdlr.cyh_arg = state; hdlr.cyh_level = CY_LOW_LEVEL; +/* XXX CY_LOW_LEVEL requires use of the scheduler on FreeBSD and this ends in tears for anon enablings. */ +hdlr.cyh_level = CY_HIGH_LEVEL; when.cyt_when = 0; when.cyt_interval = dtrace_deadman_interval;