1 /* wait.c -- functions for getting wait status values.
3 Copyright 2011 The Go Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style
5 license that can be found in the LICENSE file.
7 We use C code to extract the wait status so that we can easily be
15 extern _Bool Exited (uint32_t *w)
16 __asm__ (GOSYM_PREFIX "syscall.Exited.N18_syscall.WaitStatus");
21 return WIFEXITED (*w) != 0;
24 extern _Bool Signaled (uint32_t *w)
25 __asm__ (GOSYM_PREFIX "syscall.Signaled.N18_syscall.WaitStatus");
28 Signaled (uint32_t *w)
30 return WIFSIGNALED (*w) != 0;
33 extern _Bool Stopped (uint32_t *w)
34 __asm__ (GOSYM_PREFIX "syscall.Stopped.N18_syscall.WaitStatus");
39 return WIFSTOPPED (*w) != 0;
42 extern _Bool Continued (uint32_t *w)
43 __asm__ (GOSYM_PREFIX "syscall.Continued.N18_syscall.WaitStatus");
46 Continued (uint32_t *w)
48 return WIFCONTINUED (*w) != 0;
51 extern _Bool CoreDump (uint32_t *w)
52 __asm__ (GOSYM_PREFIX "syscall.CoreDump.N18_syscall.WaitStatus");
55 CoreDump (uint32_t *w)
57 return WCOREDUMP (*w) != 0;
60 extern int ExitStatus (uint32_t *w)
61 __asm__ (GOSYM_PREFIX "syscall.ExitStatus.N18_syscall.WaitStatus");
64 ExitStatus (uint32_t *w)
68 return WEXITSTATUS (*w);
71 extern int Signal (uint32_t *w)
72 __asm__ (GOSYM_PREFIX "syscall.Signal.N18_syscall.WaitStatus");
77 if (!WIFSIGNALED (*w))
82 extern int StopSignal (uint32_t *w)
83 __asm__ (GOSYM_PREFIX "syscall.StopSignal.N18_syscall.WaitStatus");
86 StopSignal (uint32_t *w)
93 extern int TrapCause (uint32_t *w)
94 __asm__ (GOSYM_PREFIX "syscall.TrapCause.N18_syscall.WaitStatus");
97 TrapCause (uint32_t *w __attribute__ ((unused)))
102 if (!WIFSTOPPED (*w) || WSTOPSIG (*w) != SIGTRAP)