#ifndef SF_STAT_H #define SF_STAT_H #include #define PROC_PATH_VERSION "/proc/version" #define PROC_PATH_MEMINFO "/proc/meminfo" #define PROC_PATH_STAT "/proc/stat" #define STAT_INFO_WIDTH 15 #define BAR_LABEL_WIDTH 7 #define STAT_BAR_HEIGHT 1 typedef struct { char name[16]; unsigned int user; /* User mode */ unsigned int nice; /* Low-priority user mode */ unsigned int system; /* Kernel mode */ unsigned int idle; /* Free time of CPU */ unsigned long long iowait; unsigned long long irq; unsigned long long softirq; unsigned long long prev_total; unsigned long long prev_idle; double cpu; double smooth_cpu; } cpu_occupy; typedef struct { char sysver[30]; struct { unsigned long mem_total; unsigned long mem_available; } meminfo; struct { unsigned long long disk_total; unsigned long long disk_available; } diskinfo; cpu_occupy *cpu_occ; } stat; void stat_get_sysver(stat *s); stat *stat_init(); void stat_print_info(WINDOW *w, int y, int maxx, const char *label, unsigned long total, unsigned long ava); void stat_print_cpu_info(WINDOW *w, int y, int maxx, stat *s); void stat_draw_bar(WINDOW *w, const char *label, int maxx, int y, int x, unsigned long total, unsigned long ava); void stat_draw_cpu_bar(WINDOW *w, int maxx, int y, int x, stat *s); void stat_get_meminfo(stat *s); void stat_get_diskinfo(stat *s); void stat_get_cpuinfo(stat *s); int stat_get_bar_ticks(int maxx, unsigned long long total, unsigned long long ava); #endif /* SF_STAT_H */