Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a805219 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds
Browse files

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: default avatarJeff Dike <jdike@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 61b63c55
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -34,3 +34,7 @@ DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
DEFINE(UM_THREAD_SIZE, THREAD_SIZE);

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);
+0 −2
Original line number Diff line number Diff line
@@ -249,8 +249,6 @@ extern int setjmp_wrapper(void (*proc)(void *, void *), ...);
extern void os_dump_core(void);

/* time.c */
#define BILLION (1000 * 1000 * 1000)

extern void idle_sleep(unsigned long long nsecs);
extern int set_interval(void);
extern int timer_one_shot(int ticks);
+5 −4
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
 */
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)
@@ -118,8 +118,9 @@ void __init time_init(void)
	timer_init();

	nsecs = os_nsecs();
	set_normalized_timespec(&wall_to_monotonic, -nsecs / BILLION,
				-nsecs % BILLION);
	set_normalized_timespec(&xtime, nsecs / BILLION, nsecs % BILLION);
	set_normalized_timespec(&wall_to_monotonic, -nsecs / NSEC_PER_SEC,
				-nsecs % NSEC_PER_SEC);
	set_normalized_timespec(&xtime, nsecs / NSEC_PER_SEC,
				nsecs % NSEC_PER_SEC);
	late_time_init = setup_itimer;
}
+7 −5
Original line number Diff line number Diff line
@@ -294,8 +294,8 @@ void userspace(struct uml_pt_regs *regs)

	if (getitimer(ITIMER_VIRTUAL, &timer))
		printk("Failed to get itimer, errno = %d\n", errno);
	nsecs = timer.it_value.tv_sec * BILLION +
		timer.it_value.tv_usec * 1000;
	nsecs = timer.it_value.tv_sec * UM_NSEC_PER_SEC +
		timer.it_value.tv_usec * UM_NSEC_PER_USEC;
	nsecs += os_nsecs();

	while (1) {
@@ -347,8 +347,10 @@ void userspace(struct uml_pt_regs *regs)
				block_signals();
				(*sig_info[sig])(sig, regs);
				unblock_signals();
				nsecs = timer.it_value.tv_sec * BILLION +
					timer.it_value.tv_usec * 1000;
				nsecs = timer.it_value.tv_sec *
					UM_NSEC_PER_SEC +
					timer.it_value.tv_usec *
					UM_NSEC_PER_USEC;
				nsecs += os_nsecs();
				break;
			case SIGIO:
@@ -395,7 +397,7 @@ __initcall(init_thread_regs);

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;
	unsigned long current_stack = current_stub_stack();
	struct stub_data *data = (struct stub_data *) current_stack;
+6 −6
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@

int set_interval(void)
{
	int usec = 1000000/UM_HZ;
	int usec = UM_USEC_PER_SEC / UM_HZ;
	struct itimerval interval = ((struct itimerval) { { 0, usec },
							  { 0, usec } });

@@ -26,11 +26,11 @@ int set_interval(void)

int timer_one_shot(int ticks)
{
	unsigned long usec = ticks * 1000000 / UM_HZ;
	unsigned long sec = usec / 1000000;
	unsigned long usec = ticks * UM_USEC_PER_SEC / UM_HZ;
	unsigned long sec = usec / UM_USEC_PER_SEC;
	struct itimerval interval;

	usec %= 1000000;
	usec %= UM_USEC_PER_SEC;
	interval = ((struct itimerval) { { 0, 0 }, { sec, usec } });

	if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1)
@@ -78,8 +78,8 @@ extern void alarm_handler(int sig, struct sigcontext *sc);

void idle_sleep(unsigned long long nsecs)
{
	struct timespec ts = { .tv_sec	= nsecs / BILLION,
			       .tv_nsec = nsecs % BILLION };
	struct timespec ts = { .tv_sec	= nsecs / UM_NSEC_PER_SEC,
			       .tv_nsec = nsecs % UM_NSEC_PER_SEC };

	if (nanosleep(&ts, &ts) == 0)
		alarm_handler(SIGVTALRM, NULL);