From owner-svn-src-head@FreeBSD.ORG Mon May 11 18:52:46 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5F56106566C; Mon, 11 May 2009 18:52:46 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9468C8FC17; Mon, 11 May 2009 18:52:46 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4BIqku0099293; Mon, 11 May 2009 18:52:46 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4BIqkMd099292; Mon, 11 May 2009 18:52:46 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <200905111852.n4BIqkMd099292@svn.freebsd.org> From: Ed Schouten Date: Mon, 11 May 2009 18:52:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r191999 - head/sys/dev/snp X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 May 2009 18:52:47 -0000 Author: ed Date: Mon May 11 18:52:46 2009 New Revision: 191999 URL: http://svn.freebsd.org/changeset/base/191999 Log: Add macros around the sx operations in snp(4). As an experiment, I changed snp(4) to use a mutex instead of an sx lock. We can't enable this right now, because Syscons still picks up Giant. It's nice to already have the framework there. Modified: head/sys/dev/snp/snp.c Modified: head/sys/dev/snp/snp.c ============================================================================== --- head/sys/dev/snp/snp.c Mon May 11 18:45:04 2009 (r191998) +++ head/sys/dev/snp/snp.c Mon May 11 18:52:46 2009 (r191999) @@ -43,11 +43,22 @@ __FBSDID("$FreeBSD$"); #include static struct cdev *snp_dev; +static MALLOC_DEFINE(M_SNP, "snp", "tty snoop device"); + /* XXX: should be mtx, but TTY can be locked by Giant. */ +#if 0 +static struct mtx snp_register_lock; +MTX_SYSINIT(snp_register_lock, &snp_register_lock, + "tty snoop registration", MTX_DEF); +#define SNP_LOCK() mtx_lock(&snp_register_lock) +#define SNP_UNLOCK() mtx_unlock(&snp_register_lock) +#else static struct sx snp_register_lock; SX_SYSINIT(snp_register_lock, &snp_register_lock, "tty snoop registration"); -static MALLOC_DEFINE(M_SNP, "snp", "tty snoop device"); +#define SNP_LOCK() sx_xlock(&snp_register_lock) +#define SNP_UNLOCK() sx_xunlock(&snp_register_lock) +#endif /* * There is no need to have a big input buffer. In most typical setups, @@ -241,14 +252,14 @@ snp_ioctl(struct cdev *dev, u_long cmd, switch (cmd) { case SNPSTTY: /* Bind TTY to snoop instance. */ - sx_xlock(&snp_register_lock); + SNP_LOCK(); if (ss->snp_tty != NULL) { - sx_xunlock(&snp_register_lock); + SNP_UNLOCK(); return (EBUSY); } error = ttyhook_register(&ss->snp_tty, td->td_proc, *(int *)data, &snp_hook, ss); - sx_xunlock(&snp_register_lock); + SNP_UNLOCK(); if (error != 0) return (error);