diff options
Diffstat (limited to 'kernel/posix-timers.c')
| -rw-r--r-- | kernel/posix-timers.c | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index d089d052c4a..495440779ce 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c @@ -242,6 +242,25 @@ static int posix_get_monotonic_raw(clockid_t which_clock, struct timespec *tp)  	return 0;  } + +static int posix_get_realtime_coarse(clockid_t which_clock, struct timespec *tp) +{ +	*tp = current_kernel_time(); +	return 0; +} + +static int posix_get_monotonic_coarse(clockid_t which_clock, +						struct timespec *tp) +{ +	*tp = get_monotonic_coarse(); +	return 0; +} + +int posix_get_coarse_res(const clockid_t which_clock, struct timespec *tp) +{ +	*tp = ktime_to_timespec(KTIME_LOW_RES); +	return 0; +}  /*   * Initialize everything, well, just everything in Posix clocks/timers ;)   */ @@ -262,10 +281,26 @@ static __init int init_posix_timers(void)  		.timer_create = no_timer_create,  		.nsleep = no_nsleep,  	}; +	struct k_clock clock_realtime_coarse = { +		.clock_getres = posix_get_coarse_res, +		.clock_get = posix_get_realtime_coarse, +		.clock_set = do_posix_clock_nosettime, +		.timer_create = no_timer_create, +		.nsleep = no_nsleep, +	}; +	struct k_clock clock_monotonic_coarse = { +		.clock_getres = posix_get_coarse_res, +		.clock_get = posix_get_monotonic_coarse, +		.clock_set = do_posix_clock_nosettime, +		.timer_create = no_timer_create, +		.nsleep = no_nsleep, +	};  	register_posix_clock(CLOCK_REALTIME, &clock_realtime);  	register_posix_clock(CLOCK_MONOTONIC, &clock_monotonic);  	register_posix_clock(CLOCK_MONOTONIC_RAW, &clock_monotonic_raw); +	register_posix_clock(CLOCK_REALTIME_COARSE, &clock_realtime_coarse); +	register_posix_clock(CLOCK_MONOTONIC_COARSE, &clock_monotonic_coarse);  	posix_timers_cache = kmem_cache_create("posix_timers_cache",  					sizeof (struct k_itimer), 0, SLAB_PANIC,  | 
