From owner-freebsd-hackers Tue Apr 17 1:33:54 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from bazooka.unixfreak.org (bazooka.unixfreak.org [63.198.170.138]) by hub.freebsd.org (Postfix) with ESMTP id 962A837B43E for ; Tue, 17 Apr 2001 01:33:50 -0700 (PDT) (envelope-from dima@unixfreak.org) Received: from spike.unixfreak.org (spike [63.198.170.139]) by bazooka.unixfreak.org (Postfix) with ESMTP id 5989F3E2F for ; Tue, 17 Apr 2001 01:33:50 -0700 (PDT) To: hackers@freebsd.org Subject: Patch to make snp(4) devfs-friendly Date: Tue, 17 Apr 2001 01:33:50 -0700 From: Dima Dorfman Message-Id: <20010417083350.5989F3E2F@bazooka.unixfreak.org> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Attached is a patch to make the snp(4) driver play ball with DEVFS. For better or for worse, I used the bpf(4) driver as a guide on how to do this. If someone could review this, and, if nothing is wrong with it, commit it, I'd appreciate it. Thanks in advance, Dima Dorfman dima@unixfreak.org Index: tty_snoop.c =================================================================== RCS file: /st/src/FreeBSD/src/sys/kern/tty_snoop.c,v retrieving revision 1.52 diff -u -r1.52 tty_snoop.c --- tty_snoop.c 2001/03/26 12:41:01 1.52 +++ tty_snoop.c 2001/04/17 08:17:23 @@ -286,12 +286,9 @@ if ((error = suser(p)) != 0) return (error); - if (dev->si_drv1 == NULL) { - int mynor = minor(dev); - + if (dev->si_drv1 == NULL) dev->si_drv1 = snp = malloc(sizeof(*snp), M_SNP, M_WAITOK|M_ZERO); - make_dev(&snp_cdevsw, mynor, 0, 0, 0600, "snp%d", mynor); - } else + else return (EBUSY); /* @@ -365,6 +362,7 @@ free(snp->snp_buf, M_SNP); snp->snp_flags &= ~SNOOP_OPEN; dev->si_drv1 = NULL; + destroy_dev(dev); return (snp_detach(snp)); } @@ -505,10 +503,25 @@ static void snp_drvinit __P((void *unused)); static void +snp_clone(void *arg, char *name, int namelen, dev_t *dev) +{ + int u; + + if (*dev != NODEV) + return; + if (dev_stdclone(name, NULL, "snp", &u) != 1) + return; + *dev = make_dev(&snp_cdevsw, unit2minor(u), UID_ROOT, GID_WHEEL, 0600, + "snp%d", u); + return; +} + +static void snp_drvinit(unused) void *unused; { + EVENTHANDLER_REGISTER(dev_clone, snp_clone, 0, 1000); cdevsw_add(&snp_cdevsw); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message