rmonitor_poll_internal.h

00001 /*
00002 Copyright (C) 2013- The University of Notre Dame
00003 This software is distributed under the GNU General Public License.
00004 See the file COPYING for details.
00005 */
00006 
00007 #ifndef RMONITOR_POLL_INTERNAL_H
00008 #define RMONITOR_POLL_INTERNAL_H
00009 
00010 #include "itable.h"
00011 #include "hash_table.h"
00012 
00013 #include "rmonitor_types.h"
00014 #if defined(CCTOOLS_OPSYS_DARWIN) || defined(CCTOOLS_OPSYS_FREEBSD)
00015   #include <sys/param.h>
00016   #include <sys/mount.h>
00017   #include <sys/resource.h>
00018 #else
00019   #include  <sys/vfs.h>
00020 #endif
00021 
00022 #include <sys/types.h>
00023 #include <sys/stat.h>
00024 
00025 #ifdef HAS_SYS_STATFS_H
00026 #include <sys/statfs.h>
00027 #endif
00028 
00029 #ifdef HAS_SYS_STATVFS_H
00030 #include <sys/statvfs.h>
00031 #endif
00032 
00033 #include "int_sizes.h"
00034 #include "rmonitor_types.h"
00035 #include "rmsummary.h"
00036 
00037 #include "rmonitor_poll.h"
00038 
00039 void rmonitor_poll_all_processes_once(struct itable *processes, struct rmonitor_process_info *acc);
00040 void rmonitor_poll_all_wds_once(      struct hash_table *wdirs, struct rmonitor_wdir_info *acc, int max_time_for_measurement);
00041 void rmonitor_poll_all_fss_once(      struct itable *filesysms, struct rmonitor_filesys_info *acc);
00042 
00043 int rmonitor_poll_process_once(struct rmonitor_process_info *p);
00044 int rmonitor_poll_wd_once(     struct rmonitor_wdir_info    *d, int max_time_for_measurement);
00045 int rmonitor_poll_fs_once(     struct rmonitor_filesys_info *f);
00046 int rmonitor_poll_maps_once(   struct itable *processes, struct rmonitor_mem_info *mem);
00047 
00048 void rmonitor_info_to_rmsummary(struct rmsummary *tr, struct rmonitor_process_info *p, struct rmonitor_wdir_info *d, struct rmonitor_filesys_info *f, uint64_t start_time);
00049 
00050 int rmonitor_get_cpu_time_usage(pid_t pid,        struct rmonitor_cpu_time_info *cpu);
00051 int rmonitor_get_mem_usage(     pid_t pid,        struct rmonitor_mem_info *mem);
00052 int rmonitor_get_sys_io_usage(  pid_t pid,        struct rmonitor_io_info *io);
00053 int rmonitor_get_map_io_usage(  pid_t pid,        struct rmonitor_io_info *io);
00054 int rmonitor_get_dsk_usage(     const char *path, struct statfs *disk);
00055 
00056 int rmonitor_get_wd_usage(struct rmonitor_wdir_info *d, int max_time_for_measurement);
00057 
00058 void acc_cpu_time_usage( struct rmonitor_cpu_time_info *acc, struct rmonitor_cpu_time_info *other);
00059 void acc_mem_usage(      struct rmonitor_mem_info *acc,      struct rmonitor_mem_info *other);
00060 void acc_sys_io_usage(   struct rmonitor_io_info *acc,       struct rmonitor_io_info *other);
00061 void acc_map_io_usage(   struct rmonitor_io_info *acc,       struct rmonitor_io_info *other);
00062 void acc_dsk_usage(      struct statfs *acc,                 struct statfs *other);
00063 void acc_wd_usage(       struct rmonitor_wdir_info *acc,     struct rmonitor_wdir_info *other);
00064 
00065 FILE *open_proc_file(pid_t pid, char *filename);
00066 int get_int_attribute(FILE *fstatus, char *attribute, uint64_t *value, int rewind_flag);
00067 
00068 uint64_t usecs_since_epoch();
00069 
00070 #endif

Generated on 21 Nov 2016 for cctools by  doxygen 1.6.1