forked from mirrors/linux
		
	clock_getres in the vDSO library has to preserve the same behaviour
of posix_get_hrtimer_res().
In particular, posix_get_hrtimer_res() does:
    sec = 0;
    ns = hrtimer_resolution;
and hrtimer_resolution depends on the enablement of the high
resolution timers that can happen either at compile or at run time.
Fix the nds32 vdso implementation of clock_getres keeping a copy of
hrtimer_resolution in vdso data and using that directly.
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Vincent Chen <deanbo422@gmail.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Greentime Hu <greentime@andestech.com>
		
	
			
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
// Copyright (C) 2012 ARM Limited
 | 
						|
// Copyright (C) 2005-2017 Andes Technology Corporation
 | 
						|
#ifndef __ASM_VDSO_DATAPAGE_H
 | 
						|
#define __ASM_VDSO_DATAPAGE_H
 | 
						|
 | 
						|
#ifdef __KERNEL__
 | 
						|
 | 
						|
#ifndef __ASSEMBLY__
 | 
						|
 | 
						|
struct vdso_data {
 | 
						|
	bool cycle_count_down;	/* timer cyclye counter is decrease with time */
 | 
						|
	u32 cycle_count_offset;	/* offset of timer cycle counter register */
 | 
						|
	u32 seq_count;		/* sequence count - odd during updates */
 | 
						|
	u32 xtime_coarse_sec;	/* coarse time */
 | 
						|
	u32 xtime_coarse_nsec;
 | 
						|
 | 
						|
	u32 wtm_clock_sec;	/* wall to monotonic offset */
 | 
						|
	u32 wtm_clock_nsec;
 | 
						|
	u32 xtime_clock_sec;	/* CLOCK_REALTIME - seconds */
 | 
						|
	u32 cs_mult;		/* clocksource multiplier */
 | 
						|
	u32 cs_shift;		/* Cycle to nanosecond divisor (power of two) */
 | 
						|
	u32 hrtimer_res;	/* hrtimer resolution */
 | 
						|
 | 
						|
	u64 cs_cycle_last;	/* last cycle value */
 | 
						|
	u64 cs_mask;		/* clocksource mask */
 | 
						|
 | 
						|
	u64 xtime_clock_nsec;	/* CLOCK_REALTIME sub-ns base */
 | 
						|
	u32 tz_minuteswest;	/* timezone info for gettimeofday(2) */
 | 
						|
	u32 tz_dsttime;
 | 
						|
};
 | 
						|
 | 
						|
#endif /* !__ASSEMBLY__ */
 | 
						|
 | 
						|
#endif /* __KERNEL__ */
 | 
						|
 | 
						|
#endif /* __ASM_VDSO_DATAPAGE_H */
 |