Changes in uspace/lib/posix/sys/wait.c [eb1edb0:4cf8ca6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/sys/wait.c
reb1edb0 r4cf8ca6 39 39 #include "wait.h" 40 40 41 #include "../libc/task.h"42 #include "../assert.h"43 #include "../errno.h"44 #include "../limits.h"45 #include "../signal.h"46 47 int __posix_wifexited(int status) {48 return status != INT_MIN;49 }50 51 int __posix_wexitstatus(int status) {52 assert(__posix_wifexited(status));53 return status;54 }55 56 int __posix_wifsignaled(int status) {57 return status == INT_MIN;58 }59 60 int __posix_wtermsig(int status) {61 assert(__posix_wifsignaled(status));62 /* There is no way to distinguish reason63 * for unexpected termination at the moment.64 */65 return SIGABRT;66 }67 68 41 /** 69 42 * … … 73 46 posix_pid_t posix_wait(int *stat_ptr) 74 47 { 75 /* HelenOS does not support this. */ 76 errno = ENOSYS; 77 return (posix_pid_t) -1; 48 // TODO: low priority, just a compile-time dependency of binutils 49 not_implemented(); 78 50 } 79 51 … … 87 59 posix_pid_t posix_waitpid(posix_pid_t pid, int *stat_ptr, int options) 88 60 { 89 assert(stat_ptr != NULL); 90 assert(options == 0 /* None of the options are supported. */); 91 92 task_exit_t texit; 93 int retval; 94 95 int rc = task_wait((task_id_t) pid, &texit, &retval); 96 97 if (rc < 0) { 98 /* Unable to retrieve status. */ 99 errno = -rc; 100 return (posix_pid_t) -1; 101 } 102 103 if (texit == TASK_EXIT_NORMAL) { 104 // FIXME: relies on application not returning this value 105 assert(retval != INT_MIN); 106 *stat_ptr = retval; 107 } else { 108 /* Reserve the lowest value for unexpected termination. */ 109 *stat_ptr = INT_MIN; 110 } 111 112 return pid; 61 // TODO: low priority, just a compile-time dependency of binutils 62 not_implemented(); 113 63 } 114 64
Note:
See TracChangeset
for help on using the changeset viewer.