Module Name: src Committed By: pgoyette Date: Sun Jul 17 05:05:11 UTC 2016
Modified Files: src/sys/dev/raidframe [pgoyette-localcount]: rf_netbsdkintf.c src/sys/external/bsd/ipf/netinet [pgoyette-localcount]: ip_fil_netbsd.c src/sys/net [pgoyette-localcount]: bpf.c src/sys/netsmb [pgoyette-localcount]: smb_dev.c Log Message: Adapt some modular drivers to the localcount(9) world. We're still not actually using the localcount stuff, but we need to differentiate between built-in vs loaded drivers and allocate a "struct localcount" only for loaded drivers. To generate a diff of this commit: cvs rdiff -u -r1.345.2.1 -r1.345.2.2 src/sys/dev/raidframe/rf_netbsdkintf.c cvs rdiff -u -r1.16 -r1.16.2.1 \ src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c cvs rdiff -u -r1.199 -r1.199.2.1 src/sys/net/bpf.c cvs rdiff -u -r1.44 -r1.44.2.1 src/sys/netsmb/smb_dev.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/raidframe/rf_netbsdkintf.c diff -u src/sys/dev/raidframe/rf_netbsdkintf.c:1.345.2.1 src/sys/dev/raidframe/rf_netbsdkintf.c:1.345.2.2 --- src/sys/dev/raidframe/rf_netbsdkintf.c:1.345.2.1 Sun Jul 17 02:44:41 2016 +++ src/sys/dev/raidframe/rf_netbsdkintf.c Sun Jul 17 05:05:10 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: rf_netbsdkintf.c,v 1.345.2.1 2016/07/17 02:44:41 pgoyette Exp $ */ +/* $NetBSD: rf_netbsdkintf.c,v 1.345.2.2 2016/07/17 05:05:10 pgoyette Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc. @@ -101,7 +101,7 @@ ***********************************************************/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.345.2.1 2016/07/17 02:44:41 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.345.2.2 2016/07/17 05:05:10 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -127,6 +127,7 @@ __KERNEL_RCSID(0, "$NetBSD: rf_netbsdkin #include <sys/reboot.h> #include <sys/kauth.h> #include <sys/module.h> +#include <sys/localcount.h> #include <prop/proplib.h> @@ -216,6 +217,10 @@ static dev_type_strategy(raidstrategy); static dev_type_dump(raiddump); static dev_type_size(raidsize); +#ifdef _MODULE +struct localcount raid_localcount_bdev, raid_localcount_cdev; +#endif + const struct bdevsw raid_bdevsw = { .d_open = raidopen, .d_close = raidclose, @@ -224,6 +229,9 @@ const struct bdevsw raid_bdevsw = { .d_dump = raiddump, .d_psize = raidsize, .d_discard = nodiscard, +#ifdef _MODULE + .d_localcount = &raid_localcount_bdev, +#endif .d_flag = D_DISK }; @@ -239,6 +247,9 @@ const struct cdevsw raid_cdevsw = { .d_mmap = nommap, .d_kqfilter = nokqfilter, .d_discard = nodiscard, +#ifdef _MODULE + .d_localcount = &raid_localcount_bdev, +#endif .d_flag = D_DISK }; Index: src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c diff -u src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.16 src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.16.2.1 --- src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.16 Thu Jul 7 09:32:02 2016 +++ src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c Sun Jul 17 05:05:10 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_fil_netbsd.c,v 1.16 2016/07/07 09:32:02 ozaki-r Exp $ */ +/* $NetBSD: ip_fil_netbsd.c,v 1.16.2.1 2016/07/17 05:05:10 pgoyette Exp $ */ /* * Copyright (C) 2012 by Darren Reed. @@ -8,7 +8,7 @@ #if !defined(lint) #if defined(__NetBSD__) #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_fil_netbsd.c,v 1.16 2016/07/07 09:32:02 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_fil_netbsd.c,v 1.16.2.1 2016/07/17 05:05:10 pgoyette Exp $"); #else static const char sccsid[] = "@(#)ip_fil.c 2.41 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: ip_fil_netbsd.c,v 1.1.1.2 2012/07/22 13:45:17 darrenr Exp"; @@ -57,6 +57,9 @@ static const char rcsid[] = "@(#)Id: ip_ #include <sys/module.h> #include <sys/mutex.h> #endif +#if (__NetBSD_Version__ >= 799003300) +#include <sys/localcount.h> +#endif #include <net/if.h> #include <net/route.h> @@ -137,6 +140,10 @@ static int ipfwrite(dev_t, struct u static int ipfpoll(dev_t, int events, PROC_T *); static void ipf_timer_func(void *ptr); +#if defined(_MODULE) && (__NetBSD_Version__ >= 799003300) +struct localcount ipl_localcount; +#endif + const struct cdevsw ipl_cdevsw = { .d_open = ipfopen, .d_close = ipfclose, @@ -150,6 +157,10 @@ const struct cdevsw ipl_cdevsw = { #if (__NetBSD_Version__ >= 200000000) .d_kqfilter = nokqfilter, #endif +#ifdef _MODULE + .d_localcount = &ipl_localcount, +#endif + .d_discard = nodiscard, #ifdef D_OTHER .d_flag = D_OTHER @@ -2162,7 +2173,9 @@ static int ipl_init(void *); static int ipl_fini(void *); static int ipl_modcmd(modcmd_t, void *); +#ifdef _MODULE static devmajor_t ipl_cmaj = -1, ipl_bmaj = -1; +#endif static int ipl_modcmd(modcmd_t cmd, void *opaque) @@ -2198,6 +2211,7 @@ ipl_init(void *opaque) mutex_init(&ipf_ref_mutex, MUTEX_DEFAULT, IPL_NONE); ipf_active = 0; +#ifdef _MODULE /* * Insert ourself into the cdevsw list. It's OK if we are * already there, since this will happen when our module is @@ -2209,6 +2223,7 @@ ipl_init(void *opaque) error = devsw_attach("ipl", NULL, &ipl_bmaj, &ipl_cdevsw, &ipl_cmaj); if (error == EEXIST) error = 0; +#endif if (error) ipl_fini(opaque); @@ -2220,7 +2235,9 @@ static int ipl_fini(void *opaque) { +#ifdef _MODULE (void)devsw_detach(NULL, &ipl_cdevsw); +#endif /* * Grab the mutex, verify that there are no references @@ -2230,8 +2247,10 @@ ipl_fini(void *opaque) */ mutex_enter(&ipf_ref_mutex); if (ipf_active != 0 || ipfmain.ipf_running > 0) { +#ifdef _MODULE (void)devsw_attach("ipl", NULL, &ipl_bmaj, &ipl_cdevsw, &ipl_cmaj); +#endif mutex_exit(&ipf_ref_mutex); return EBUSY; } Index: src/sys/net/bpf.c diff -u src/sys/net/bpf.c:1.199 src/sys/net/bpf.c:1.199.2.1 --- src/sys/net/bpf.c:1.199 Mon Jun 20 06:46:37 2016 +++ src/sys/net/bpf.c Sun Jul 17 05:05:10 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: bpf.c,v 1.199 2016/06/20 06:46:37 knakahara Exp $ */ +/* $NetBSD: bpf.c,v 1.199.2.1 2016/07/17 05:05:10 pgoyette Exp $ */ /* * Copyright (c) 1990, 1991, 1993 @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.199 2016/06/20 06:46:37 knakahara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.199.2.1 2016/07/17 05:05:10 pgoyette Exp $"); #if defined(_KERNEL_OPT) #include "opt_bpf.h" @@ -61,6 +61,7 @@ __KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.19 #include <sys/module.h> #include <sys/once.h> #include <sys/atomic.h> +#include <sys/localcount.h> #include <sys/file.h> #include <sys/filedesc.h> @@ -180,6 +181,10 @@ static const struct fileops bpf_fileops dev_type_open(bpfopen); +#ifdef _MODULE +struct localcount bpf_localcount; +#endif + const struct cdevsw bpf_cdevsw = { .d_open = bpfopen, .d_close = noclose, @@ -192,6 +197,9 @@ const struct cdevsw bpf_cdevsw = { .d_mmap = nommap, .d_kqfilter = nokqfilter, .d_discard = nodiscard, +#ifdef _MODULE + .d_localcount = &bpf_localcount, +#endif .d_flag = D_OTHER }; @@ -2112,18 +2120,19 @@ MODULE(MODULE_CLASS_DRIVER, bpf, "bpf_fi static int bpf_modcmd(modcmd_t cmd, void *arg) { +#ifdef _MODULE devmajor_t bmajor, cmajor; - int error; - - bmajor = cmajor = NODEVMAJOR; +#endif + int error = 0; switch (cmd) { case MODULE_CMD_INIT: bpfilterattach(0); +#ifdef _MODULE + bmajor = cmajor = NODEVMAJOR; error = devsw_attach("bpf", NULL, &bmajor, &bpf_cdevsw, &cmajor); - if (error == EEXIST) - error = 0; /* maybe built-in ... improve eventually */ +#endif if (error) break; Index: src/sys/netsmb/smb_dev.c diff -u src/sys/netsmb/smb_dev.c:1.44 src/sys/netsmb/smb_dev.c:1.44.2.1 --- src/sys/netsmb/smb_dev.c:1.44 Thu Aug 20 14:40:19 2015 +++ src/sys/netsmb/smb_dev.c Sun Jul 17 05:05:10 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: smb_dev.c,v 1.44 2015/08/20 14:40:19 christos Exp $ */ +/* $NetBSD: smb_dev.c,v 1.44.2.1 2016/07/17 05:05:10 pgoyette Exp $ */ /* * Copyright (c) 2000-2001 Boris Popov @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: smb_dev.c,v 1.44 2015/08/20 14:40:19 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: smb_dev.c,v 1.44.2.1 2016/07/17 05:05:10 pgoyette Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: smb_dev.c,v #include <sys/sysctl.h> #include <sys/uio.h> #include <sys/vnode.h> +#include <sys/localcount.h> #include <miscfs/specfs/specdev.h> /* XXX */ @@ -86,6 +87,10 @@ dev_type_open(nsmb_dev_open); dev_type_close(nsmb_dev_close); dev_type_ioctl(nsmb_dev_ioctl); +#ifdef _MODULE +struct localcount nsmb_localcount; +#endif + const struct cdevsw nsmb_cdevsw = { .d_open = nsmb_dev_open, .d_close = nsmb_dev_close, @@ -98,6 +103,9 @@ const struct cdevsw nsmb_cdevsw = { .d_mmap = nommap, .d_kqfilter = nokqfilter, .d_discard = nodiscard, +#ifdef _MODULE + .d_localcount = &nsmb_localcount, +#endif .d_flag = D_OTHER, }; @@ -372,25 +380,29 @@ MODULE(MODULE_CLASS_DRIVER, nsmb, NULL); static int nsmb_modcmd(modcmd_t cmd, void *arg) { +#ifdef _MODULE devmajor_t cmajor = NODEVMAJOR, bmajor = NODEVMAJOR; +#endif int error = 0; switch (cmd) { case MODULE_CMD_INIT: nsmbattach(1); +#ifdef _MODULE error = devsw_attach("nsmb", NULL, &bmajor, &nsmb_cdevsw, &cmajor); - if (error == EEXIST) /* builtin */ - error = 0; +#endif if (error) { nsmbdetach(); } break; case MODULE_CMD_FINI: +#ifdef _MODULE error = devsw_detach(NULL, &nsmb_cdevsw); if (error) break; +#endif nsmbdetach(); break; default: