coda_proc.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * coda_statis.h
  3.  * 
  4.  * CODA operation statistics
  5.  *
  6.  * (c) March, 1998
  7.  * by Michihiro Kuramochi, Zhenyu Xia and Zhanyong Wan
  8.  * zhanyong.wan@yale.edu
  9.  *
  10.  */
  11. #ifndef _CODA_PROC_H
  12. #define _CODA_PROC_H
  13. void coda_sysctl_init(void);
  14. void coda_sysctl_clean(void);
  15. void coda_upcall_stats(int opcode, unsigned long jiffies);
  16. #include <linux/sysctl.h>
  17. #include <linux/coda_fs_i.h>
  18. #include <linux/coda.h>
  19. /* these four files are presented to show the result of the statistics:
  20.  *
  21.  * /proc/fs/coda/vfs_stats
  22.  *       upcall_stats
  23.  *       permission_stats
  24.  *       cache_inv_stats
  25.  *
  26.  * these four files are presented to reset the statistics to 0:
  27.  *
  28.  * /proc/sys/coda/vfs_stats
  29.  *        upcall_stats
  30.  *        permission_stats
  31.  *        cache_inv_stats
  32.  */
  33. /* VFS operation statistics */
  34. struct coda_vfs_stats 
  35. {
  36. /* file operations */
  37. int open;
  38. int flush;
  39. int release;
  40. int fsync;
  41. /* dir operations */
  42. int readdir;
  43.   
  44. /* inode operations */
  45. int create;
  46. int lookup;
  47. int link;
  48. int unlink;
  49. int symlink;
  50. int mkdir;
  51. int rmdir;
  52. int rename;
  53. int permission;
  54. /* symlink operatoins*/
  55. int follow_link;
  56. int readlink;
  57. };
  58. struct coda_upcall_stats_entry 
  59. {
  60.   int count;
  61.   unsigned long time_sum;
  62.   unsigned long time_squared_sum;
  63. };
  64. /* cache hits for permissions statistics */
  65. struct coda_permission_stats 
  66. {
  67. int count;
  68. int hit_count;
  69. };
  70. /* cache invalidation statistics */
  71. struct coda_cache_inv_stats
  72. {
  73. int flush;
  74. int purge_user;
  75. int zap_dir;
  76. int zap_file;
  77. int zap_vnode;
  78. int purge_fid;
  79. int replace;
  80. };
  81. /* these global variables hold the actual statistics data */
  82. extern struct coda_vfs_stats coda_vfs_stat;
  83. extern struct coda_permission_stats coda_permission_stat;
  84. extern struct coda_cache_inv_stats coda_cache_inv_stat;
  85. extern int coda_upcall_timestamping;
  86. /* reset statistics to 0 */
  87. void reset_coda_vfs_stats( void );
  88. void reset_coda_upcall_stats( void );
  89. void reset_coda_permission_stats( void );
  90. void reset_coda_cache_inv_stats( void );
  91. /* some utitlities to make it easier for you to do statistics for time */
  92. void do_time_stats( struct coda_upcall_stats_entry * pentry, 
  93.     unsigned long jiffy );
  94. /*
  95. double get_time_average( const struct coda_upcall_stats_entry * pentry );
  96. double get_time_std_deviation( const struct coda_upcall_stats_entry * pentry );
  97. */
  98. unsigned long get_time_average( const struct coda_upcall_stats_entry * pentry );
  99. unsigned long get_time_std_deviation( const struct coda_upcall_stats_entry * pentry );
  100. /* like coda_dointvec, these functions are to be registered in the ctl_table
  101.  * data structure for /proc/sys/... files 
  102.  */
  103. int do_reset_coda_vfs_stats( ctl_table * table, int write, struct file * filp,
  104.      void * buffer, size_t * lenp );
  105. int do_reset_coda_upcall_stats( ctl_table * table, int write, 
  106. struct file * filp, void * buffer, 
  107. size_t * lenp );
  108. int do_reset_coda_permission_stats( ctl_table * table, int write, 
  109.     struct file * filp, void * buffer, 
  110.     size_t * lenp );
  111. int do_reset_coda_cache_inv_stats( ctl_table * table, int write, 
  112.    struct file * filp, void * buffer, 
  113.    size_t * lenp );
  114. /* these functions are called to form the content of /proc/fs/coda/... files */
  115. int coda_vfs_stats_get_info( char * buffer, char ** start, off_t offset,
  116.      int length);
  117. int coda_upcall_stats_get_info( char * buffer, char ** start, off_t offset,
  118. int length);
  119. int coda_permission_stats_get_info( char * buffer, char ** start, off_t offset,
  120.     int length);
  121. int coda_cache_inv_stats_get_info( char * buffer, char ** start, off_t offset,
  122.    int length);
  123. #endif /* _CODA_PROC_H */