libc: Add missing waitid() implementation.

Change-Id: I312ee608dbf9249e4886a10d45d13e3cda8a9042
diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h
index 5e9c2f0..a1905b3 100644
--- a/libc/include/sys/linux-unistd.h
+++ b/libc/include/sys/linux-unistd.h
@@ -9,7 +9,7 @@
 void             _exit_thread (int);
 pid_t            __fork (void);
 pid_t            _waitpid (pid_t, int*, int, struct rusage*);
-int              waitid (int, pid_t, struct siginfo_t*, int,void*);
+int              __waitid (int, pid_t, struct siginfo_t*, int,void*);
 pid_t            __sys_clone (int, void*, int*, void*, int*);
 int              execve (const char*, char* const*, char* const*);
 int              __setuid (uid_t);
diff --git a/libc/include/sys/wait.h b/libc/include/sys/wait.h
index 8ba1837..573e220 100644
--- a/libc/include/sys/wait.h
+++ b/libc/include/sys/wait.h
@@ -32,6 +32,7 @@
 #include <sys/types.h>
 #include <sys/resource.h>
 #include <linux/wait.h>
+#include <signal.h>
 
 __BEGIN_DECLS
 
@@ -49,6 +50,14 @@
 extern pid_t  wait3(int *, int, struct rusage *);
 extern pid_t  wait4(pid_t, int *, int, struct rusage *);
 
+/* Posix states that idtype_t should be an enumeration type, but
+ * the kernel headers define P_ALL, P_PID and P_PGID as constant macros
+ * instead.
+ */
+typedef int idtype_t;
+
+extern int  waidit(idtype_t which, id_t id, siginfo_t *info, int options);
+
 __END_DECLS
 
 #endif /* _SYS_WAIT_H_ */