Home | History | Annotate | Line # | Download | only in gdbscripts
vchain revision 1.9.12.1
      1  1.9.12.1   martin #	$NetBSD: vchain,v 1.9.12.1 2020/04/08 14:08:51 martin Exp $
      2       1.2      gwr 
      3       1.1      gwr #	@(#)vchain	8.1 (Berkeley) 6/10/93
      4       1.1      gwr #
      5       1.6      eeh 
      6       1.1      gwr define vchain
      7       1.1      gwr 	set $num = 0
      8       1.1      gwr 
      9  1.9.12.1   martin 	set $vi = (struct vnode_impl *)$arg0
     10  1.9.12.1   martin 	printf "lrulist_next: 0x%lx\n", $vi->vi_lrulist.tqe_next
     11  1.9.12.1   martin 	while ($vi)
     12  1.9.12.1   martin 		set $vp = &$vi->vi_vnode
     13  1.9.12.1   martin 		printf "vp: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
     14  1.9.12.1   martin 		       $vp, $vp->v_uobj.uo_refs, \
     15       1.6      eeh 		       $vp->v_iflag, $vp->v_vflag, $vp->v_uflag
     16       1.1      gwr 		set $num++
     17  1.9.12.1   martin 		set $vi = $vi->vi_mntvnodes.tqe_next
     18       1.1      gwr 	end
     19       1.1      gwr 	printf "Number of vnodes: %d\n", $num
     20       1.1      gwr end
     21       1.1      gwr 
     22       1.6      eeh document vchain
     23       1.6      eeh Given a vnode, follow its mount pointers
     24       1.6      eeh end
     25       1.6      eeh 
     26       1.1      gwr define vprint
     27       1.1      gwr 	set $vp=(struct vnode *)$arg0
     28       1.1      gwr 	set $ip=(struct inode *)$vp->v_data
     29       1.1      gwr end
     30       1.1      gwr 
     31       1.3    pooka define mp_vchain
     32  1.9.12.1   martin 	set $mp = $arg0->me_mount
     33  1.9.12.1   martin 	set $first = $mp->mnt_vnodelist.tqh_first
     34  1.9.12.1   martin 	if ($first)
     35  1.9.12.1   martin 		vchain $mp->mnt_vnodelist.tqh_first
     36  1.9.12.1   martin 	end
     37       1.3    pooka end
     38       1.6      eeh document mp_vchain
     39       1.6      eeh print the vnode chain for a given mount point
     40       1.6      eeh end
     41       1.3    pooka 
     42       1.1      gwr define vall
     43  1.9.12.1   martin 	set $mpe=mountlist.tqh_first
     44  1.9.12.1   martin 	while ($mpe)
     45  1.9.12.1   martin 		printf "\tmount point at 0x%lx\n", $mpe
     46  1.9.12.1   martin 		mp_vchain $mpe
     47  1.9.12.1   martin 		set $mpe = $mpe->me_list.tqe_next
     48       1.3    pooka 
     49       1.3    pooka 		# "break"
     50  1.9.12.1   martin 		if ((const void *)$mpe == (const void *)&mountlist)
     51  1.9.12.1   martin 			set $mpe = 0
     52       1.3    pooka 		end
     53       1.1      gwr 	end
     54       1.1      gwr end
     55       1.6      eeh document vall
     56       1.6      eeh print vnode chains for all mount points
     57       1.6      eeh end
     58       1.4    pooka 
     59       1.4    pooka define mountdump
     60  1.9.12.1   martin 	set $me=mountlist.tqh_first
     61       1.9  hannken 	while ($me)
     62       1.9  hannken 		if ($me->me_type == ME_MOUNT)
     63       1.9  hannken 			set $mp = $me->me_mount
     64  1.9.12.1   martin 			printf "%s on %s type %s, (mp 0x%lx, privdata 0x%lx)\n", \
     65       1.9  hannken 			    $mp->mnt_stat->f_mntfromname, \
     66       1.9  hannken 			    $mp->mnt_stat->f_mntonname, \
     67       1.9  hannken 			    $mp->mnt_op->vfs_name, $mp, $mp->mnt_data
     68       1.9  hannken 		end
     69       1.9  hannken 		set $me=$me->me_list.tqe_next
     70  1.9.12.1   martin 		if ((const void *)$me == (const void *)&mountlist)
     71       1.9  hannken 			set $me = 0
     72       1.4    pooka 		end
     73       1.4    pooka 	end
     74       1.7      riz end
     75