Blame view
fs/proc/uptime.c
1.12 KB
961776028 proc: switch /pro... |
1 2 3 |
#include <linux/init.h> #include <linux/proc_fs.h> #include <linux/sched.h> |
961776028 proc: switch /pro... |
4 5 |
#include <linux/time.h> #include <asm/cputime.h> |
6c87df37d proc: revert /pro... |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
static int proc_calc_metrics(char *page, char **start, off_t off, int count, int *eof, int len) { if (len <= off + count) *eof = 1; *start = page + off; len -= off; if (len > count) len = count; if (len < 0) len = 0; return len; } static int uptime_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) |
961776028 proc: switch /pro... |
22 23 24 |
{ struct timespec uptime; struct timespec idle; |
6c87df37d proc: revert /pro... |
25 |
int len; |
961776028 proc: switch /pro... |
26 27 28 29 30 |
cputime_t idletime = cputime_add(init_task.utime, init_task.stime); do_posix_clock_monotonic_gettime(&uptime); monotonic_to_bootbased(&uptime); cputime_to_timespec(idletime, &idle); |
6c87df37d proc: revert /pro... |
31 32 |
len = sprintf(page, "%lu.%02lu %lu.%02lu ", |
961776028 proc: switch /pro... |
33 34 35 36 |
(unsigned long) uptime.tv_sec, (uptime.tv_nsec / (NSEC_PER_SEC / 100)), (unsigned long) idle.tv_sec, (idle.tv_nsec / (NSEC_PER_SEC / 100))); |
6c87df37d proc: revert /pro... |
37 |
return proc_calc_metrics(page, start, off, count, eof, len); |
961776028 proc: switch /pro... |
38 |
} |
961776028 proc: switch /pro... |
39 40 |
static int __init proc_uptime_init(void) { |
6c87df37d proc: revert /pro... |
41 |
create_proc_read_entry("uptime", 0, NULL, uptime_read_proc, NULL); |
961776028 proc: switch /pro... |
42 43 44 |
return 0; } module_init(proc_uptime_init); |