[Xenomai-git] Jan Kiszka : cobalt/posix: Move signal_put_siginfo unmodified
Module: xenomai-jki Branch: for-forge Commit: dc6b6eef9d9374c8fec5ddd2e33556dbe8663492 URL: http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=dc6b6eef9d9374c8fec5ddd2e33556dbe8663492 Author: Jan Kiszka Date: Tue Mar 7 17:32:46 2017 +0100 cobalt/posix: Move signal_put_siginfo unmodified We will need it inside signal_wait. No functional changes. Signed-off-by: Jan Kiszka --- kernel/cobalt/posix/signal.c | 72 +- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/kernel/cobalt/posix/signal.c b/kernel/cobalt/posix/signal.c index 416d3e4..0281cb5 100644 --- a/kernel/cobalt/posix/signal.c +++ b/kernel/cobalt/posix/signal.c @@ -201,6 +201,42 @@ void cobalt_signal_flush(struct cobalt_thread *thread) sigemptyset(&thread->sigpending); } +static int signal_put_siginfo(void __user *u_si, const struct siginfo *si, + int overrun) +{ + struct siginfo __user *u_p = u_si; + int code, ret; + + /* Translate kernel codes for userland. */ + code = si->si_code; + if (code & __SI_MASK) + code |= __SI_MASK; + + ret = __xn_put_user(si->si_signo, &u_p->si_signo); + ret |= __xn_put_user(si->si_errno, &u_p->si_errno); + ret |= __xn_put_user(code, &u_p->si_code); + + /* +* Copy the generic/standard siginfo bits to userland. +*/ + switch (si->si_code) { + case SI_TIMER: + ret |= __xn_put_user(si->si_tid, &u_p->si_tid); + ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); + ret |= __xn_put_user(overrun, &u_p->si_overrun); + break; + case SI_QUEUE: + case SI_MESGQ: + ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); + /* falldown wanted. */ + case SI_USER: + ret |= __xn_put_user(si->si_pid, &u_p->si_pid); + ret |= __xn_put_user(si->si_uid, &u_p->si_uid); + } + + return ret; +} + static int signal_wait(sigset_t *set, xnticks_t timeout, void __user *u_si, int (*put_siginfo)(void __user *u_si, @@ -335,42 +371,6 @@ fail: return ret; } -static int signal_put_siginfo(void __user *u_si, const struct siginfo *si, - int overrun) -{ - struct siginfo __user *u_p = u_si; - int code, ret; - - /* Translate kernel codes for userland. */ - code = si->si_code; - if (code & __SI_MASK) - code |= __SI_MASK; - - ret = __xn_put_user(si->si_signo, &u_p->si_signo); - ret |= __xn_put_user(si->si_errno, &u_p->si_errno); - ret |= __xn_put_user(code, &u_p->si_code); - - /* -* Copy the generic/standard siginfo bits to userland. -*/ - switch (si->si_code) { - case SI_TIMER: - ret |= __xn_put_user(si->si_tid, &u_p->si_tid); - ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); - ret |= __xn_put_user(overrun, &u_p->si_overrun); - break; - case SI_QUEUE: - case SI_MESGQ: - ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); - /* falldown wanted. */ - case SI_USER: - ret |= __xn_put_user(si->si_pid, &u_p->si_pid); - ret |= __xn_put_user(si->si_uid, &u_p->si_uid); - } - - return ret; -} - int __cobalt_sigwait(sigset_t *set) { return signal_wait(set, XN_INFINITE, NULL, NULL); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Jan Kiszka : cobalt/posix: Move signal_put_siginfo unmodified
Module: xenomai-jki Branch: for-forge Commit: d1d45d106cd0b15df4f3a45284f8a71e7ae64d7c URL: http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=d1d45d106cd0b15df4f3a45284f8a71e7ae64d7c Author: Jan Kiszka Date: Tue Mar 7 17:32:46 2017 +0100 cobalt/posix: Move signal_put_siginfo unmodified We will need it inside signal_wait. No functional changes. Signed-off-by: Jan Kiszka --- kernel/cobalt/posix/signal.c | 72 +- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/kernel/cobalt/posix/signal.c b/kernel/cobalt/posix/signal.c index 416d3e4..0281cb5 100644 --- a/kernel/cobalt/posix/signal.c +++ b/kernel/cobalt/posix/signal.c @@ -201,6 +201,42 @@ void cobalt_signal_flush(struct cobalt_thread *thread) sigemptyset(&thread->sigpending); } +static int signal_put_siginfo(void __user *u_si, const struct siginfo *si, + int overrun) +{ + struct siginfo __user *u_p = u_si; + int code, ret; + + /* Translate kernel codes for userland. */ + code = si->si_code; + if (code & __SI_MASK) + code |= __SI_MASK; + + ret = __xn_put_user(si->si_signo, &u_p->si_signo); + ret |= __xn_put_user(si->si_errno, &u_p->si_errno); + ret |= __xn_put_user(code, &u_p->si_code); + + /* +* Copy the generic/standard siginfo bits to userland. +*/ + switch (si->si_code) { + case SI_TIMER: + ret |= __xn_put_user(si->si_tid, &u_p->si_tid); + ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); + ret |= __xn_put_user(overrun, &u_p->si_overrun); + break; + case SI_QUEUE: + case SI_MESGQ: + ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); + /* falldown wanted. */ + case SI_USER: + ret |= __xn_put_user(si->si_pid, &u_p->si_pid); + ret |= __xn_put_user(si->si_uid, &u_p->si_uid); + } + + return ret; +} + static int signal_wait(sigset_t *set, xnticks_t timeout, void __user *u_si, int (*put_siginfo)(void __user *u_si, @@ -335,42 +371,6 @@ fail: return ret; } -static int signal_put_siginfo(void __user *u_si, const struct siginfo *si, - int overrun) -{ - struct siginfo __user *u_p = u_si; - int code, ret; - - /* Translate kernel codes for userland. */ - code = si->si_code; - if (code & __SI_MASK) - code |= __SI_MASK; - - ret = __xn_put_user(si->si_signo, &u_p->si_signo); - ret |= __xn_put_user(si->si_errno, &u_p->si_errno); - ret |= __xn_put_user(code, &u_p->si_code); - - /* -* Copy the generic/standard siginfo bits to userland. -*/ - switch (si->si_code) { - case SI_TIMER: - ret |= __xn_put_user(si->si_tid, &u_p->si_tid); - ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); - ret |= __xn_put_user(overrun, &u_p->si_overrun); - break; - case SI_QUEUE: - case SI_MESGQ: - ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr); - /* falldown wanted. */ - case SI_USER: - ret |= __xn_put_user(si->si_pid, &u_p->si_pid); - ret |= __xn_put_user(si->si_uid, &u_p->si_uid); - } - - return ret; -} - int __cobalt_sigwait(sigset_t *set) { return signal_wait(set, XN_INFINITE, NULL, NULL); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git