32-bit compatibility for various timer-related system calls.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
a982099ca5
commit
d1abb6a2b8
@ -1418,3 +1418,53 @@ asmlinkage long sys32_socketcall(int call, unsigned int *args32)
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sigevent32 {
|
||||||
|
u32 sigev_value;
|
||||||
|
u32 sigev_signo;
|
||||||
|
u32 sigev_notify;
|
||||||
|
u32 payload[(64 / 4) - 3];
|
||||||
|
};
|
||||||
|
|
||||||
|
extern asmlinkage long
|
||||||
|
sys_timer_create(clockid_t which_clock,
|
||||||
|
struct sigevent __user *timer_event_spec,
|
||||||
|
timer_t __user * created_timer_id);
|
||||||
|
|
||||||
|
long
|
||||||
|
sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *timer_id)
|
||||||
|
{
|
||||||
|
struct sigevent __user *p = NULL;
|
||||||
|
if (se32) {
|
||||||
|
struct sigevent se;
|
||||||
|
p = compat_alloc_user_space(sizeof(struct sigevent));
|
||||||
|
memset(&se, 0, sizeof(struct sigevent));
|
||||||
|
if (get_user(se.sigev_value.sival_int, &se32->sigev_value) ||
|
||||||
|
__get_user(se.sigev_signo, &se32->sigev_signo) ||
|
||||||
|
__get_user(se.sigev_notify, &se32->sigev_notify) ||
|
||||||
|
__copy_from_user(&se._sigev_un._pad, &se32->payload,
|
||||||
|
sizeof(se32->payload)) ||
|
||||||
|
copy_to_user(p, &se, sizeof(se)))
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
return sys_timer_create(clock, p, timer_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
asmlinkage long
|
||||||
|
sysn32_rt_sigtimedwait(const sigset_t __user *uthese,
|
||||||
|
siginfo_t __user *uinfo,
|
||||||
|
const struct compat_timespec __user *uts32,
|
||||||
|
size_t sigsetsize)
|
||||||
|
{
|
||||||
|
struct timespec __user *uts = NULL;
|
||||||
|
|
||||||
|
if (uts32) {
|
||||||
|
struct timespec ts;
|
||||||
|
uts = compat_alloc_user_space(sizeof(struct timespec));
|
||||||
|
if (get_user(ts.tv_sec, &uts32->tv_sec) ||
|
||||||
|
get_user(ts.tv_nsec, &uts32->tv_nsec) ||
|
||||||
|
copy_to_user (uts, &ts, sizeof (ts)))
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
return sys_rt_sigtimedwait(uthese, uinfo, uts, sigsetsize);
|
||||||
|
}
|
||||||
|
@ -243,8 +243,8 @@ EXPORT(sysn32_call_table)
|
|||||||
PTR sys_capget
|
PTR sys_capget
|
||||||
PTR sys_capset
|
PTR sys_capset
|
||||||
PTR sys32_rt_sigpending /* 6125 */
|
PTR sys32_rt_sigpending /* 6125 */
|
||||||
PTR compat_sys_rt_sigtimedwait
|
PTR sysn32_rt_sigtimedwait
|
||||||
PTR sys32_rt_sigqueueinfo
|
PTR sys_rt_sigqueueinfo
|
||||||
PTR sys32_rt_sigsuspend
|
PTR sys32_rt_sigsuspend
|
||||||
PTR sys32_sigaltstack
|
PTR sys32_sigaltstack
|
||||||
PTR compat_sys_utime /* 6130 */
|
PTR compat_sys_utime /* 6130 */
|
||||||
@ -337,15 +337,15 @@ EXPORT(sysn32_call_table)
|
|||||||
PTR compat_sys_statfs64
|
PTR compat_sys_statfs64
|
||||||
PTR compat_sys_fstatfs64
|
PTR compat_sys_fstatfs64
|
||||||
PTR sys_sendfile64
|
PTR sys_sendfile64
|
||||||
PTR sys_timer_create /* 6220 */
|
PTR sys32_timer_create /* 6220 */
|
||||||
PTR sys_timer_settime
|
PTR compat_sys_timer_settime
|
||||||
PTR sys_timer_gettime
|
PTR compat_sys_timer_gettime
|
||||||
PTR sys_timer_getoverrun
|
PTR sys_timer_getoverrun
|
||||||
PTR sys_timer_delete
|
PTR sys_timer_delete
|
||||||
PTR sys_clock_settime /* 6225 */
|
PTR compat_sys_clock_settime /* 6225 */
|
||||||
PTR sys_clock_gettime
|
PTR compat_sys_clock_gettime
|
||||||
PTR sys_clock_getres
|
PTR compat_sys_clock_getres
|
||||||
PTR sys_clock_nanosleep
|
PTR compat_sys_clock_nanosleep
|
||||||
PTR sys_tgkill
|
PTR sys_tgkill
|
||||||
PTR compat_sys_utimes /* 6230 */
|
PTR compat_sys_utimes /* 6230 */
|
||||||
PTR sys_ni_syscall /* sys_mbind */
|
PTR sys_ni_syscall /* sys_mbind */
|
||||||
|
@ -459,7 +459,7 @@ sys_call_table:
|
|||||||
PTR sys_fadvise64_64
|
PTR sys_fadvise64_64
|
||||||
PTR compat_sys_statfs64 /* 4255 */
|
PTR compat_sys_statfs64 /* 4255 */
|
||||||
PTR compat_sys_fstatfs64
|
PTR compat_sys_fstatfs64
|
||||||
PTR sys_timer_create
|
PTR sys32_timer_create
|
||||||
PTR compat_sys_timer_settime
|
PTR compat_sys_timer_settime
|
||||||
PTR compat_sys_timer_gettime
|
PTR compat_sys_timer_gettime
|
||||||
PTR sys_timer_getoverrun /* 4260 */
|
PTR sys_timer_getoverrun /* 4260 */
|
||||||
|
Loading…
Reference in New Issue
Block a user