Well folks, this is it - The second stage of the removal for build support
for LKM's..
This commit is contained in:
parent
ea1e34d0c9
commit
b5e9563d84
@ -26,7 +26,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: cam_xpt.c,v 1.49 1999/03/14 05:15:38 ken Exp $
|
||||
* $Id: cam_xpt.c,v 1.50 1999/04/07 22:57:48 gibbs Exp $
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -5859,7 +5859,7 @@ xpt_finishconfig(struct cam_periph *periph, union ccb *done_ccb)
|
||||
|
||||
if (busses_to_config == 0) {
|
||||
/* Register all the peripheral drivers */
|
||||
/* XXX This will have to change when we have LKMs */
|
||||
/* XXX This will have to change when we have loadable modules */
|
||||
p_drv = (struct periph_driver **)periphdriver_set.ls_items;
|
||||
for (i = 0; p_drv[i] != NULL; i++) {
|
||||
(*p_drv[i]->init)();
|
||||
|
@ -230,7 +230,7 @@ exec_svr4_imgact(imgp)
|
||||
/*
|
||||
* Tell kern_execve.c about it, with a little help from the linker.
|
||||
* Since `const' objects end up in the text segment, TEXT_SET is the
|
||||
* correct directive to use. Do not staticize; used by Linux LKM.
|
||||
* correct directive to use.
|
||||
*/
|
||||
const struct execsw svr4_execsw = { exec_svr4_imgact, "svr4 ELF" };
|
||||
EXEC_SET(execsw_set, svr4_execsw);
|
||||
|
@ -23,7 +23,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: pcivar.h,v 1.25 1999/01/19 23:29:20 se Exp $
|
||||
* $Id: pcivar.h,v 1.26 1999/04/16 21:22:52 peter Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -282,11 +282,6 @@ struct pci_device {
|
||||
int (*pd_shutdown) (int, int);
|
||||
};
|
||||
|
||||
struct pci_lkm {
|
||||
struct pci_device *dvp;
|
||||
struct pci_lkm *next;
|
||||
};
|
||||
|
||||
#ifdef __i386__
|
||||
typedef u_short pci_port_t;
|
||||
#else
|
||||
@ -295,7 +290,6 @@ typedef u_int pci_port_t;
|
||||
|
||||
u_long pci_conf_read (pcici_t tag, u_long reg);
|
||||
void pci_conf_write (pcici_t tag, u_long reg, u_long data);
|
||||
void pci_configure (void);
|
||||
int pci_map_port (pcici_t tag, u_long reg, pci_port_t* pa);
|
||||
int pci_map_mem (pcici_t tag, u_long reg, vm_offset_t* va, vm_offset_t* pa);
|
||||
int pci_map_dense (pcici_t tag, u_long reg, vm_offset_t* va, vm_offset_t* pa);
|
||||
@ -305,7 +299,6 @@ int pci_map_int (pcici_t tag, pci_inthand_t *handler, void *arg,
|
||||
int pci_map_int_right(pcici_t cfg, pci_inthand_t *handler, void *arg,
|
||||
intrmask_t *maskptr, u_int flags);
|
||||
int pci_unmap_int (pcici_t tag);
|
||||
int pci_register_lkm (struct pci_device *dvp, int if_revision);
|
||||
|
||||
#endif /* PCI_COMPAT */
|
||||
#endif /* _PCIVAR_H_ */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $OpenBSD: if_tx.c,v 1.3 1998/10/10 04:30:09 jason Exp $ */
|
||||
/* $Id: if_tx.c,v 1.22 1999/03/14 08:30:23 semenu Exp $ */
|
||||
/* $Id: if_tx.c,v 1.23 1999/03/31 13:50:52 nsayer Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997 Semen Ustimenko (semen@iclub.nsu.ru)
|
||||
@ -2036,10 +2036,4 @@ epic_dump_state __P((
|
||||
);
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
static void epic_kldinit (void * a) {
|
||||
pci_register_lkm (&txdevice, 0);
|
||||
}
|
||||
PSEUDO_SET(epic_kldinit,if_tx);
|
||||
#endif
|
||||
#endif /* NPCI > 0 */
|
||||
|
@ -36,7 +36,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)kern_exit.c 8.7 (Berkeley) 2/12/94
|
||||
* $Id: kern_exit.c,v 1.76 1999/03/02 00:28:08 julian Exp $
|
||||
* $Id: kern_exit.c,v 1.77 1999/03/11 21:53:12 bde Exp $
|
||||
*/
|
||||
|
||||
#include "opt_compat.h"
|
||||
@ -164,7 +164,7 @@ exit1(p, rv)
|
||||
STOPEVENT(p, S_EXIT, rv);
|
||||
|
||||
/*
|
||||
* Check if any LKMs need anything done at process exit.
|
||||
* Check if any loadable modules need anything done at process exit.
|
||||
* e.g. SYSV IPC stuff
|
||||
* XXX what if one of these generates an error?
|
||||
*/
|
||||
|
@ -36,7 +36,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)kern_fork.c 8.6 (Berkeley) 4/8/94
|
||||
* $Id: kern_fork.c,v 1.56 1999/03/02 00:28:08 julian Exp $
|
||||
* $Id: kern_fork.c,v 1.57 1999/04/06 03:03:34 peter Exp $
|
||||
*/
|
||||
|
||||
#include "opt_ktrace.h"
|
||||
@ -448,7 +448,7 @@ again:
|
||||
vm_fork(p1, p2, flags);
|
||||
|
||||
/*
|
||||
* Both processes are set up, now check if any LKMs want
|
||||
* Both processes are set up, now check if any loadable modules want
|
||||
* to adjust anything.
|
||||
* What if they have an error? XXX
|
||||
*/
|
||||
|
@ -124,7 +124,7 @@ syscall_not_present(struct proc *p, const char *s, struct nosys_args *uap)
|
||||
|
||||
#if !defined(_KPOSIX_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Not configured but loadable via an LKM:
|
||||
/* Not configured but loadable via a module:
|
||||
*/
|
||||
|
||||
static int sched_attach(void)
|
||||
|
@ -41,7 +41,7 @@
|
||||
*
|
||||
* @(#)subr_autoconf.c 8.1 (Berkeley) 6/10/93
|
||||
*
|
||||
* $Id: subr_autoconf.c,v 1.7 1998/12/04 22:54:51 archie Exp $
|
||||
* $Id: subr_autoconf.c,v 1.8 1999/01/08 17:31:11 eivind Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -395,7 +395,7 @@ config_intrhook_establish(hook)
|
||||
}
|
||||
TAILQ_INSERT_TAIL(&intr_config_hook_list, hook, ich_links);
|
||||
if (cold == 0)
|
||||
/* XXX Sufficient for LKMs loaded after initial config??? */
|
||||
/* XXX Sufficient for modules loaded after initial config??? */
|
||||
run_interrupt_driven_config_hooks(NULL);
|
||||
return (0);
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ static moduledata_t pcic_mod = {
|
||||
DECLARE_MODULE(pcic, pcic_mod, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE);
|
||||
|
||||
/*
|
||||
* pcic_unload - Called when unloading a LKM.
|
||||
* pcic_unload - Called when unloading a kernel module.
|
||||
* Disables interrupts and resets PCIC.
|
||||
*/
|
||||
static int
|
||||
|
@ -35,7 +35,6 @@
|
||||
#include <sys/mount.h>
|
||||
#include <sys/sysent.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/lkm.h>
|
||||
|
||||
#include <i386/isa/isa_device.h>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $OpenBSD: if_tx.c,v 1.3 1998/10/10 04:30:09 jason Exp $ */
|
||||
/* $Id: if_tx.c,v 1.22 1999/03/14 08:30:23 semenu Exp $ */
|
||||
/* $Id: if_tx.c,v 1.23 1999/03/31 13:50:52 nsayer Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997 Semen Ustimenko (semen@iclub.nsu.ru)
|
||||
@ -2036,10 +2036,4 @@ epic_dump_state __P((
|
||||
);
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
static void epic_kldinit (void * a) {
|
||||
pci_register_lkm (&txdevice, 0);
|
||||
}
|
||||
PSEUDO_SET(epic_kldinit,if_tx);
|
||||
#endif
|
||||
#endif /* NPCI > 0 */
|
||||
|
@ -23,7 +23,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: pci_compat.c,v 1.21 1999/04/11 02:46:20 eivind Exp $
|
||||
* $Id: pci_compat.c,v 1.22 1999/04/16 21:22:52 peter Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -340,23 +340,13 @@ pci_probedrv(pcicfgregs *cfg, struct pci_device *dvp)
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
static struct pci_lkm *pci_lkm_head;
|
||||
|
||||
static struct pci_device*
|
||||
pci_finddrv(pcicfgregs *cfg)
|
||||
{
|
||||
struct pci_device **dvpp;
|
||||
struct pci_device *dvp = NULL;
|
||||
struct pci_lkm *lkm;
|
||||
|
||||
drvname = NULL;
|
||||
lkm = pci_lkm_head;
|
||||
while (drvname == NULL && lkm != NULL) {
|
||||
dvp = lkm->dvp;
|
||||
drvname = pci_probedrv(cfg, dvp);
|
||||
lkm = lkm->next;
|
||||
}
|
||||
|
||||
dvpp = (struct pci_device **)pcidevice_set.ls_items;
|
||||
while (drvname == NULL && (dvp = *dvpp++) != NULL)
|
||||
drvname = pci_probedrv(cfg, dvp);
|
||||
@ -417,43 +407,6 @@ pci_drvattach(struct pci_devinfo *dinfo)
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
pci_rescan(void)
|
||||
{
|
||||
/* XXX do nothing, currently, soon to come ... */
|
||||
}
|
||||
|
||||
int pci_register_lkm (struct pci_device *dvp, int if_revision)
|
||||
{
|
||||
struct pci_lkm *lkm;
|
||||
|
||||
if (if_revision != 0) {
|
||||
return (-1);
|
||||
}
|
||||
if (dvp == NULL || dvp->pd_probe == NULL || dvp->pd_attach == NULL) {
|
||||
return (-1);
|
||||
}
|
||||
lkm = malloc (sizeof (*lkm), M_DEVBUF, M_NOWAIT);
|
||||
if (lkm == NULL) {
|
||||
return (-1);
|
||||
}
|
||||
bzero(lkm, sizeof (*lkm));
|
||||
|
||||
lkm->dvp = dvp;
|
||||
lkm->next = pci_lkm_head;
|
||||
pci_lkm_head = lkm;
|
||||
pci_rescan();
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
pci_configure(void)
|
||||
{
|
||||
pci_probe(NULL);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* PCI_COMPAT */
|
||||
|
@ -23,7 +23,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: pcivar.h,v 1.25 1999/01/19 23:29:20 se Exp $
|
||||
* $Id: pcivar.h,v 1.26 1999/04/16 21:22:52 peter Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -282,11 +282,6 @@ struct pci_device {
|
||||
int (*pd_shutdown) (int, int);
|
||||
};
|
||||
|
||||
struct pci_lkm {
|
||||
struct pci_device *dvp;
|
||||
struct pci_lkm *next;
|
||||
};
|
||||
|
||||
#ifdef __i386__
|
||||
typedef u_short pci_port_t;
|
||||
#else
|
||||
@ -295,7 +290,6 @@ typedef u_int pci_port_t;
|
||||
|
||||
u_long pci_conf_read (pcici_t tag, u_long reg);
|
||||
void pci_conf_write (pcici_t tag, u_long reg, u_long data);
|
||||
void pci_configure (void);
|
||||
int pci_map_port (pcici_t tag, u_long reg, pci_port_t* pa);
|
||||
int pci_map_mem (pcici_t tag, u_long reg, vm_offset_t* va, vm_offset_t* pa);
|
||||
int pci_map_dense (pcici_t tag, u_long reg, vm_offset_t* va, vm_offset_t* pa);
|
||||
@ -305,7 +299,6 @@ int pci_map_int (pcici_t tag, pci_inthand_t *handler, void *arg,
|
||||
int pci_map_int_right(pcici_t cfg, pci_inthand_t *handler, void *arg,
|
||||
intrmask_t *maskptr, u_int flags);
|
||||
int pci_unmap_int (pcici_t tag);
|
||||
int pci_register_lkm (struct pci_device *dvp, int if_revision);
|
||||
|
||||
#endif /* PCI_COMPAT */
|
||||
#endif /* _PCIVAR_H_ */
|
||||
|
@ -124,7 +124,7 @@ syscall_not_present(struct proc *p, const char *s, struct nosys_args *uap)
|
||||
|
||||
#if !defined(_KPOSIX_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Not configured but loadable via an LKM:
|
||||
/* Not configured but loadable via a module:
|
||||
*/
|
||||
|
||||
static int sched_attach(void)
|
||||
|
@ -41,7 +41,7 @@
|
||||
#include <posix4/sched.h>
|
||||
|
||||
/* Generate syscall stubs for when something is optionally
|
||||
* LKM'd. References "syscall_not_present".
|
||||
* loadable as a module. References "syscall_not_present".
|
||||
* XXX Good candidate for sys/syscall.h
|
||||
*/
|
||||
struct proc;
|
||||
|
@ -230,7 +230,7 @@ exec_svr4_imgact(imgp)
|
||||
/*
|
||||
* Tell kern_execve.c about it, with a little help from the linker.
|
||||
* Since `const' objects end up in the text segment, TEXT_SET is the
|
||||
* correct directive to use. Do not staticize; used by Linux LKM.
|
||||
* correct directive to use.
|
||||
*/
|
||||
const struct execsw svr4_execsw = { exec_svr4_imgact, "svr4 ELF" };
|
||||
EXEC_SET(execsw_set, svr4_execsw);
|
||||
|
@ -27,7 +27,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: _posix.h,v 1.2 1998/03/28 11:50:31 dufault Exp $
|
||||
* $Id: _posix.h,v 1.3 1998/10/16 03:55:01 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -41,7 +41,7 @@
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
#if !defined(ACTUALLY_LKM_NOT_KERNEL) && !defined(KLD_MODULE)
|
||||
#if !defined(KLD_MODULE)
|
||||
#include "opt_posix.h"
|
||||
#endif
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)exec.h 8.3 (Berkeley) 1/21/94
|
||||
* $Id: exec.h,v 1.22 1999/01/29 06:47:53 dillon Exp $
|
||||
* $Id: exec.h,v 1.23 1999/01/29 08:36:45 dillon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SYS_EXEC_H_
|
||||
@ -81,8 +81,6 @@ void exec_unmap_first_page __P((struct image_params *));
|
||||
int exec_register __P((const struct execsw *));
|
||||
int exec_unregister __P((const struct execsw *));
|
||||
|
||||
#ifndef LKM
|
||||
|
||||
/*
|
||||
* note: name##_mod cannot be const storage because the
|
||||
* linker_file_sysinit() function modifies _file in the
|
||||
@ -121,6 +119,5 @@ int exec_unregister __P((const struct execsw *));
|
||||
}; \
|
||||
DECLARE_MODULE(name, name ## _mod, SI_SUB_EXEC, SI_ORDER_ANY)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -39,7 +39,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)kernel.h 8.3 (Berkeley) 1/21/94
|
||||
* $Id: kernel.h,v 1.52 1999/01/29 08:12:49 dillon Exp $
|
||||
* $Id: kernel.h,v 1.53 1999/01/29 23:18:50 dillon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SYS_KERNEL_H_
|
||||
@ -287,30 +287,8 @@ struct kproc_desc {
|
||||
void kproc_start __P((const void *udata));
|
||||
void sysinit_add __P((struct sysinit **set));
|
||||
|
||||
#ifdef PSEUDO_LKM
|
||||
#include <sys/conf.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/sysent.h>
|
||||
#include <sys/lkm.h>
|
||||
|
||||
#define PSEUDO_SET(init, name) \
|
||||
extern struct linker_set MODVNOPS; \
|
||||
MOD_MISC(name); \
|
||||
static int \
|
||||
name ## _load(struct lkm_table *lkmtp, int cmd) \
|
||||
{ init((void *)NULL /* XXX unused (?) */); return 0; } \
|
||||
static int \
|
||||
name ## _unload(struct lkm_table *lkmtp, int cmd) \
|
||||
{ return EINVAL; } \
|
||||
int \
|
||||
name ## _mod(struct lkm_table *lkmtp, int cmd, int ver) { \
|
||||
MOD_DISPATCH(name, lkmtp, cmd, ver, name ## _load, name ## _unload, \
|
||||
lkm_nullcmd); } \
|
||||
struct __hack
|
||||
#else /* PSEUDO_LKM */
|
||||
|
||||
/*
|
||||
* Compatibility. To be deprecated after LKM is updated.
|
||||
* Compatibility. To be deprecated after LKM is removed.
|
||||
*/
|
||||
#include <sys/module.h>
|
||||
#define PSEUDO_SET(sym, name) \
|
||||
@ -335,8 +313,6 @@ void sysinit_add __P((struct sysinit **set));
|
||||
}; \
|
||||
DECLARE_MODULE(name, name ## _mod, SI_SUB_PSEUDO, SI_ORDER_ANY)
|
||||
|
||||
#endif /* PSEUDO_LKM */
|
||||
|
||||
extern struct linker_set execsw_set;
|
||||
|
||||
#endif /* !_SYS_KERNEL_H_*/
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)mount.h 8.21 (Berkeley) 5/20/95
|
||||
* $Id: mount.h,v 1.73 1998/11/15 15:12:58 bde Exp $
|
||||
* $Id: mount.h,v 1.74 1999/02/16 10:49:55 dfr Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SYS_MOUNT_H_
|
||||
@ -325,32 +325,6 @@ struct vfsops {
|
||||
(*(MP)->mnt_op->vfs_fhtovp)(MP, FIDP, NAM, VPP, EXFLG, CRED)
|
||||
#define VFS_VPTOFH(VP, FIDP) (*(VP)->v_mount->mnt_op->vfs_vptofh)(VP, FIDP)
|
||||
|
||||
#if defined(VFS_LKM) && !defined(KLD_MODULE)
|
||||
#include <sys/conf.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/sysent.h>
|
||||
#include <sys/lkm.h>
|
||||
|
||||
#define VFS_SET(vfsops, fsname, flags) \
|
||||
static struct vfsconf _fs_vfsconf = { \
|
||||
&vfsops, \
|
||||
#fsname, \
|
||||
-1, \
|
||||
0, \
|
||||
flags, \
|
||||
}; \
|
||||
extern struct linker_set MODVNOPS; \
|
||||
MOD_VFS(fsname,&MODVNOPS,&_fs_vfsconf); \
|
||||
int \
|
||||
fsname ## _mod(struct lkm_table *lkmtp, int cmd, int ver); \
|
||||
int \
|
||||
fsname ## _mod(struct lkm_table *lkmtp, int cmd, int ver) { \
|
||||
MOD_DISPATCH(fsname, \
|
||||
lkmtp, cmd, ver, lkm_nullcmd, lkm_nullcmd, lkm_nullcmd); } \
|
||||
struct __hack
|
||||
|
||||
#else
|
||||
|
||||
#include <sys/module.h>
|
||||
|
||||
#define VFS_SET(vfsops, fsname, flags) \
|
||||
@ -368,8 +342,6 @@ struct vfsops {
|
||||
}; \
|
||||
DECLARE_MODULE(fsname, fsname ## _mod, SI_SUB_VFS, SI_ORDER_MIDDLE)
|
||||
|
||||
#endif /* VFS_LKM */
|
||||
|
||||
#include <net/radix.h>
|
||||
|
||||
#define AF_MAX 31 /* XXX */
|
||||
|
@ -41,7 +41,7 @@
|
||||
#include <posix4/sched.h>
|
||||
|
||||
/* Generate syscall stubs for when something is optionally
|
||||
* LKM'd. References "syscall_not_present".
|
||||
* loadable as a module. References "syscall_not_present".
|
||||
* XXX Good candidate for sys/syscall.h
|
||||
*/
|
||||
struct proc;
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)vnode.h 8.7 (Berkeley) 2/4/94
|
||||
* $Id: vnode.h,v 1.84 1999/02/03 04:12:36 semenu Exp $
|
||||
* $Id: vnode.h,v 1.85 1999/02/19 17:41:14 dillon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SYS_VNODE_H_
|
||||
@ -259,13 +259,9 @@ extern int vttoif_tab[];
|
||||
|
||||
#define NULLVP ((struct vnode *)NULL)
|
||||
|
||||
#if defined(VFS_LKM) && !defined(KLD_MODULE)
|
||||
#define VNODEOP_SET(f) DATA_SET(MODVNOPS,f)
|
||||
#else
|
||||
#define VNODEOP_SET(f) \
|
||||
C_SYSINIT(f##init, SI_SUB_VFS, SI_ORDER_SECOND, vfs_add_vnodeops, &f); \
|
||||
C_SYSUNINIT(f##uninit, SI_SUB_VFS, SI_ORDER_SECOND, vfs_rm_vnodeops, &f);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Global vnode data.
|
||||
|
Loading…
x
Reference in New Issue
Block a user