diff mbox

[27/34] linux-user: pause() should not pause if signal pending

Message ID 1441497448-32489-28-git-send-email-T.E.Baldwin99@members.leeds.ac.uk
State New
Headers show

Commit Message

Timothy Baldwin Sept. 5, 2015, 11:57 p.m. UTC
Signed-off-by: Timothy Edward Baldwin <T.E.Baldwin99@members.leeds.ac.uk>
---
 linux-user/syscall.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Peter Maydell Sept. 11, 2015, 2:36 p.m. UTC | #1
On 6 September 2015 at 00:57, Timothy E Baldwin
<T.E.Baldwin99@members.leeds.ac.uk> wrote:
> Signed-off-by: Timothy Edward Baldwin <T.E.Baldwin99@members.leeds.ac.uk>
> ---
>  linux-user/syscall.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index da6d140..f89b730 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6106,7 +6106,10 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
>  #endif
>  #ifdef TARGET_NR_pause /* not on alpha */
>      case TARGET_NR_pause:
> -        ret = get_errno(pause());
> +        if (!block_signals()) {
> +            sigsuspend(&((TaskState *)cpu->opaque)->signal_mask);
> +        }
> +        ret = -TARGET_EINTR;
>          break;
>  #endif
>  #ifdef TARGET_NR_utime
> --
> 2.1.4

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM
diff mbox

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index da6d140..f89b730 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6106,7 +6106,10 @@  abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 #endif
 #ifdef TARGET_NR_pause /* not on alpha */
     case TARGET_NR_pause:
-        ret = get_errno(pause());
+        if (!block_signals()) {
+            sigsuspend(&((TaskState *)cpu->opaque)->signal_mask);
+        }
+        ret = -TARGET_EINTR;
         break;
 #endif
 #ifdef TARGET_NR_utime