diff options
| author | Dmitry Chagin <dchagin@FreeBSD.org> | 2009-05-10 18:43:43 +0000 |
|---|---|---|
| committer | Dmitry Chagin <dchagin@FreeBSD.org> | 2009-05-10 18:43:43 +0000 |
| commit | 8d30f381ef4262426fae3baff499218555b512b7 (patch) | |
| tree | 80f75650b634fefa8d61d026ce4eb87879a7bdf8 /sys/compat | |
| parent | 580dd797fd39fcd07162a4dd9c53e683bcff96ff (diff) | |
Notes
Diffstat (limited to 'sys/compat')
| -rw-r--r-- | sys/compat/linux/linux_mib.h | 1 | ||||
| -rw-r--r-- | sys/compat/linux/linux_misc.c | 14 |
2 files changed, 14 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_mib.h b/sys/compat/linux/linux_mib.h index 9f0f41c0d84e..f78a5e501402 100644 --- a/sys/compat/linux/linux_mib.h +++ b/sys/compat/linux/linux_mib.h @@ -45,6 +45,7 @@ int linux_set_oss_version(struct thread *td, int oss_version); int linux_kernver(struct thread *td); +#define LINUX_KERNVER_2004000 2004000 #define LINUX_KERNVER_2006000 2006000 #define linux_use26(t) (linux_kernver(t) >= LINUX_KERNVER_2006000) diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c index c5b1e54569e9..72791971c7be 100644 --- a/sys/compat/linux/linux_misc.c +++ b/sys/compat/linux/linux_misc.c @@ -661,7 +661,19 @@ struct l_times_argv { l_clock_t tms_cstime; }; -#define CONVTCK(r) (r.tv_sec * stclohz + r.tv_usec / (1000000 / stclohz)) + +/* + * Glibc versions prior to 2.2.1 always use hard-coded CLK_TCK value. + * Since 2.2.1 Glibc uses value exported from kernel via AT_CLKTCK + * auxiliary vector entry. + */ +#define CLK_TCK 100 + +#define CONVOTCK(r) (r.tv_sec * CLK_TCK + r.tv_usec / (1000000 / CLK_TCK)) +#define CONVNTCK(r) (r.tv_sec * stclohz + r.tv_usec / (1000000 / stclohz)) + +#define CONVTCK(r) (linux_kernver(td) >= LINUX_KERNVER_2004000 ? \ + CONVNTCK(r) : CONVOTCK(r)) int linux_times(struct thread *td, struct linux_times_args *args) |
