fs/binfmt: Convert obsolete cputime type to nsecs
Use the new nsec based cputime accessors as part of the whole cputime conversion from cputime_t to nsecs. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rik van Riel <riel@redhat.com> Cc: Stanislaw Gruszka <sgruszka@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc: Wanpeng Li <wanpeng.li@hotmail.com> Link: http://lkml.kernel.org/r/1485832191-26889-12-git-send-email-fweisbec@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
c0e7a5000d
commit
cd19c364b3
@ -99,15 +99,7 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
|
|||||||
#undef TASK_SIZE
|
#undef TASK_SIZE
|
||||||
#define TASK_SIZE TASK_SIZE32
|
#define TASK_SIZE TASK_SIZE32
|
||||||
|
|
||||||
#undef cputime_to_timeval
|
#undef ns_to_timeval
|
||||||
#define cputime_to_timeval cputime_to_compat_timeval
|
#define ns_to_timeval ns_to_compat_timeval
|
||||||
static __inline__ void
|
|
||||||
cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
|
|
||||||
{
|
|
||||||
unsigned long jiffies = cputime_to_jiffies(cputime);
|
|
||||||
|
|
||||||
value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
|
|
||||||
value->tv_sec = jiffies / HZ;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "../../../fs/binfmt_elf.c"
|
#include "../../../fs/binfmt_elf.c"
|
||||||
|
@ -102,15 +102,7 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
|
|||||||
#undef TASK_SIZE
|
#undef TASK_SIZE
|
||||||
#define TASK_SIZE TASK_SIZE32
|
#define TASK_SIZE TASK_SIZE32
|
||||||
|
|
||||||
#undef cputime_to_timeval
|
#undef ns_to_timeval
|
||||||
#define cputime_to_timeval cputime_to_compat_timeval
|
#define ns_to_timeval ns_to_compat_timeval
|
||||||
static __inline__ void
|
|
||||||
cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
|
|
||||||
{
|
|
||||||
unsigned long jiffies = cputime_to_jiffies(cputime);
|
|
||||||
|
|
||||||
value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
|
|
||||||
value->tv_sec = jiffies / HZ;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "../../../fs/binfmt_elf.c"
|
#include "../../../fs/binfmt_elf.c"
|
||||||
|
@ -91,14 +91,7 @@ struct elf_prpsinfo32
|
|||||||
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
||||||
current->thread.task_size = DEFAULT_TASK_SIZE32 \
|
current->thread.task_size = DEFAULT_TASK_SIZE32 \
|
||||||
|
|
||||||
#undef cputime_to_timeval
|
#undef ns_to_timeval
|
||||||
#define cputime_to_timeval cputime_to_compat_timeval
|
#define ns_to_timeval ns_to_compat_timeval
|
||||||
static __inline__ void
|
|
||||||
cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
|
|
||||||
{
|
|
||||||
unsigned long jiffies = cputime_to_jiffies(cputime);
|
|
||||||
value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
|
|
||||||
value->tv_sec = jiffies / HZ;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "../../../fs/binfmt_elf.c"
|
#include "../../../fs/binfmt_elf.c"
|
||||||
|
@ -1411,8 +1411,6 @@ static void fill_note(struct memelfnote *note, const char *name, int type,
|
|||||||
static void fill_prstatus(struct elf_prstatus *prstatus,
|
static void fill_prstatus(struct elf_prstatus *prstatus,
|
||||||
struct task_struct *p, long signr)
|
struct task_struct *p, long signr)
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
|
||||||
|
|
||||||
prstatus->pr_info.si_signo = prstatus->pr_cursig = signr;
|
prstatus->pr_info.si_signo = prstatus->pr_cursig = signr;
|
||||||
prstatus->pr_sigpend = p->pending.signal.sig[0];
|
prstatus->pr_sigpend = p->pending.signal.sig[0];
|
||||||
prstatus->pr_sighold = p->blocked.sig[0];
|
prstatus->pr_sighold = p->blocked.sig[0];
|
||||||
@ -1423,29 +1421,25 @@ static void fill_prstatus(struct elf_prstatus *prstatus,
|
|||||||
prstatus->pr_pgrp = task_pgrp_vnr(p);
|
prstatus->pr_pgrp = task_pgrp_vnr(p);
|
||||||
prstatus->pr_sid = task_session_vnr(p);
|
prstatus->pr_sid = task_session_vnr(p);
|
||||||
if (thread_group_leader(p)) {
|
if (thread_group_leader(p)) {
|
||||||
struct task_cputime_t cputime;
|
struct task_cputime cputime;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the record for the group leader. It shows the
|
* This is the record for the group leader. It shows the
|
||||||
* group-wide total, not its individual thread total.
|
* group-wide total, not its individual thread total.
|
||||||
*/
|
*/
|
||||||
thread_group_cputime_t(p, &cputime);
|
thread_group_cputime(p, &cputime);
|
||||||
cputime_to_timeval(cputime.utime, &prstatus->pr_utime);
|
prstatus->pr_utime = ns_to_timeval(cputime.utime);
|
||||||
cputime_to_timeval(cputime.stime, &prstatus->pr_stime);
|
prstatus->pr_stime = ns_to_timeval(cputime.stime);
|
||||||
} else {
|
} else {
|
||||||
cputime_t utime, stime;
|
u64 utime, stime;
|
||||||
|
|
||||||
task_cputime_t(p, &utime, &stime);
|
task_cputime(p, &utime, &stime);
|
||||||
cputime_to_timeval(utime, &prstatus->pr_utime);
|
prstatus->pr_utime = ns_to_timeval(utime);
|
||||||
cputime_to_timeval(stime, &prstatus->pr_stime);
|
prstatus->pr_stime = ns_to_timeval(stime);
|
||||||
}
|
}
|
||||||
tv = ns_to_timeval(p->signal->cutime);
|
|
||||||
prstatus->pr_cutime.tv_sec = tv.tv_sec;
|
|
||||||
prstatus->pr_cutime.tv_usec = tv.tv_usec;
|
|
||||||
|
|
||||||
tv = ns_to_timeval(p->signal->cstime);
|
prstatus->pr_cutime = ns_to_timeval(p->signal->cutime);
|
||||||
prstatus->pr_cstime.tv_sec = tv.tv_sec;
|
prstatus->pr_cstime = ns_to_timeval(p->signal->cstime);
|
||||||
prstatus->pr_cstime.tv_usec = tv.tv_usec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
|
static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
|
||||||
|
@ -1342,21 +1342,21 @@ static void fill_prstatus(struct elf_prstatus *prstatus,
|
|||||||
prstatus->pr_pgrp = task_pgrp_vnr(p);
|
prstatus->pr_pgrp = task_pgrp_vnr(p);
|
||||||
prstatus->pr_sid = task_session_vnr(p);
|
prstatus->pr_sid = task_session_vnr(p);
|
||||||
if (thread_group_leader(p)) {
|
if (thread_group_leader(p)) {
|
||||||
struct task_cputime_t cputime;
|
struct task_cputime cputime;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the record for the group leader. It shows the
|
* This is the record for the group leader. It shows the
|
||||||
* group-wide total, not its individual thread total.
|
* group-wide total, not its individual thread total.
|
||||||
*/
|
*/
|
||||||
thread_group_cputime_t(p, &cputime);
|
thread_group_cputime(p, &cputime);
|
||||||
cputime_to_timeval(cputime.utime, &prstatus->pr_utime);
|
prstatus->pr_utime = ns_to_timeval(cputime.utime);
|
||||||
cputime_to_timeval(cputime.stime, &prstatus->pr_stime);
|
prstatus->pr_stime = ns_to_timeval(cputime.stime);
|
||||||
} else {
|
} else {
|
||||||
cputime_t utime, stime;
|
u64 utime, stime;
|
||||||
|
|
||||||
task_cputime_t(p, &utime, &stime);
|
task_cputime(p, &utime, &stime);
|
||||||
cputime_to_timeval(utime, &prstatus->pr_utime);
|
prstatus->pr_utime = ns_to_timeval(utime);
|
||||||
cputime_to_timeval(stime, &prstatus->pr_stime);
|
prstatus->pr_stime = ns_to_timeval(stime);
|
||||||
}
|
}
|
||||||
prstatus->pr_cutime = ns_to_timeval(p->signal->cutime);
|
prstatus->pr_cutime = ns_to_timeval(p->signal->cutime);
|
||||||
prstatus->pr_cstime = ns_to_timeval(p->signal->cstime);
|
prstatus->pr_cstime = ns_to_timeval(p->signal->cstime);
|
||||||
|
@ -51,22 +51,8 @@
|
|||||||
#define elf_prstatus compat_elf_prstatus
|
#define elf_prstatus compat_elf_prstatus
|
||||||
#define elf_prpsinfo compat_elf_prpsinfo
|
#define elf_prpsinfo compat_elf_prpsinfo
|
||||||
|
|
||||||
/*
|
#undef ns_to_timeval
|
||||||
* Compat version of cputime_to_compat_timeval, perhaps this
|
#define ns_to_timeval ns_to_compat_timeval
|
||||||
* should be an inline in <linux/compat.h>.
|
|
||||||
*/
|
|
||||||
static void cputime_to_compat_timeval(const cputime_t cputime,
|
|
||||||
struct compat_timeval *value)
|
|
||||||
{
|
|
||||||
struct timeval tv;
|
|
||||||
cputime_to_timeval(cputime, &tv);
|
|
||||||
value->tv_sec = tv.tv_sec;
|
|
||||||
value->tv_usec = tv.tv_usec;
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef cputime_to_timeval
|
|
||||||
#define cputime_to_timeval cputime_to_compat_timeval
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To use this file, asm/elf.h must define compat_elf_check_arch.
|
* To use this file, asm/elf.h must define compat_elf_check_arch.
|
||||||
|
@ -731,7 +731,25 @@ asmlinkage long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32,
|
|||||||
static inline bool in_compat_syscall(void) { return is_compat_task(); }
|
static inline bool in_compat_syscall(void) { return is_compat_task(); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
/**
|
||||||
|
* ns_to_compat_timeval - Compat version of ns_to_timeval
|
||||||
|
* @nsec: the nanoseconds value to be converted
|
||||||
|
*
|
||||||
|
* Returns the compat_timeval representation of the nsec parameter.
|
||||||
|
*/
|
||||||
|
static inline struct compat_timeval ns_to_compat_timeval(s64 nsec)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
struct compat_timeval ctv;
|
||||||
|
|
||||||
|
tv = ns_to_timeval(nsec);
|
||||||
|
ctv.tv_sec = tv.tv_sec;
|
||||||
|
ctv.tv_usec = tv.tv_usec;
|
||||||
|
|
||||||
|
return ctv;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* !CONFIG_COMPAT */
|
||||||
|
|
||||||
#define is_compat_task() (0)
|
#define is_compat_task() (0)
|
||||||
static inline bool in_compat_syscall(void) { return false; }
|
static inline bool in_compat_syscall(void) { return false; }
|
||||||
|
Loading…
Reference in New Issue
Block a user