Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
proc
uptime.c
Go to the documentation of this file.
1
#include <linux/fs.h>
2
#include <
linux/init.h
>
3
#include <
linux/proc_fs.h
>
4
#include <linux/sched.h>
5
#include <
linux/seq_file.h
>
6
#include <linux/time.h>
7
#include <
linux/kernel_stat.h
>
8
#include <asm/cputime.h>
9
10
static
int
uptime_proc_show(
struct
seq_file
*
m
,
void
*
v
)
11
{
12
struct
timespec
uptime;
13
struct
timespec
idle
;
14
u64
idletime;
15
u64
nsec
;
16
u32
rem;
17
int
i
;
18
19
idletime = 0;
20
for_each_possible_cpu
(i)
21
idletime += (
__force
u64
)
kcpustat_cpu
(i).cpustat[
CPUTIME_IDLE
];
22
23
do_posix_clock_monotonic_gettime
(&uptime);
24
monotonic_to_bootbased
(&uptime);
25
nsec =
cputime64_to_jiffies64
(idletime) *
TICK_NSEC
;
26
idle
.
tv_sec
= div_u64_rem(nsec,
NSEC_PER_SEC
, &rem);
27
idle
.
tv_nsec
= rem;
28
seq_printf
(m, "%lu.%02lu %lu.%02lu\
n
",
29
(
unsigned
long
) uptime.
tv_sec
,
30
(uptime.
tv_nsec
/ (NSEC_PER_SEC / 100)),
31
(
unsigned
long
)
idle
.tv_sec,
32
(
idle
.
tv_nsec
/ (NSEC_PER_SEC / 100)));
33
return
0;
34
}
35
36
static
int
uptime_proc_open(
struct
inode
*
inode
,
struct
file
*
file
)
37
{
38
return
single_open
(file, uptime_proc_show,
NULL
);
39
}
40
41
static
const
struct
file_operations
uptime_proc_fops = {
42
.open = uptime_proc_open,
43
.read =
seq_read
,
44
.llseek =
seq_lseek
,
45
.release =
single_release
,
46
};
47
48
static
int
__init
proc_uptime_init(
void
)
49
{
50
proc_create(
"uptime"
, 0,
NULL
, &uptime_proc_fops);
51
return
0;
52
}
53
module_init
(proc_uptime_init);
Generated on Thu Jan 10 2013 14:49:46 for Linux Kernel by
1.8.2