Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef _LINUX_TIMES_H
2
#define _LINUX_TIMES_H
3
 
4
#ifdef __KERNEL__
5
#include <asm/div64.h>
6
#include <asm/types.h>
7
#include <asm/param.h>
8
 
9
#if (HZ % USER_HZ)==0
10
# define jiffies_to_clock_t(x) ((x) / (HZ / USER_HZ))
11
#else
12
# define jiffies_to_clock_t(x) ((clock_t) jiffies_64_to_clock_t((u64) x))
13
#endif
14
 
15
static inline unsigned long clock_t_to_jiffies(unsigned long x)
16
{
17
#if (HZ % USER_HZ)==0
18
        if (x >= ~0UL / (HZ / USER_HZ))
19
                return ~0UL;
20
        return x * (HZ / USER_HZ);
21
#else
22
        u64 jif;
23
 
24
        /* Don't worry about loss of precision here .. */
25
        if (x >= ~0UL / HZ * USER_HZ)
26
                return ~0UL;
27
 
28
        /* .. but do try to contain it here */
29
        jif = x * (u64) HZ;
30
        do_div(jif, USER_HZ);
31
        return jif;
32
#endif
33
}
34
 
35
static inline u64 jiffies_64_to_clock_t(u64 x)
36
{
37
#if (HZ % USER_HZ)==0
38
        do_div(x, HZ / USER_HZ);
39
#else
40
        /*
41
         * There are better ways that don't overflow early,
42
         * but even this doesn't overflow in hundreds of years
43
         * in 64 bits, so..
44
         */
45
        x *= USER_HZ;
46
        do_div(x, HZ);
47
#endif
48
        return x;
49
}
50
#endif
51
 
52
struct tms {
53
        clock_t tms_utime;
54
        clock_t tms_stime;
55
        clock_t tms_cutime;
56
        clock_t tms_cstime;
57
};
58
 
59
#endif