struct kernfs_mount *fmp; struct vnode *rvp;
kernfs_mount(mp, path, data, ndp, p)	struct mount *mp;	const char *path;	void *data;	struct nameidata *ndp;	struct proc *p;{	int error = 0;	size_t size;	struct kernfs_mount *fmp;	struct vnode *rvp;#ifdef KERNFS_DIAGNOSTIC	printf("kernfs_mount(mp = %p)\n", mp);#endif	/*	 * Update is a no-op	 */	if (mp->mnt_flag & MNT_UPDATE)		return (EOPNOTSUPP);	error = getnewvnode(VT_KERNFS, mp, kernfs_vnodeop_p, &rvp);	if (error)		return (error);	MALLOC(fmp, struct kernfs_mount *, sizeof(struct kernfs_mount),	    M_MISCFSMNT, M_WAITOK);	rvp->v_type = VDIR;	rvp->v_flag |= VROOT;#ifdef KERNFS_DIAGNOSTIC	printf("kernfs_mount: root vp = %p\n", rvp);#endif	fmp->kf_root = rvp;	mp->mnt_flag |= MNT_LOCAL;	mp->mnt_data = (qaddr_t)fmp;	vfs_getnewfsid(mp);	(void) copyinstr(path, mp->mnt_stat.f_mntonname, MNAMELEN - 1, &size);	bzero(mp->mnt_stat.f_mntonname + size, MNAMELEN - size);	bzero(mp->mnt_stat.f_mntfromname, MNAMELEN);	bcopy("kernfs", mp->mnt_stat.f_mntfromname, sizeof("kernfs"));#ifdef KERNFS_DIAGNOSTIC	printf("kernfs_mount: at %s\n", mp->mnt_stat.f_mntonname);#endif	kernfs_get_rrootdev();	return (0);}