Home | History | Annotate | Line # | Download | only in gdbscripts
      1  1.11      mrg #	$NetBSD: vchain,v 1.11 2019/12/06 02:37:53 mrg 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.11      mrg 	set $vi = (struct vnode_impl *)$arg0
     10  1.11      mrg 	printf "lrulist_next: 0x%lx\n", $vi->vi_lrulist.tqe_next
     11  1.11      mrg 	while ($vi)
     12  1.11      mrg 		set $vp = &$vi->vi_vnode
     13  1.11      mrg 		printf "vp: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
     14  1.11      mrg 		       $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.11      mrg 		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.11      mrg 	set $mp = $arg0->me_mount
     33  1.11      mrg 	set $first = $mp->mnt_vnodelist.tqh_first
     34  1.11      mrg 	if ($first)
     35  1.11      mrg 		vchain $mp->mnt_vnodelist.tqh_first
     36  1.11      mrg 	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.11      mrg 	set $mpe=mountlist.tqh_first
     44  1.11      mrg 	while ($mpe)
     45  1.11      mrg 		printf "\tmount point at 0x%lx\n", $mpe
     46  1.11      mrg 		mp_vchain $mpe
     47  1.11      mrg 		set $mpe = $mpe->me_list.tqe_next
     48   1.3    pooka 
     49   1.3    pooka 		# "break"
     50  1.11      mrg 		if ((const void *)$mpe == (const void *)&mountlist)
     51  1.11      mrg 			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.10      mrg 	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.11      mrg 			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.10      mrg 		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