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(nfsservctl);
|
||||
DUMMY(prctl);
|
||||
DUMMY(rt_sigpending);
|
||||
DUMMY(rt_sigtimedwait);
|
||||
DUMMY(rt_sigqueueinfo);
|
||||
DUMMY(capget);
|
||||
|
@ -308,7 +308,8 @@
|
||||
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
||||
l_sigset_t *mask, l_sigset_t *omask, \
|
||||
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); }
|
||||
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
||||
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];
|
||||
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__*/
|
||||
|
||||
int
|
||||
|
@ -57,7 +57,6 @@ DUMMY(vm86);
|
||||
DUMMY(query_module);
|
||||
DUMMY(nfsservctl);
|
||||
DUMMY(prctl);
|
||||
DUMMY(rt_sigpending);
|
||||
DUMMY(rt_sigtimedwait);
|
||||
DUMMY(rt_sigqueueinfo);
|
||||
DUMMY(capget);
|
||||
|
@ -312,7 +312,8 @@
|
||||
175 AUE_NULL MSTD { int linux_rt_sigprocmask(l_int how, \
|
||||
l_sigset_t *mask, l_sigset_t *omask, \
|
||||
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); }
|
||||
178 AUE_NULL MSTD { int linux_rt_sigqueueinfo(void); }
|
||||
179 AUE_NULL MSTD { int linux_rt_sigsuspend( \
|
||||
|
Loading…
x
Reference in New Issue
Block a user