Provided by: libstatgrab-dev_0.92.1-1.2build1_amd64 bug

NAME

       sg_get_cpu_stats,      sg_get_cpu_stats_r,      sg_get_cpu_stats_diff,     sg_get_cpu_stats_diff_between,
       sg_get_cpu_percents, sg_get_cpu_percents_of, sg_get_cpu_percents_r, sg_free_cpu_stats - get cpu usage

SYNOPSIS

       #include <statgrab.h>

       sg_cpu_percents *sg_get_cpu_percents (size_t *entries);

       sg_cpu_percents *sg_get_cpu_percents_of (sg_cpu_percent_source cps, size_t *entries);

       sg_cpu_percents *sg_get_cpu_percents_r (const sg_cpu_stats *whereof, size_t *entries);

       void sg_free_cpu_percents (sg_cpu_percents *data);

       sg_cpu_stats *sg_get_cpu_stats (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_diff (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_r (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_diff_between (const sg_cpu_stats *cpu_now, const sg_cpu_stats *cpu_last,
                                                   size_t *entries);

       sg_error sg_free_cpu_stats (sg_cpu_stats *data);

DESCRIPTION

       These  are  the  categories  of  data  delivered  by  the  cpu  stats  module:   sg_get_cpu_stats()   and
       sg_get_cpu_stats_r()    deliver   native   cpu   counters   since   the   machine   has   been   started,
       sg_get_cpu_stats_diff() and sg_get_cpu_stats_diff_between()  deliver  native  cpu  counters  between  two
       sg_get_cpu_stats() calls and sg_get_cpu_percents_of() and sg_get_cpu_percents_r() deliver correlated rel‐
       ative cpu counters (where total is 100%).

       API Shortcut
       ┌───────────────────────────┬───────────────────┬────────────────────────────┐
       │ function                  │ returns           │ data owner                 │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_stats          │ sg_cpu_stats *    │ libstatgrab (thread local) │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_stats_r        │ sg_cpu_stats *    │ caller                     │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_stats_diff     │ sg_cpu_stats *    │ libstatgrab (thread local) │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_stats_diff_be‐ │ sg_cpu_stats *    │ caller                     │
       │ tween                     │                   │                            │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_percents_of    │ sg_cpu_percents * │ libstatgrab (thread local) │
       ├───────────────────────────┼───────────────────┼────────────────────────────┤
       │ sg_get_cpu_percents_r     │ sg_cpu_percents * │ caller                     │
       └───────────────────────────┴───────────────────┴────────────────────────────┘

       The  sg_cpu_stats  buffer  received  from sg_get_cpu_stats_r() and the sg_get_cpu_stats_diff_between() as
       well  as  the  sg_cpu_percents  buffer  received  from  sg_get_cpu_percents_r()  must  be   freed   using
       sg_free_cpu_stats()  or the sg_free_cpu_percents(), respectively, when not needed any more. The caller is
       responsible for doing it.

       The value stored (the "ticks") will vary between operating systems. For example Solaris has  a  total  of
       100 per second, while Linux has substantially more. Also, different operating systems store different in‐
       formation - you won't find nice cpu on Solaris for example.

       Modern   systems   shall   provide   information   about   the   clock   tick   resolution   by  invoking
       sysconf(_SC_CLK_TCK).

RETURN VALUES

       There are two structures returned by the CPU statistics functions.

       typedef struct {
               unsigned long long user;
               unsigned long long kernel;
               unsigned long long idle;
               unsigned long long iowait;
               unsigned long long swap;
               unsigned long long nice;
               unsigned long long total;

               unsigned long long context_switches;
               unsigned long long voluntary_context_switches;
               unsigned long long involuntary_context_switches;
               unsigned long long syscalls;
               unsigned long long interrupts;
               unsigned long long soft_interrupts;

               time_t systime;
       } sg_cpu_stats;

       typedef struct {
               double user;
               double kernel;
               double idle;
               double iowait;
               double swap;
               double nice;
               time_t time_taken;
       } sg_cpu_percents;

       user kernel idle iowait swap nice total
              The different CPU states.

       context_switches voluntary_context_switches involuntary_context_switches syscalls interrupts soft_inter‐
       rupts
              The different program actions on CPU.

       systime time_taken
              The time taken in seconds since the last call of the function, or the system time.

SEE ALSO

       statgrab(3)

WEBSITE

       ⟨https://libstatgrab.org/⟩

libstatgrab                                        2019-03-08                                sg_get_cpu_stats(3)