coda_proc.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
- /*
- * coda_statis.h
- *
- * CODA operation statistics
- *
- * (c) March, 1998
- * by Michihiro Kuramochi, Zhenyu Xia and Zhanyong Wan
- * zhanyong.wan@yale.edu
- *
- */
- #ifndef _CODA_PROC_H
- #define _CODA_PROC_H
- void coda_sysctl_init(void);
- void coda_sysctl_clean(void);
- void coda_upcall_stats(int opcode, unsigned long jiffies);
- #include <linux/sysctl.h>
- #include <linux/coda_fs_i.h>
- #include <linux/coda.h>
- /* these four files are presented to show the result of the statistics:
- *
- * /proc/fs/coda/vfs_stats
- * upcall_stats
- * permission_stats
- * cache_inv_stats
- *
- * these four files are presented to reset the statistics to 0:
- *
- * /proc/sys/coda/vfs_stats
- * upcall_stats
- * permission_stats
- * cache_inv_stats
- */
- /* VFS operation statistics */
- struct coda_vfs_stats
- {
- /* file operations */
- int open;
- int flush;
- int release;
- int fsync;
- /* dir operations */
- int readdir;
-
- /* inode operations */
- int create;
- int lookup;
- int link;
- int unlink;
- int symlink;
- int mkdir;
- int rmdir;
- int rename;
- int permission;
- /* symlink operatoins*/
- int follow_link;
- int readlink;
- };
- struct coda_upcall_stats_entry
- {
- int count;
- unsigned long time_sum;
- unsigned long time_squared_sum;
- };
- /* cache hits for permissions statistics */
- struct coda_permission_stats
- {
- int count;
- int hit_count;
- };
- /* cache invalidation statistics */
- struct coda_cache_inv_stats
- {
- int flush;
- int purge_user;
- int zap_dir;
- int zap_file;
- int zap_vnode;
- int purge_fid;
- int replace;
- };
- /* these global variables hold the actual statistics data */
- extern struct coda_vfs_stats coda_vfs_stat;
- extern struct coda_permission_stats coda_permission_stat;
- extern struct coda_cache_inv_stats coda_cache_inv_stat;
- extern int coda_upcall_timestamping;
- /* reset statistics to 0 */
- void reset_coda_vfs_stats( void );
- void reset_coda_upcall_stats( void );
- void reset_coda_permission_stats( void );
- void reset_coda_cache_inv_stats( void );
- /* some utitlities to make it easier for you to do statistics for time */
- void do_time_stats( struct coda_upcall_stats_entry * pentry,
- unsigned long jiffy );
- /*
- double get_time_average( const struct coda_upcall_stats_entry * pentry );
- double get_time_std_deviation( const struct coda_upcall_stats_entry * pentry );
- */
- unsigned long get_time_average( const struct coda_upcall_stats_entry * pentry );
- unsigned long get_time_std_deviation( const struct coda_upcall_stats_entry * pentry );
- /* like coda_dointvec, these functions are to be registered in the ctl_table
- * data structure for /proc/sys/... files
- */
- int do_reset_coda_vfs_stats( ctl_table * table, int write, struct file * filp,
- void * buffer, size_t * lenp );
- int do_reset_coda_upcall_stats( ctl_table * table, int write,
- struct file * filp, void * buffer,
- size_t * lenp );
- int do_reset_coda_permission_stats( ctl_table * table, int write,
- struct file * filp, void * buffer,
- size_t * lenp );
- int do_reset_coda_cache_inv_stats( ctl_table * table, int write,
- struct file * filp, void * buffer,
- size_t * lenp );
- /* these functions are called to form the content of /proc/fs/coda/... files */
- int coda_vfs_stats_get_info( char * buffer, char ** start, off_t offset,
- int length);
- int coda_upcall_stats_get_info( char * buffer, char ** start, off_t offset,
- int length);
- int coda_permission_stats_get_info( char * buffer, char ** start, off_t offset,
- int length);
- int coda_cache_inv_stats_get_info( char * buffer, char ** start, off_t offset,
- int length);
- #endif /* _CODA_PROC_H */