int main(int argc, char **argv) { setvbuf(stdout, NULL, _IOLBF, 0); for (;;) { update_cpu_load(); sleep(1); } }
/* timer housekeeping, invoked each timer interval to reset counters */ static ticks_t pl_timer_handle(ticks_t ticks, struct timer_ln* tl, void* data) { switch (*load_source) { case LOAD_SOURCE_CPU: update_cpu_load(); break; } *network_load_value = get_total_bytes_waiting(); pl_pipe_timer_update(timer_interval, *network_load_value); return (ticks_t)(-1); /* periodical */ }
/* timer housekeeping, invoked each timer interval to reset counters */ static void rl_timer(unsigned int ticks, void *param) { int i, len; char *c, *p; LOCK_GET(rl_lock); switch (*load_source) { case LOAD_SOURCE_CPU: update_cpu_load(); break; } if (*check_network_load) { *network_load_value = get_total_bytes_waiting(PROTO_NONE); } if (rl_dbg_str->s) { c = p = rl_dbg_str->s; memset(c, ' ', rl_dbg_str->len); for (i=0; i<MAX_PIPES; i++) { c = int2str(*pipes[i].counter, &len); if (len < 4) { memcpy( p + (5-len), c, len ); } else { memset(p, '*', 5); LM_WARN("Counter pipes[%d] to big: %d\n", i, *pipes[i].counter); } p = p + 5; } LM_WARN("%.*s\n", rl_dbg_str->len, rl_dbg_str->s); } for (i=0; i<MAX_PIPES; i++) { if( *pipes[i].algo == PIPE_ALGO_NETWORK ) { *pipes[i].load = ( *network_load_value > *pipes[i].limit ) ? 1 : -1; } else if (*pipes[i].limit && timer_interval) { *pipes[i].load = *pipes[i].counter / (*pipes[i].limit * timer_interval); } *pipes[i].last_counter = *pipes[i].counter; *pipes[i].counter = 0; } LOCK_RELEASE(rl_lock); }
/* timer housekeeping, invoked each timer interval to reset counters */ static ticks_t rl_timer_handle(ticks_t ticks, struct timer_ln* tl, void* data) { int i, len; char *c, *p; LOCK_GET(rl_lock); switch (*load_source) { case LOAD_SOURCE_CPU: update_cpu_load(); break; } *network_load_value = get_total_bytes_waiting(); if (rl_dbg_str->s) { c = p = rl_dbg_str->s; memset(c, ' ', rl_dbg_str->len); for (i=0; i<MAX_PIPES; i++) { c = int2str(*pipes[i].counter, &len); if (len < 4) { memcpy( p + (5-len), c, len ); } else { memset(p, '*', 5); LM_WARN("Counter pipes[%d] to big: %d\n", i, *pipes[i].counter); } p = p + 5; } LM_WARN("%.*s\n", rl_dbg_str->len, rl_dbg_str->s); } for (i=0; i<MAX_PIPES; i++) { if( *pipes[i].algo == PIPE_ALGO_NETWORK ) { *pipes[i].load = ( *network_load_value > *pipes[i].limit ) ? 1 : -1; } else if (*pipes[i].limit && timer_interval) { *pipes[i].load = *pipes[i].counter / (*pipes[i].limit * timer_interval); } *pipes[i].last_counter = *pipes[i].counter; *pipes[i].counter = 0; } LOCK_RELEASE(rl_lock); return (ticks_t)(-1); /* periodical */ }