--- projects/libstatgrab/src/libstatgrab/statgrab.h 2004/04/07 09:44:08 1.38 +++ projects/libstatgrab/src/libstatgrab/statgrab.h 2005/07/13 13:01:24 1.56 @@ -18,15 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * - * $Id: statgrab.h,v 1.38 2004/04/07 09:44:08 tdb Exp $ + * $Id: statgrab.h,v 1.56 2005/07/13 13:01:24 tdb Exp $ */ +#ifndef STATGRAB_H +#define STATGRAB_H + #include /* FIXME typedefs for 32/64-bit types */ /* FIXME maybe tidy up field names? */ -/* FIXME tab/space damage */ -/* FIXME prefixes for util functions too */ /* FIXME comments for less obvious fields */ int sg_init(void); @@ -34,11 +35,43 @@ int sg_drop_privileges(void); typedef enum { SG_ERROR_NONE = 0, - SG_ERROR_MALLOC_FAILED + SG_ERROR_ASPRINTF, + SG_ERROR_DEVSTAT_GETDEVS, + SG_ERROR_DEVSTAT_SELECTDEVS, + SG_ERROR_ENOENT, + SG_ERROR_GETIFADDRS, + SG_ERROR_GETMNTINFO, + SG_ERROR_GETPAGESIZE, + SG_ERROR_KSTAT_DATA_LOOKUP, + SG_ERROR_KSTAT_LOOKUP, + SG_ERROR_KSTAT_OPEN, + SG_ERROR_KSTAT_READ, + SG_ERROR_KVM_GETSWAPINFO, + SG_ERROR_KVM_OPENFILES, + SG_ERROR_MALLOC, + SG_ERROR_OPEN, + SG_ERROR_OPENDIR, + SG_ERROR_PARSE, + SG_ERROR_SETEGID, + SG_ERROR_SETEUID, + SG_ERROR_SETMNTENT, + SG_ERROR_SOCKET, + SG_ERROR_SWAPCTL, + SG_ERROR_SYSCONF, + SG_ERROR_SYSCTL, + SG_ERROR_SYSCTLBYNAME, + SG_ERROR_SYSCTLNAMETOMIB, + SG_ERROR_UNAME, + SG_ERROR_UNSUPPORTED, + SG_ERROR_XSW_VER_MISMATCH, + SG_ERROR_PSTAT } sg_error; void sg_set_error(sg_error code, const char *arg); +void sg_set_error_with_errno(sg_error code, const char *arg); sg_error sg_get_error(); +const char *sg_get_error_arg(); +int sg_get_error_errno(); const char *sg_str_error(sg_error code); typedef struct { @@ -53,26 +86,26 @@ typedef struct { sg_host_info *sg_get_host_info(); typedef struct { - long long user; - long long kernel; - long long idle; - long long iowait; - long long swap; - long long nice; - long long total; - time_t systime; + long long user; + long long kernel; + long long idle; + long long iowait; + long long swap; + long long nice; + long long total; + time_t systime; } sg_cpu_stats; sg_cpu_stats *sg_get_cpu_stats(); sg_cpu_stats *sg_get_cpu_stats_diff(); typedef struct { - float user; - float kernel; - float idle; - float iowait; - float swap; - float nice; + float user; + float kernel; + float idle; + float iowait; + float swap; + float nice; time_t time_taken; } sg_cpu_percents; @@ -111,19 +144,29 @@ typedef struct { sg_swap_stats *sg_get_swap_stats(); typedef struct { - char *device_name; + char *device_name; char *fs_type; - char *mnt_point; - long long size; - long long used; - long long avail; - long long total_inodes; + char *mnt_point; + long long size; + long long used; + long long avail; + long long total_inodes; long long used_inodes; - long long free_inodes; + long long free_inodes; + long long avail_inodes; + long long io_size; + long long block_size; + long long total_blocks; + long long free_blocks; + long long used_blocks; + long long avail_blocks; } sg_fs_stats; sg_fs_stats *sg_get_fs_stats(int *entries); +int sg_fs_compare_device_name(const void *va, const void *vb); +int sg_fs_compare_mnt_point(const void *va, const void *vb); + typedef struct { char *disk_name; long long read_bytes; @@ -134,6 +177,8 @@ typedef struct { sg_disk_io_stats *sg_get_disk_io_stats(int *entries); sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries); +int sg_disk_io_compare_name(const void *va, const void *vb); + typedef struct { char *interface_name; long long tx; @@ -149,6 +194,8 @@ typedef struct { sg_network_io_stats *sg_get_network_io_stats(int *entries); sg_network_io_stats *sg_get_network_io_stats_diff(int *entries); +int sg_network_io_compare_name(const void *va, const void *vb); + typedef enum { SG_IFACE_DUPLEX_FULL, SG_IFACE_DUPLEX_HALF, @@ -158,12 +205,17 @@ typedef enum { typedef struct { char *interface_name; int speed; /* In megabits/sec */ + sg_iface_duplex duplex; +#ifdef SG_ENABLE_DEPRECATED sg_iface_duplex dup; +#endif int up; } sg_network_iface_stats; sg_network_iface_stats *sg_get_network_iface_stats(int *entries); +int sg_network_iface_compare_name(const void *va, const void *vb); + typedef struct { long long pages_pagein; long long pages_pageout; @@ -204,6 +256,15 @@ typedef struct { sg_process_stats *sg_get_process_stats(int *entries); +int sg_process_compare_name(const void *va, const void *vb); +int sg_process_compare_pid(const void *va, const void *vb); +int sg_process_compare_uid(const void *va, const void *vb); +int sg_process_compare_gid(const void *va, const void *vb); +int sg_process_compare_size(const void *va, const void *vb); +int sg_process_compare_res(const void *va, const void *vb); +int sg_process_compare_cpu(const void *va, const void *vb); +int sg_process_compare_time(const void *va, const void *vb); + typedef struct { int total; int running; @@ -218,3 +279,4 @@ sg_process_count *sg_get_process_count(); #include #endif +#endif