Index: uspace/lib/libc/generic/task.c
===================================================================
--- uspace/lib/libc/generic/task.c	(revision 5d96851b8924322db82eed0dc7032e7f6817c983)
+++ uspace/lib/libc/generic/task.c	(revision 1f0db02ed7ebf939ec0b8381625ef3129d3539df)
@@ -149,11 +149,12 @@
 }
 
-int task_wait(task_id_t id, int *retval)
+int task_wait(task_id_t id, task_exit_t *texit, int *retval)
 {
-	ipcarg_t rv;
+	ipcarg_t te, rv;
 	int rc;
 
-	rc = (int) async_req_2_1(PHONE_NS, NS_TASK_WAIT, LOWER32(id),
-	    UPPER32(id), &rv);
+	rc = (int) async_req_2_2(PHONE_NS, NS_TASK_WAIT, LOWER32(id),
+	    UPPER32(id), &te, &rv);
+	*texit = te;
 	*retval = rv;
 
Index: uspace/lib/libc/include/task.h
===================================================================
--- uspace/lib/libc/include/task.h	(revision 5d96851b8924322db82eed0dc7032e7f6817c983)
+++ uspace/lib/libc/include/task.h	(revision 1f0db02ed7ebf939ec0b8381625ef3129d3539df)
@@ -40,8 +40,13 @@
 typedef uint64_t task_id_t;
 
+typedef enum {
+	TASK_EXIT_NORMAL,
+	TASK_EXIT_UNEXPECTED
+} task_exit_t;
+
 extern task_id_t task_get_id(void);
 extern int task_set_name(const char *name);
 extern task_id_t task_spawn(const char *path, char *const argv[]);
-extern int task_wait(task_id_t id, int *retval);
+extern int task_wait(task_id_t id, task_exit_t *texit, int *retval);
 extern int task_retval(int val);
 
