svn commit: r247217 - user/dchagin/lemul/sys/compat/linux
Dmitry Chagin
dchagin at FreeBSD.org
Sun Feb 24 11:27:19 UTC 2013
Author: dchagin
Date: Sun Feb 24 11:27:18 2013
New Revision: 247217
URL: http://svnweb.freebsd.org/changeset/base/247217
Log:
Add a siginfo_t conversion function.
Modified:
user/dchagin/lemul/sys/compat/linux/linux_signal.c
user/dchagin/lemul/sys/compat/linux/linux_signal.h
Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.c
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 11:24:08 2013 (r247216)
+++ user/dchagin/lemul/sys/compat/linux/linux_signal.c Sun Feb 24 11:27:18 2013 (r247217)
@@ -644,33 +644,40 @@ void
ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig)
{
+ siginfo_to_lsiginfo(&ksi->ksi_info, lsi, sig);
+}
+
+void
+siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig)
+{
+
lsi->lsi_signo = sig;
- lsi->lsi_code = ksi->ksi_code;
+ lsi->lsi_code = si->si_code;
switch (sig) {
case LINUX_SIGPOLL:
/* XXX si_fd? */
- lsi->lsi_band = ksi->ksi_band;
+ lsi->lsi_band = si->si_band;
break;
case LINUX_SIGCHLD:
- lsi->lsi_pid = ksi->ksi_pid;
- lsi->lsi_uid = ksi->ksi_uid;
- lsi->lsi_status = ksi->ksi_status;
+ lsi->lsi_pid = si->si_pid;
+ lsi->lsi_uid = si->si_uid;
+ lsi->lsi_status = si->si_status;
break;
case LINUX_SIGBUS:
case LINUX_SIGILL:
case LINUX_SIGFPE:
case LINUX_SIGSEGV:
- lsi->lsi_addr = PTROUT(ksi->ksi_addr);
+ lsi->lsi_addr = PTROUT(si->si_addr);
break;
default:
/* XXX SI_TIMER etc... */
- lsi->lsi_pid = ksi->ksi_pid;
- lsi->lsi_uid = ksi->ksi_uid;
+ lsi->lsi_pid = si->si_pid;
+ lsi->lsi_uid = si->si_uid;
break;
}
if (sig >= LINUX_SIGRTMIN) {
- lsi->lsi_int = ksi->ksi_info.si_value.sival_int;
- lsi->lsi_ptr = PTROUT(ksi->ksi_info.si_value.sival_ptr);
+ lsi->lsi_int = si->si_value.sival_int;
+ lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr);
}
}
Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.h
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 11:24:08 2013 (r247216)
+++ user/dchagin/lemul/sys/compat/linux/linux_signal.h Sun Feb 24 11:27:18 2013 (r247217)
@@ -40,6 +40,7 @@ void linux_to_bsd_sigset(l_sigset_t *, s
void bsd_to_linux_sigset(sigset_t *, l_sigset_t *);
int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *);
void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig);
+void siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig);
#define LINUX_SIG_VALID(sig) ((sig) <= LINUX_NSIG && (sig) > 0)
More information about the svn-src-user
mailing list