aboutsummaryrefslogtreecommitdiff
path: root/linux-user/signal.c
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-12 11:02:46 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-12 11:02:46 +0000
commit7f7f7c846345550634e1d4b91c9c5f475edfd9ed (patch)
treee305b9b78d7b33b025216f16fc956a3a6cd8b4e6 /linux-user/signal.c
parentfe8f096b16bf2328ec615d4314f06cd5545f32e5 (diff)
Sigio fd passing, by Alexander Graf.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3077 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user/signal.c')
-rw-r--r--linux-user/signal.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 6dcb9dc530..eea73470fa 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -207,6 +207,8 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
/* should never come here, but who knows. The information for
the target is irrelevant */
tinfo->_sifields._sigfault._addr = 0;
+ } else if (sig == SIGIO) {
+ tinfo->_sifields._sigpoll._fd = info->si_fd;
} else if (sig >= TARGET_SIGRTMIN) {
tinfo->_sifields._rt._pid = info->si_pid;
tinfo->_sifields._rt._uid = info->si_uid;
@@ -228,6 +230,8 @@ static void tswap_siginfo(target_siginfo_t *tinfo,
sig == SIGBUS || sig == SIGTRAP) {
tinfo->_sifields._sigfault._addr =
tswapl(info->_sifields._sigfault._addr);
+ } else if (sig == SIGIO) {
+ tinfo->_sifields._sigpoll._fd = tswap32(info->_sifields._sigpoll._fd);
} else if (sig >= TARGET_SIGRTMIN) {
tinfo->_sifields._rt._pid = tswap32(info->_sifields._rt._pid);
tinfo->_sifields._rt._uid = tswap32(info->_sifields._rt._uid);