• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/ia64/include/asm/
1/*
2 * Definitions for measuring cputime on ia64 machines.
3 *
4 * Based on <asm-powerpc/cputime.h>.
5 *
6 * Copyright (C) 2007 FUJITSU LIMITED
7 * Copyright (C) 2007 Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 *
14 * If we have CONFIG_VIRT_CPU_ACCOUNTING, we measure cpu time in nsec.
15 * Otherwise we measure cpu time in jiffies using the generic definitions.
16 */
17
18#ifndef __IA64_CPUTIME_H
19#define __IA64_CPUTIME_H
20
21#ifndef CONFIG_VIRT_CPU_ACCOUNTING
22#include <asm-generic/cputime.h>
23#else
24
25#include <linux/time.h>
26#include <linux/jiffies.h>
27#include <asm/processor.h>
28
29typedef u64 cputime_t;
30typedef u64 cputime64_t;
31
32#define cputime_zero			((cputime_t)0)
33#define cputime_one_jiffy		jiffies_to_cputime(1)
34#define cputime_max			((~((cputime_t)0) >> 1) - 1)
35#define cputime_add(__a, __b)		((__a) +  (__b))
36#define cputime_sub(__a, __b)		((__a) -  (__b))
37#define cputime_div(__a, __n)		((__a) /  (__n))
38#define cputime_halve(__a)		((__a) >> 1)
39#define cputime_eq(__a, __b)		((__a) == (__b))
40#define cputime_gt(__a, __b)		((__a) >  (__b))
41#define cputime_ge(__a, __b)		((__a) >= (__b))
42#define cputime_lt(__a, __b)		((__a) <  (__b))
43#define cputime_le(__a, __b)		((__a) <= (__b))
44
45#define cputime64_zero			((cputime64_t)0)
46#define cputime64_add(__a, __b)		((__a) + (__b))
47#define cputime64_sub(__a, __b)		((__a) - (__b))
48#define cputime_to_cputime64(__ct)	(__ct)
49
50/*
51 * Convert cputime <-> jiffies (HZ)
52 */
53#define cputime_to_jiffies(__ct)	((__ct) / (NSEC_PER_SEC / HZ))
54#define jiffies_to_cputime(__jif)	((__jif) * (NSEC_PER_SEC / HZ))
55#define cputime64_to_jiffies64(__ct)	((__ct) / (NSEC_PER_SEC / HZ))
56#define jiffies64_to_cputime64(__jif)	((__jif) * (NSEC_PER_SEC / HZ))
57
58/*
59 * Convert cputime <-> milliseconds
60 */
61#define cputime_to_msecs(__ct)		((__ct) / NSEC_PER_MSEC)
62#define msecs_to_cputime(__msecs)	((__msecs) * NSEC_PER_MSEC)
63
64/*
65 * Convert cputime <-> seconds
66 */
67#define cputime_to_secs(__ct)		((__ct) / NSEC_PER_SEC)
68#define secs_to_cputime(__secs)		((__secs) * NSEC_PER_SEC)
69
70/*
71 * Convert cputime <-> timespec (nsec)
72 */
73static inline cputime_t timespec_to_cputime(const struct timespec *val)
74{
75	cputime_t ret = val->tv_sec * NSEC_PER_SEC;
76	return (ret + val->tv_nsec);
77}
78static inline void cputime_to_timespec(const cputime_t ct, struct timespec *val)
79{
80	val->tv_sec  = ct / NSEC_PER_SEC;
81	val->tv_nsec = ct % NSEC_PER_SEC;
82}
83
84/*
85 * Convert cputime <-> timeval (msec)
86 */
87static inline cputime_t timeval_to_cputime(struct timeval *val)
88{
89	cputime_t ret = val->tv_sec * NSEC_PER_SEC;
90	return (ret + val->tv_usec * NSEC_PER_USEC);
91}
92static inline void cputime_to_timeval(const cputime_t ct, struct timeval *val)
93{
94	val->tv_sec = ct / NSEC_PER_SEC;
95	val->tv_usec = (ct % NSEC_PER_SEC) / NSEC_PER_USEC;
96}
97
98/*
99 * Convert cputime <-> clock (USER_HZ)
100 */
101#define cputime_to_clock_t(__ct)	((__ct) / (NSEC_PER_SEC / USER_HZ))
102#define clock_t_to_cputime(__x)		((__x) * (NSEC_PER_SEC / USER_HZ))
103
104/*
105 * Convert cputime64 to clock.
106 */
107#define cputime64_to_clock_t(__ct)      cputime_to_clock_t((cputime_t)__ct)
108
109#endif /* CONFIG_VIRT_CPU_ACCOUNTING */
110#endif /* __IA64_CPUTIME_H */
111