diff --git a/include/linux/time.h b/include/linux/time.h index 9c444d9c4aa0567c69ed1414fadd3e7d74d834e7..773b83ddd8efbdaec1eb5be822c4f71ad1cd8f68 100644 --- a/include/linux/time.h +++ b/include/linux/time.h @@ -38,9 +38,11 @@ static __inline__ int timespec_equal(struct timespec *a, struct timespec *b) return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } -extern unsigned long mktime (unsigned int year, unsigned int mon, - unsigned int day, unsigned int hour, - unsigned int min, unsigned int sec); +extern unsigned long mktime(const unsigned int year, const unsigned int mon, + const unsigned int day, const unsigned int hour, + const unsigned int min, const unsigned int sec); + +extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); extern struct timespec xtime; extern struct timespec wall_to_monotonic; @@ -51,8 +53,6 @@ static inline unsigned long get_seconds(void) return xtime.tv_sec; } -extern void set_normalized_timespec (struct timespec *ts, time_t sec, long nsec); - struct timespec current_kernel_time(void); #define CURRENT_TIME (current_kernel_time()) diff --git a/kernel/time.c b/kernel/time.c index fa569885e22bc38b9b1e304ad82e441796ba8e93..a0502aef43ce826833c929fb3dcfa1331fb1dcac 100644 --- a/kernel/time.c +++ b/kernel/time.c @@ -599,12 +599,15 @@ EXPORT_SYMBOL_GPL(getnstimestamp); * will already get problems at other places on 2038-01-19 03:14:08) */ unsigned long -mktime (unsigned int year, unsigned int mon, - unsigned int day, unsigned int hour, - unsigned int min, unsigned int sec) +mktime(const unsigned int year0, const unsigned int mon0, + const unsigned int day, const unsigned int hour, + const unsigned int min, const unsigned int sec) { - if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */ - mon += 12; /* Puts Feb last since it has leap day */ + unsigned int mon = mon0, year = year0; + + /* 1..12 -> 11,12,1..10 */ + if (0 >= (int) (mon -= 2)) { + mon += 12; /* Puts Feb last since it has leap day */ year -= 1; } @@ -630,7 +633,7 @@ mktime (unsigned int year, unsigned int mon, * 0 <= tv_nsec < NSEC_PER_SEC * For negative values only the tv_sec field is negative ! */ -void set_normalized_timespec (struct timespec *ts, time_t sec, long nsec) +void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec) { while (nsec >= NSEC_PER_SEC) { nsec -= NSEC_PER_SEC;