Implement rt_sigpending in the linuxolator.
PR: 92671 Submitted by: Markus Niemist"o <markus.niemisto@gmx.net>
This commit is contained in:
parent
f488d07edb
commit
17138b619c
@ -54,7 +54,6 @@ DUMMY(sysfs);
|
|||||||
DUMMY(query_module);
|
DUMMY(query_module);
|
||||||
DUMMY(nfsservctl);
|
DUMMY(nfsservctl);
|
||||||
DUMMY(prctl);
|
DUMMY(prctl);
|
||||||
DUMMY(rt_sigpending);
|
|
||||||
DUMMY(rt_sigtimedwait);
|
DUMMY(rt_sigtimedwait);
|
||||||
DUMMY(rt_sigqueueinfo);
|
DUMMY(rt_sigqueueinfo);
|
||||||
DUMMY(capget);
|
DUMMY(capget);
|
||||||
|
@ -308,7 +308,8 @@
|
|||||||
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
||||||
l_sigset_t *mask, l_sigset_t *omask, \
|
l_sigset_t *mask, l_sigset_t *omask, \
|
||||||
l_size_t sigsetsize); }
|
l_size_t sigsetsize); }
|
||||||
176 AUE_NULL MSTD { int linux_rt_sigpending(void); }
|
176 AUE_NULL MSTD { int linux_rt_sigpending(l_sigset_t *set, \
|
||||||
|
l_size_t sigsetsize); }
|
||||||
177 AUE_NULL MSTD { int linux_rt_sigtimedwait(void); }
|
177 AUE_NULL MSTD { int linux_rt_sigtimedwait(void); }
|
||||||
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
||||||
179 AUE_NULL MSTD { int linux_rt_sigsuspend( \
|
179 AUE_NULL MSTD { int linux_rt_sigsuspend( \
|
||||||
|
@ -406,6 +406,34 @@ linux_sigpending(struct thread *td, struct linux_sigpending_args *args)
|
|||||||
mask = lset.__bits[0];
|
mask = lset.__bits[0];
|
||||||
return (copyout(&mask, args->mask, sizeof(mask)));
|
return (copyout(&mask, args->mask, sizeof(mask)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MPSAFE
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
linux_rt_sigpending(struct thread *td, struct linux_rt_sigpending_args *args)
|
||||||
|
{
|
||||||
|
struct proc *p = td->td_proc;
|
||||||
|
sigset_t bset;
|
||||||
|
l_sigset_t lset;
|
||||||
|
|
||||||
|
if (args->sigsetsize > sizeof(lset))
|
||||||
|
return EINVAL;
|
||||||
|
/* NOT REACHED */
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (ldebug(rt_sigpending))
|
||||||
|
printf(ARGS(rt_sigpending, "*"));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PROC_LOCK(p);
|
||||||
|
bset = p->p_siglist;
|
||||||
|
SIGSETOR(bset, td->td_siglist);
|
||||||
|
SIGSETAND(bset, td->td_sigmask);
|
||||||
|
PROC_UNLOCK(p);
|
||||||
|
bsd_to_linux_sigset(&bset, &lset);
|
||||||
|
return (copyout(&lset, args->set, args->sigsetsize));
|
||||||
|
}
|
||||||
#endif /*!__alpha__*/
|
#endif /*!__alpha__*/
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -57,7 +57,6 @@ DUMMY(vm86);
|
|||||||
DUMMY(query_module);
|
DUMMY(query_module);
|
||||||
DUMMY(nfsservctl);
|
DUMMY(nfsservctl);
|
||||||
DUMMY(prctl);
|
DUMMY(prctl);
|
||||||
DUMMY(rt_sigpending);
|
|
||||||
DUMMY(rt_sigtimedwait);
|
DUMMY(rt_sigtimedwait);
|
||||||
DUMMY(rt_sigqueueinfo);
|
DUMMY(rt_sigqueueinfo);
|
||||||
DUMMY(capget);
|
DUMMY(capget);
|
||||||
|
@ -312,7 +312,8 @@
|
|||||||
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
||||||
l_sigset_t *mask, l_sigset_t *omask, \
|
l_sigset_t *mask, l_sigset_t *omask, \
|
||||||
l_size_t sigsetsize); }
|
l_size_t sigsetsize); }
|
||||||
176 AUE_NULL MSTD { int linux_rt_sigpending(void); }
|
176 AUE_NULL MSTD { int linux_rt_sigpending(l_sigset_t *set, \
|
||||||
|
l_size_t sigsetsize); }
|
||||||
177 AUE_NULL MSTD { int linux_rt_sigtimedwait(void); }
|
177 AUE_NULL MSTD { int linux_rt_sigtimedwait(void); }
|
||||||
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
||||||
179 AUE_NULL MSTD { int linux_rt_sigsuspend( \
|
179 AUE_NULL MSTD { int linux_rt_sigsuspend( \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user