提交 1a805219 编写于 作者: J Jeff Dike 提交者: Linus Torvalds

uml: use *SEC_PER_*SEC constants

There are various uses of powers of 1000, plus the odd BILLION constant in the
time code.  However, there are perfectly good definitions of *SEC_PER_*SEC in
linux/time.h which can be used instaed.

These are replaced directly in kernel code.  Userspace code imports those
constants as UM_*SEC_PER_*SEC and uses these.
Signed-off-by: NJeff Dike <jdike@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 61b63c55
...@@ -34,3 +34,7 @@ DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx)); ...@@ -34,3 +34,7 @@ DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
DEFINE(UM_THREAD_SIZE, THREAD_SIZE); DEFINE(UM_THREAD_SIZE, THREAD_SIZE);
DEFINE(UM_HZ, HZ); DEFINE(UM_HZ, HZ);
DEFINE(UM_USEC_PER_SEC, USEC_PER_SEC);
DEFINE(UM_NSEC_PER_SEC, NSEC_PER_SEC);
DEFINE(UM_NSEC_PER_USEC, NSEC_PER_USEC);
...@@ -249,8 +249,6 @@ extern int setjmp_wrapper(void (*proc)(void *, void *), ...); ...@@ -249,8 +249,6 @@ extern int setjmp_wrapper(void (*proc)(void *, void *), ...);
extern void os_dump_core(void); extern void os_dump_core(void);
/* time.c */ /* time.c */
#define BILLION (1000 * 1000 * 1000)
extern void idle_sleep(unsigned long long nsecs); extern void idle_sleep(unsigned long long nsecs);
extern int set_interval(void); extern int set_interval(void);
extern int timer_one_shot(int ticks); extern int timer_one_shot(int ticks);
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
*/ */
unsigned long long sched_clock(void) unsigned long long sched_clock(void)
{ {
return (unsigned long long)jiffies_64 * (1000000000 / HZ); return (unsigned long long)jiffies_64 * (NSEC_PER_SEC / HZ);
} }
void timer_handler(int sig, struct uml_pt_regs *regs) void timer_handler(int sig, struct uml_pt_regs *regs)
...@@ -118,8 +118,9 @@ void __init time_init(void) ...@@ -118,8 +118,9 @@ void __init time_init(void)
timer_init(); timer_init();
nsecs = os_nsecs(); nsecs = os_nsecs();
set_normalized_timespec(&wall_to_monotonic, -nsecs / BILLION, set_normalized_timespec(&wall_to_monotonic, -nsecs / NSEC_PER_SEC,
-nsecs % BILLION); -nsecs % NSEC_PER_SEC);
set_normalized_timespec(&xtime, nsecs / BILLION, nsecs % BILLION); set_normalized_timespec(&xtime, nsecs / NSEC_PER_SEC,
nsecs % NSEC_PER_SEC);
late_time_init = setup_itimer; late_time_init = setup_itimer;
} }
...@@ -294,8 +294,8 @@ void userspace(struct uml_pt_regs *regs) ...@@ -294,8 +294,8 @@ void userspace(struct uml_pt_regs *regs)
if (getitimer(ITIMER_VIRTUAL, &timer)) if (getitimer(ITIMER_VIRTUAL, &timer))
printk("Failed to get itimer, errno = %d\n", errno); printk("Failed to get itimer, errno = %d\n", errno);
nsecs = timer.it_value.tv_sec * BILLION + nsecs = timer.it_value.tv_sec * UM_NSEC_PER_SEC +
timer.it_value.tv_usec * 1000; timer.it_value.tv_usec * UM_NSEC_PER_USEC;
nsecs += os_nsecs(); nsecs += os_nsecs();
while (1) { while (1) {
...@@ -347,8 +347,10 @@ void userspace(struct uml_pt_regs *regs) ...@@ -347,8 +347,10 @@ void userspace(struct uml_pt_regs *regs)
block_signals(); block_signals();
(*sig_info[sig])(sig, regs); (*sig_info[sig])(sig, regs);
unblock_signals(); unblock_signals();
nsecs = timer.it_value.tv_sec * BILLION + nsecs = timer.it_value.tv_sec *
timer.it_value.tv_usec * 1000; UM_NSEC_PER_SEC +
timer.it_value.tv_usec *
UM_NSEC_PER_USEC;
nsecs += os_nsecs(); nsecs += os_nsecs();
break; break;
case SIGIO: case SIGIO:
...@@ -395,7 +397,7 @@ __initcall(init_thread_regs); ...@@ -395,7 +397,7 @@ __initcall(init_thread_regs);
int copy_context_skas0(unsigned long new_stack, int pid) int copy_context_skas0(unsigned long new_stack, int pid)
{ {
struct timeval tv = { .tv_sec = 0, .tv_usec = 1000000 / UM_HZ }; struct timeval tv = { .tv_sec = 0, .tv_usec = UM_USEC_PER_SEC / UM_HZ };
int err; int err;
unsigned long current_stack = current_stub_stack(); unsigned long current_stack = current_stub_stack();
struct stub_data *data = (struct stub_data *) current_stack; struct stub_data *data = (struct stub_data *) current_stack;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
int set_interval(void) int set_interval(void)
{ {
int usec = 1000000/UM_HZ; int usec = UM_USEC_PER_SEC / UM_HZ;
struct itimerval interval = ((struct itimerval) { { 0, usec }, struct itimerval interval = ((struct itimerval) { { 0, usec },
{ 0, usec } }); { 0, usec } });
...@@ -26,11 +26,11 @@ int set_interval(void) ...@@ -26,11 +26,11 @@ int set_interval(void)
int timer_one_shot(int ticks) int timer_one_shot(int ticks)
{ {
unsigned long usec = ticks * 1000000 / UM_HZ; unsigned long usec = ticks * UM_USEC_PER_SEC / UM_HZ;
unsigned long sec = usec / 1000000; unsigned long sec = usec / UM_USEC_PER_SEC;
struct itimerval interval; struct itimerval interval;
usec %= 1000000; usec %= UM_USEC_PER_SEC;
interval = ((struct itimerval) { { 0, 0 }, { sec, usec } }); interval = ((struct itimerval) { { 0, 0 }, { sec, usec } });
if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1) if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1)
...@@ -78,8 +78,8 @@ extern void alarm_handler(int sig, struct sigcontext *sc); ...@@ -78,8 +78,8 @@ extern void alarm_handler(int sig, struct sigcontext *sc);
void idle_sleep(unsigned long long nsecs) void idle_sleep(unsigned long long nsecs)
{ {
struct timespec ts = { .tv_sec = nsecs / BILLION, struct timespec ts = { .tv_sec = nsecs / UM_NSEC_PER_SEC,
.tv_nsec = nsecs % BILLION }; .tv_nsec = nsecs % UM_NSEC_PER_SEC };
if (nanosleep(&ts, &ts) == 0) if (nanosleep(&ts, &ts) == 0)
alarm_handler(SIGVTALRM, NULL); alarm_handler(SIGVTALRM, NULL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册