This patch introduces the new methods with timespec64/itimerspec64 type for k_clcok structure,converts the timepsec type to timespec64 type in k_clock structure and converts the itimerspec type to itimerspec64 type to ready for 2038 issue.
Signed-off-by: Baolin Wang baolin.wang@linaro.org --- include/linux/posix-timers.h | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 907f3fd..35786c5 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -98,9 +98,13 @@ struct k_itimer {
struct k_clock { int (*clock_getres) (const clockid_t which_clock, struct timespec *tp); + int (*clock_getres64) (const clockid_t which_clock, struct timespec64 *tp); int (*clock_set) (const clockid_t which_clock, const struct timespec *tp); + int (*clock_set64) (const clockid_t which_clock, + const struct timespec64 *tp); int (*clock_get) (const clockid_t which_clock, struct timespec * tp); + int (*clock_get64) (const clockid_t which_clock, struct timespec64 *tp); int (*clock_adj) (const clockid_t which_clock, struct timex *tx); int (*timer_create) (struct k_itimer *timer); int (*nsleep) (const clockid_t which_clock, int flags, @@ -109,10 +113,15 @@ struct k_clock { int (*timer_set) (struct k_itimer * timr, int flags, struct itimerspec * new_setting, struct itimerspec * old_setting); + int (*timer_set64) (struct k_itimer *timr, int flags, + struct itimerspec64 *new_setting, + struct itimerspec64 *old_setting); int (*timer_del) (struct k_itimer * timr); #define TIMER_RETRY 1 void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting); + void (*timer_get64) (struct k_itimer *timr, + struct itimerspec64 *cur_setting); };
extern struct k_clock clock_posix_cpu;
On Thu, 30 Apr 2015, Baolin Wang wrote:
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 907f3fd..35786c5 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -98,9 +98,13 @@ struct k_itimer { struct k_clock { int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
- int (*clock_getres64) (const clockid_t which_clock, struct timespec64 *tp); int (*clock_set) (const clockid_t which_clock, const struct timespec *tp);
- int (*clock_set64) (const clockid_t which_clock,
int (*clock_get) (const clockid_t which_clock, struct timespec * tp);const struct timespec64 *tp);
- int (*clock_get64) (const clockid_t which_clock, struct timespec64 *tp); int (*clock_adj) (const clockid_t which_clock, struct timex *tx); int (*timer_create) (struct k_itimer *timer); int (*nsleep) (const clockid_t which_clock, int flags,
@@ -109,10 +113,15 @@ struct k_clock { int (*timer_set) (struct k_itimer * timr, int flags, struct itimerspec * new_setting, struct itimerspec * old_setting);
- int (*timer_set64) (struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
int (*timer_del) (struct k_itimer * timr);struct itimerspec64 *old_setting);
#define TIMER_RETRY 1 void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting);
- void (*timer_get64) (struct k_itimer *timr,
struct itimerspec64 *cur_setting);
I asked you last time to provide a conversion for a single instance first and I gave you even step by step instructions.
But you insist on resending the whole mess in one go. Try again.
Thanks,
tglx
On 5 May 2015 at 21:31, Thomas Gleixner tglx@linutronix.de wrote:
On Thu, 30 Apr 2015, Baolin Wang wrote:
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 907f3fd..35786c5 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -98,9 +98,13 @@ struct k_itimer {
struct k_clock { int (*clock_getres) (const clockid_t which_clock, struct timespec
*tp);
int (*clock_getres64) (const clockid_t which_clock, struct
timespec64 *tp);
int (*clock_set) (const clockid_t which_clock, const struct timespec *tp);
int (*clock_set64) (const clockid_t which_clock,
const struct timespec64 *tp); int (*clock_get) (const clockid_t which_clock, struct timespec *
tp);
int (*clock_get64) (const clockid_t which_clock, struct timespec64
*tp);
int (*clock_adj) (const clockid_t which_clock, struct timex *tx); int (*timer_create) (struct k_itimer *timer); int (*nsleep) (const clockid_t which_clock, int flags,
@@ -109,10 +113,15 @@ struct k_clock { int (*timer_set) (struct k_itimer * timr, int flags, struct itimerspec * new_setting, struct itimerspec * old_setting);
int (*timer_set64) (struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
struct itimerspec64 *old_setting); int (*timer_del) (struct k_itimer * timr);
#define TIMER_RETRY 1 void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting);
void (*timer_get64) (struct k_itimer *timr,
struct itimerspec64 *cur_setting);
I asked you last time to provide a conversion for a single instance first and I gave you even step by step instructions.
But you insist on resending the whole mess in one go. Try again.
Thanks,
tglx
Hi Thomas,
Thanks for your comments. I think i have followed your instructions to convert the syscall functions in patch 5 and patch 6.
And i have confusions about the "a single instance first", could you explain that in detail? Thanks a lot.
On Wed, 6 May 2015, Baolin Wang wrote:
On 5 May 2015 at 21:31, Thomas Gleixner tglx@linutronix.de wrote:
On Thu, 30 Apr 2015, Baolin Wang wrote:
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 907f3fd..35786c5 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -98,9 +98,13 @@ struct k_itimer {
struct k_clock { int (*clock_getres) (const clockid_t which_clock, struct timespec
*tp);
int (*clock_getres64) (const clockid_t which_clock, struct
timespec64 *tp);
int (*clock_set) (const clockid_t which_clock, const struct timespec *tp);
int (*clock_set64) (const clockid_t which_clock,
const struct timespec64 *tp); int (*clock_get) (const clockid_t which_clock, struct timespec *
tp);
int (*clock_get64) (const clockid_t which_clock, struct timespec64
*tp);
int (*clock_adj) (const clockid_t which_clock, struct timex *tx); int (*timer_create) (struct k_itimer *timer); int (*nsleep) (const clockid_t which_clock, int flags,
@@ -109,10 +113,15 @@ struct k_clock { int (*timer_set) (struct k_itimer * timr, int flags, struct itimerspec * new_setting, struct itimerspec * old_setting);
int (*timer_set64) (struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
struct itimerspec64 *old_setting); int (*timer_del) (struct k_itimer * timr);
#define TIMER_RETRY 1 void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting);
void (*timer_get64) (struct k_itimer *timr,
struct itimerspec64 *cur_setting);
I asked you last time to provide a conversion for a single instance first and I gave you even step by step instructions.
But you insist on resending the whole mess in one go. Try again.
Thanks,
tglx
Hi Thomas,
Thanks for your comments. I think i have followed your instructions to convert the syscall functions in patch 5 and patch 6.
And i have confusions about the "a single instance first", could you explain that in detail? Thanks a lot.
Single function, single syscall. Not a wholesale conversion of the world and some more.
On 6 May 2015 at 16:06, Thomas Gleixner tglx@linutronix.de wrote:
On Wed, 6 May 2015, Baolin Wang wrote:
On 5 May 2015 at 21:31, Thomas Gleixner tglx@linutronix.de wrote:
On Thu, 30 Apr 2015, Baolin Wang wrote:
diff --git a/include/linux/posix-timers.h
b/include/linux/posix-timers.h
index 907f3fd..35786c5 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -98,9 +98,13 @@ struct k_itimer {
struct k_clock { int (*clock_getres) (const clockid_t which_clock, struct
timespec
*tp);
int (*clock_getres64) (const clockid_t which_clock, struct
timespec64 *tp);
int (*clock_set) (const clockid_t which_clock, const struct timespec *tp);
int (*clock_set64) (const clockid_t which_clock,
const struct timespec64 *tp); int (*clock_get) (const clockid_t which_clock, struct timespec
tp);
int (*clock_get64) (const clockid_t which_clock, struct
timespec64
*tp);
int (*clock_adj) (const clockid_t which_clock, struct timex
*tx);
int (*timer_create) (struct k_itimer *timer); int (*nsleep) (const clockid_t which_clock, int flags,
@@ -109,10 +113,15 @@ struct k_clock { int (*timer_set) (struct k_itimer * timr, int flags, struct itimerspec * new_setting, struct itimerspec * old_setting);
int (*timer_set64) (struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
struct itimerspec64 *old_setting); int (*timer_del) (struct k_itimer * timr);
#define TIMER_RETRY 1 void (*timer_get) (struct k_itimer * timr, struct itimerspec * cur_setting);
void (*timer_get64) (struct k_itimer *timr,
struct itimerspec64 *cur_setting);
I asked you last time to provide a conversion for a single instance first and I gave you even step by step instructions.
But you insist on resending the whole mess in one go. Try again.
Thanks,
tglx
Hi Thomas,
Thanks for your comments. I think i have followed your instructions to convert the syscall functions in patch 5 and patch 6.
And i have confusions about the "a single instance first", could you explain that in detail? Thanks a lot.
Single function, single syscall. Not a wholesale conversion of the world and some more.
Hi Thomas,
You mean that i should introduce one 64bit method (like: int (*clock_set64) (xxxxx) ), then convert the "clock_set" to "clock_set64" for all the drivers. Next introduce the next 64bit method again.
Do i understand your concepts correctly? If it is wrong, please point out. Thank you.