#ifndef CLIENT_H #define CLIENT_H #include #include #include #include #include #define VALUE_UNDEFINED 0 #define VALUE_UNKNOWN 1 #define VALUE_UNAVAILABLE 2 #define VALUE_KNOWN 3 #define PKT_INTERVAL_SEC 30 /* default value */ #define PKT_INTERVAL_USEC 0 #define PKT_RETRANSMIT_SEC 5/* time before retransmission */ #define PKT_RETRANSMIT_USEC 0 #define PKT_TIMEOUT_SEC 3 /* time between retransmission and drawing line */ #define PKT_TIMEOUT_USEC 0 #define FIELD_LOAD0 0 #define FIELD_LOAD1 1 #define FIELD_LOAD2 2 #define FIELD_PROCS 3 #define FIELD_MEMFREE 4 #define FIELD_SWAPFREE 5 #define FIELD_RTT 6 #define FIELD_LAST 7 #define FIELD_DEFAULT FIELD_LOAD0 #define FIELD_NAMES "Load 1m", "Load 5m", "Load 15m", "Procs/50", "Mem Free", "Swap Free", "RTT" #define XM_LOAD_SHIFT 16 struct xmsysinfo { long flags; /* Which fields are present */ long uptime; /* Seconds since boot */ unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ unsigned long totalram; /* Total usable main memory size */ unsigned long freeram; /* Available memory size */ unsigned long sharedram; /* Amount of shared memory */ unsigned long bufferram; /* Memory used by buffers */ unsigned long totalswap; /* Total swap space size */ unsigned long freeswap; /* swap space still available */ unsigned short procs; /* Number of current processes */ unsigned long rtt; /* Round trip time */ }; extern int update_interval; extern int xid_sent_latest, xid_recv_latest, xid_hand_latest; extern int xid_stored_first, xid_stored_last; extern int xid_display_first, xid_display_last; extern char *leafname, *host; extern struct sockaddr_in addr; extern char *progname; extern char *displayname; extern void options_parse(int argc, char *argv[]); extern void display_init(int argc, char *argv[]); extern void display_preselect(int *maxfd, fd_set *rfds, fd_set *wfds, struct timeval *tvp); extern void display_postselect(fd_set *rfds, fd_set *wfds); extern void screen_update(int xid); extern void screen_rotate(int delta); extern void packet_init(void); extern void packet_send(int repeat); extern void packet_preselect(int *maxfd, fd_set *fds, struct timeval *tvp); extern void packet_postselect(fd_set *fds); extern void signal_init(void); extern void signal_preselect(int *maxfd, fd_set *fds, struct timeval *tvp); extern void signal_postselect(fd_set *fds); extern int value_type_field(int xid, int field); extern double value_get_field(int xid, int field); extern time_t value_get_time(int xid); extern int value_type(int xid); extern double value_get(int xid); extern void values_get(int xid, int field_start, int field_end, int *types, double *values, time_t *times); extern void multivalues_get(int start, int end, int field_start, int field_end, int *types, double *values, time_t *times); extern void array_fill(int start, int finish, int type, time_t time); extern void array_store(int xid, int type, struct xmsysinfo *info, time_t time); #define ARRAY_SIZE 256 #define tv_expire(a, b) do {if ((!(a)->tv_sec) || (b)->tv_sec < (a)->tv_sec || ((b)->tv_sec == (a)->tv_sec && (b)->tv_usec < (a)->tv_usec)) { (a)->tv_sec=(b)->tv_sec; (a)->tv_usec=(b)->tv_usec; } } while (0) extern int screen_need_rescale; extern void screen_recalc(void); #define CLASS_NAME "LoadMonitor" extern void options_xrdb(Display *display); extern char *options_get(char *xinstance, char *xclass, char *valuedefault); extern int field_number(void); extern char *field_name_field(int field); extern char *field_name(void); extern void field_next(void); extern void field_prev(void); extern int str_to_int(char *str, const char *var, int lower, int upper); extern void die(const char *fmt, ...); extern void warn(const char *fmt, ...); extern void options_daemonize(void); #endif