⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print.c

📁 Solaris操作系统下的过滤驱动程序, C源码程序.
💻 C
字号:
/* * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 2001-2003 Stony Brook University * Copyright (c) 1997-2000 Columbia University * * For specific licensing information, see the COPYING file distributed with * this package, or get one from ftp://ftp.filesystems.org/pub/fist/COPYING. * * This Copyright notice must be kept intact and distributed with all * fistgen sources INCLUDING sources generated by fistgen. *//* * Copyright (c) 1992 by Sun Microsystems, Inc. */#ifdef HAVE_CONFIG_H# include <config.h>#endif /* HAVE_CONFIG_H */#ifdef FISTGEN# include "fist_wrapfs.h"#endif /* FISTGEN */#include <fist.h>#include <wrapfs.h>#if 0#include <sys/param.h>#include <sys/kmem.h>#include <sys/vfs.h>#include <sys/vnode.h>#include <sys/cmn_err.h>#include <sys/debug.h>#include <sys/systm.h>#include <sys/t_lock.h>#include <sys/errno.h>#include <sys/thread.h>#include <sys/tiuser.h>#include <rpc/types.h>#include <rpc/xdr.h>#include <rpc/auth.h>#include <rpc/clnt.h>#include <vm/page.h>#include <sys/pathname.h>#include <fist.h>#include FIST_HEADER#endif/* Print debugging functions */#ifdef FIST_DEBUGstatic int fist_debug_var = 0;/* get value of debugging variable */intfist_get_debug_value(void){  return fist_debug_var;}/* set debug level variable and return the previous value */intfist_set_debug_value(int val){  int prev = fist_debug_var;  fist_debug_var = val;  return prev;}/* * Utilities used by both client and server * Standard levels: * 0) no debugging * 1) hard failures * 2) soft failures * 3) current test software * 4) main procedure entry points * 5) main procedure exit points * 6) utility procedure entry points * 7) utility procedure exit points * 8) obscure procedure entry points * 9) obscure procedure exit points * 10) random stuff * 11) all <= 1 * 12) all <= 2 * 13) all <= 3 * ... */voidfist_dprint_internal(int level, char *str, ...){  va_list ap;  int var = fist_get_debug_value();#ifndef __GNUC__  char newstr[256] = CONSOLE_PREFIX;#endif /* not __GNUC__ */  if (var == level || (var > 10 && (var - 10) >= level)) {    va_start(ap, str);#ifdef __GNUC__    vcmn_err(CE_CONT, str, ap);#else  /* not __GNUC__ */    strcat(newstr, str);    vcmn_err(CE_CONT, newstr, ap);#endif /* not __GNUC__ */    va_end(ap);  }  return;}#ifndef __GNUC__void printk(char str, ...){  va_list ap;  char newstr[256] = CONSOLE_PREFIX;  va_start(ap, str);  strcat(newstr, str);  vcmn_err(CE_CONT, newstr, ap);  va_end(ap);  return;}#endif /* not __GNUC__ */voidfist_print_uap(char *fxn_name, struct mounta *uap){  char namebuf[TYPICALMAXPATHLEN + 4];	/* +4 because of bug 1170077 */  size_t len = 0;  int error = 0;  /* safety */  if (!fxn_name)    fxn_name = "UNKNWON(print_uap)";  if (uap) {    fist_dprint(5, "%s: uap 0x%x\n", fxn_name, uap);    /* what to mount */    strcpy(namebuf, "Null");    len = 0;    if (uap->spec) {      error = copyinstr(uap->spec, namebuf, TYPICALMAXPATHLEN, &len);      if (error)	strcpy(namebuf, "Null (copyinstr error)");    }    fist_dprint(5, "%s: uap->spec %s\n", fxn_name, namebuf);    /* on which mount point to mount */    strcpy(namebuf, "Null");    len = 0;    if (uap->spec) {      error = copyinstr(uap->dir, namebuf, TYPICALMAXPATHLEN, &len);      if (error)	strcpy(namebuf, "Null (copyinstr error)");    }    fist_dprint(5, "%s: uap->dir %s\n", fxn_name, namebuf);    /* primary mount flags */    fist_dprint(5, "%s: uap->flags 0x%x\n", fxn_name, uap->flags);    /* filesystem type ("fist_rot13fs") */    strcpy(namebuf, "Null");    len = 0;    if (uap->spec) {      error = copyinstr(uap->fstype, namebuf, TYPICALMAXPATHLEN, &len);      if (error)	strcpy(namebuf, "Null (copyinstr error)");    }    fist_dprint(5, "%s: uap->fstype %s\n", fxn_name, namebuf);    /* data pointer is null so far */    fist_dprint(5, "%s: uap->dataptr 0x%x\n", fxn_name, uap->dataptr);    /* data length is 0 (because data pointer is null */    fist_dprint(5, "%s: uap->datalen %d\n", fxn_name, uap->datalen);  }}voidfist_print_vfs(char *fxn_name, struct vfs *vfsp){  /* safety */  if (!fxn_name)    fxn_name = "UNKNWON(print_vfs)";  if (vfsp) {    fist_dprint(5,		"%s: vfsp 0x%x\n", fxn_name,		vfsp);    fist_dprint(5,		"%s: vfsp->vfs_next 0x%x\n", fxn_name,		vfsp->vfs_next);    fist_dprint(5,		"%s: vfsp->vfs_op 0x%x\n", fxn_name,		vfsp->vfs_op);    fist_dprint(5,		"%s: vfsp->vfs_vnodecovered 0x%x\n", fxn_name,		vfsp->vfs_vnodecovered);    fist_dprint(5,		"%s: vfsp->vfs_flag 0x%x\n", fxn_name,		vfsp->vfs_flag);    fist_dprint(5,		"%s: vfsp->vfs_bsize %d\n", fxn_name,		vfsp->vfs_bsize);    fist_dprint(5,		"%s: vfsp->vfs_fstype %d\n", fxn_name,		vfsp->vfs_fstype);    fist_dprint(5,		"%s: vfsp->vfs_fsid 0x%x\n", fxn_name,		vfsp->vfs_fsid);    fist_dprint(5,		"%s: vfsp->vfs_data 0x%x\n", fxn_name,		vfsp->vfs_data);    fist_dprint(5,		"%s: vfsp->vfs_dev 0x%x\n", fxn_name,		vfsp->vfs_dev);    fist_dprint(5,		"%s: vfsp->vfs_bcount %d\n", fxn_name,		vfsp->vfs_bcount);    fist_dprint(5,		"%s: vfsp->vfs_nsubmounts %d\n", fxn_name,		vfsp->vfs_nsubmounts);    fist_dprint(5,		"%s: vfsp->vfs_list 0x%x\n", fxn_name,		vfsp->vfs_list);    fist_dprint(5,		"%s: vfsp->vfs_hash 0x%x\n", fxn_name,		vfsp->vfs_hash);    fist_dprint(5,		"%s: vfsp->vfs_reflock 0x%x\n", fxn_name,		vfsp->vfs_reflock);  }}voidfist_print_uio(char *fxn_name, uio_t * uiop){  /* safety */  if (!fxn_name)    fxn_name = "UNKNOWN(print_uio)";  fist_dprint(7, "BEGINNING UIO\n");  fist_dprint(7,	      "%s: uio 0x%x\n", fxn_name, uiop);  if (uiop) {    fist_dprint(7,		"%s: uio_iov 0x%x\n", fxn_name, uiop->uio_iov);    fist_dprint(7,		"%s: uio_iovcnt %d\n", fxn_name, uiop->uio_iovcnt);    fist_dprint(7,		"%s: uio_loffset %d\n", fxn_name, uiop->uio_offset);    fist_dprint(7,		"%s: uio_segflg %d\n", fxn_name, uiop->uio_segflg);    fist_dprint(7,		"%s: uio_fmode 0x%x\n", fxn_name, (u_int) uiop->uio_fmode);    fist_dprint(7,		"%s: uio_limit %d\n", fxn_name, uiop->uio_limit);    fist_dprint(7,		"%s: uio_resid %d\n", fxn_name, uiop->uio_resid);  }  fist_dprint(7, "ENDING UIO\n");}voidfist_print_uios(char *fxn_name, uio_t * uiop){  int i;  /* safety */  if (!fxn_name)    fxn_name = "UNKNOWN(print_uios)";  fist_dprint(7, "BEGINNING UIOs\n");  fist_dprint(7,	      "%s: uio 0x%x\n", fxn_name, uiop);  if (uiop && uiop->uio_iovcnt) {    fist_dprint(7,		"%s: uio_iovcnt %d\n", fxn_name, uiop->uio_iovcnt);    fist_dprint(7,		"%s: uio_loffset %d\n", fxn_name, uiop->uio_offset);    fist_dprint(7,		"%s: uio_segflg %d\n", fxn_name, uiop->uio_segflg);    fist_dprint(7,		"%s: uio_fmode 0x%x\n", fxn_name, (u_int) uiop->uio_fmode);    fist_dprint(7,		"%s: uio_limit %d\n", fxn_name, uiop->uio_limit);    fist_dprint(7,		"%s: uio_resid %d\n", fxn_name, uiop->uio_resid);    for (i = 0; i < uiop->uio_iovcnt; i++) {      fist_dprint(7,		  "%s: uio_iov[%d].iov_len %d\n",		  fxn_name, i, uiop->uio_iov[i].iov_len);      fist_dprint(7,		  "%s: uio_iov[%d].iov_base is 0x%x\n",		  fxn_name, i, uiop->uio_iov[i].iov_base);    }  }  fist_dprint(7, "ENDING UIO\n");}voidfist_print_pnp(char *f_name, pathname_t *pnp){  char *pn_buf;  char *pn_path;  /* safety */  if (!f_name)    f_name = "UNKNOWN(print_pnp)";  if (pnp) {    /* allocate memory for our temporary strings */    pn_buf=kmem_alloc((pnp->pn_bufsize+1)*sizeof(char),KM_SLEEP);    pn_path=kmem_alloc((pnp->pn_pathlen+1)*sizeof(char),KM_SLEEP);    bcopy(pnp->pn_buf,pn_buf,pnp->pn_bufsize);    bcopy(pnp->pn_path,pn_path,pnp->pn_pathlen);    /* zero out the last byte */    pn_buf[pnp->pn_bufsize]='\0';    pn_path[pnp->pn_pathlen]='\0';    fist_dprint(4,"%s: pnp->pn_buf %s\n",f_name,pn_buf);    fist_dprint(4,"%s: pnp->pn_bufsize %d\n",f_name,pnp->pn_bufsize);    fist_dprint(4,"%s: pnp->pn_path %s\n",f_name,pn_path);    fist_dprint(4,"%s: pnp->pn_pathlen %d\n",f_name,pnp->pn_pathlen);  }}voidfist_print_vnode(char *fxn_name, struct vnode *vp){  /* safety */  if (!fxn_name)    fxn_name = "UNKNOWN(print_vp)";  if (vp) {    fist_dprint(5,		"%s: vp 0x%x\n", fxn_name,		vp);    fist_dprint(5,		"%s: vp->v_lock 0x%x\n", fxn_name,		vp->v_lock);    fist_dprint(5,		"%s: vp->v_flag 0x%x\n", fxn_name,		vp->v_flag);    fist_dprint(5,		"%s: vp->v_count %d\n", fxn_name,		vp->v_count);    fist_dprint(5,		"%s: vp->v_vfsmountedhere 0x%x\n", fxn_name,		vp->v_vfsmountedhere);    fist_dprint(5,		"%s: vp->v_op 0x%x\n", fxn_name,		vp->v_op);    fist_dprint(5,		"%s: vp->v_vfsp 0x%x\n", fxn_name,		vp->v_vfsp);    fist_dprint(5,		"%s: vp->v_stream 0x%x\n", fxn_name,		vp->v_stream);    fist_dprint(5,		"%s: vp->v_pages 0x%x\n", fxn_name,		vp->v_pages);    fist_dprint(5,		"%s: vp->v_type 0x%x\n", fxn_name,		vp->v_type);    fist_dprint(5,		"%s: vp->v_rdev 0x%x\n", fxn_name,		vp->v_rdev);    fist_dprint(5,		"%s: vp->v_data 0x%x\n", fxn_name,		vp->v_data);    fist_dprint(5,		"%s: vp->v_filocks 0x%x\n", fxn_name,		vp->v_filocks);    fist_dprint(5,		"%s: vp->v_cv 0x%x\n", fxn_name,		vp->v_cv);  }}voidfist_print_pathname(char *fxn_name, struct pathname *pnp){  /* safety */  if (!fxn_name)    fxn_name = "UNKNOWN(print_pathname)";  if (pnp) {    fist_dprint(8,		"%s: pnp 0x%x\n", fxn_name,		pnp);    fist_dprint(8,		"%s: pnp->pn_buf \"%s\"\n", fxn_name,		pnp->pn_buf);    fist_dprint(8,		"%s: pnp->pn_path \"%s\"\n", fxn_name,		pnp->pn_path);    fist_dprint(8,		"%s: pnp->pn_pathlen %d\n", fxn_name,		pnp->pn_pathlen);    fist_dprint(8,		"%s: pnp->pn_bufsize %d\n", fxn_name,		pnp->pn_bufsize);  }}#endif /* FIST_DEBUG */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -