Turbostat: specify parse_int_file format
[collectd.git] / src / turbostat.c
index 96cb137..5424a30 100644 (file)
@@ -28,7 +28,6 @@
 #include <asm/msr-index.h>
 #include <stdarg.h>
 #include <stdio.h>
-#include <stdbool.h>
 #include <err.h>
 #include <unistd.h>
 #include <sys/types.h>
@@ -153,10 +152,10 @@ struct pkg_data {
 
 #define ODD_COUNTERS thread_odd, core_odd, package_odd
 #define EVEN_COUNTERS thread_even, core_even, package_even
-static bool is_even = true;
+static _Bool is_even = 1;
 
-static bool allocated = false;
-static bool initialized = false;
+static _Bool allocated = 0;
+static _Bool initialized = 0;
 
 #define GET_THREAD(thread_base, thread_no, core_no, pkg_no) \
        (thread_base + (pkg_no) * topo.num_cores_per_pkg * \
@@ -213,8 +212,6 @@ enum return_values {
        ERR_NOT_ROOT,
 };
 
-#define __must_check __attribute__((warn_unused_result))
-
 static int setup_all_buffers(void);
 
 static int
@@ -227,7 +224,7 @@ cpu_is_not_present(int cpu)
  * skip non-present cpus
  */
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 for_all_cpus(int (func)(struct thread_data *, struct core_data *, struct pkg_data *),
        struct thread_data *thread_base, struct core_data *core_base, struct pkg_data *pkg_base)
 {
@@ -258,7 +255,7 @@ for_all_cpus(int (func)(struct thread_data *, struct core_data *, struct pkg_dat
        return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 cpu_migrate(int cpu)
 {
        CPU_ZERO_S(cpu_affinity_setsize, cpu_affinity_set);
@@ -269,14 +266,14 @@ cpu_migrate(int cpu)
                return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 get_msr(int cpu, off_t offset, unsigned long long *msr)
 {
        ssize_t retval;
        char pathname[32];
        int fd;
 
-       sprintf(pathname, "/dev/cpu/%d/msr", cpu);
+       ssnprintf(pathname, 32, "/dev/cpu/%d/msr", cpu);
        fd = open(pathname, O_RDONLY);
        if (fd < 0)
                return -1;
@@ -331,7 +328,7 @@ delta_core(struct core_data *new, struct core_data *old)
 /*
  * old = new - old
  */
-static int __must_check
+static int __attribute__((warn_unused_result))
 delta_thread(struct thread_data *new, struct thread_data *old,
        struct core_data *core_delta)
 {
@@ -392,7 +389,7 @@ delta_thread(struct thread_data *new, struct thread_data *old,
        return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 delta_cpu(struct thread_data *t, struct core_data *c,
        struct pkg_data *p, struct thread_data *t2,
        struct core_data *c2, struct pkg_data *p2)
@@ -431,7 +428,7 @@ rdtsc(void)
  * migrate to cpu
  * acquire and record local counters for that cpu
  */
-static int __must_check
+static int __attribute__((warn_unused_result))
 get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
 {
        int cpu = t->cpu_id;
@@ -547,8 +544,8 @@ get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
 static void
 free_all_buffers(void)
 {
-       allocated = false;
-       initialized = false;
+       allocated = 0;
+       initialized = 0;
 
        CPU_FREE(cpu_present_set);
        cpu_present_set = NULL;
@@ -578,7 +575,7 @@ free_all_buffers(void)
 /*
  * Parse a file containing a single int.
  */
-static int
+static int __attribute__ ((format(printf,1,2)))
 parse_int_file(const char *fmt, ...)
 {
        va_list args;
@@ -643,7 +640,7 @@ get_num_ht_siblings(int cpu)
        int matches;
        char character;
 
-       sprintf(path, "/sys/devices/system/cpu/cpu%d/topology/thread_siblings_list", cpu);
+       ssnprintf(path, 80, "/sys/devices/system/cpu/cpu%d/topology/thread_siblings_list", cpu);
        filep = fopen(path, "r");
         if (!filep) {
                 ERROR("%s: open failed", path);
@@ -670,7 +667,7 @@ get_num_ht_siblings(int cpu)
  */
 
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 for_all_cpus_2(int (func)(struct thread_data *, struct core_data *,
        struct pkg_data *, struct thread_data *, struct core_data *,
        struct pkg_data *), struct thread_data *thread_base,
@@ -714,7 +711,7 @@ for_all_cpus_2(int (func)(struct thread_data *, struct core_data *,
  * run func(cpu) on every cpu in /proc/stat
  * return max_cpu number
  */
-static int __must_check
+static int __attribute__((warn_unused_result))
 for_all_proc_cpus(int (func)(int))
 {
        FILE *fp;
@@ -909,8 +906,8 @@ turbostat_read(user_data_t * not_used)
                if ((ret = for_all_cpus(get_counters, EVEN_COUNTERS)) < 0)
                        return ret;
                gettimeofday(&tv_even, (struct timezone *)NULL);
-               is_even = true;
-               initialized = true;
+               is_even = 1;
+               initialized = 1;
                return 0;
        }
 
@@ -918,7 +915,7 @@ turbostat_read(user_data_t * not_used)
                if ((ret = for_all_cpus(get_counters, ODD_COUNTERS)) < 0)
                        return ret;
                gettimeofday(&tv_odd, (struct timezone *)NULL);
-               is_even = false;
+               is_even = 0;
                timersub(&tv_odd, &tv_even, &tv_delta);
                if ((ret = for_all_cpus_2(delta_cpu, ODD_COUNTERS, EVEN_COUNTERS)) < 0)
                        return ret;
@@ -928,7 +925,7 @@ turbostat_read(user_data_t * not_used)
                if ((ret = for_all_cpus(get_counters, EVEN_COUNTERS)) < 0)
                        return ret;
                gettimeofday(&tv_even, (struct timezone *)NULL);
-               is_even = true;
+               is_even = 1;
                timersub(&tv_even, &tv_odd, &tv_delta);
                if ((ret = for_all_cpus_2(delta_cpu, EVEN_COUNTERS, ODD_COUNTERS)) < 0)
                        return ret;
@@ -938,7 +935,7 @@ turbostat_read(user_data_t * not_used)
        return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 check_dev_msr()
 {
        struct stat sb;
@@ -951,7 +948,7 @@ check_dev_msr()
        return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 check_super_user()
 {
        if (getuid() != 0) {
@@ -1109,7 +1106,7 @@ is_slm(unsigned int family, unsigned int model)
  * below this value, including the Digital Thermal Sensor (DTS),
  * Package Thermal Management Sensor (PTM), and thermal event thresholds.
  */
-static int __must_check
+static int __attribute__((warn_unused_result))
 set_temperature_target(struct thread_data *t, struct core_data *c, struct pkg_data *p)
 {
        unsigned long long msr;
@@ -1161,7 +1158,7 @@ guess:
        return 0;
 }
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 check_cpuid()
 {
        unsigned int eax, ebx, ecx, edx, max_level;
@@ -1241,7 +1238,7 @@ check_cpuid()
 
 
 
-static int __must_check
+static int __attribute__((warn_unused_result))
 topology_probe()
 {
        int i;
@@ -1472,7 +1469,7 @@ static int setup_all_buffers(void)
        DO_OR_GOTO_ERR(allocate_counters(&thread_odd, &core_odd, &package_odd));
        DO_OR_GOTO_ERR(for_all_proc_cpus(initialize_counters));
 
-       allocated = true;
+       allocated = 1;
        return 0;
 err:
        free_all_buffers();