commit cc36b5a5e2e8df6e633bb767df84ac1e61c56bc3
Author: Richard Braun <rbraun@sceen.net>
Date:   Tue Feb 26 22:24:42 2013 +0100

    Add the timespec_t Hurd type
    
    This type matches the standard struct timespec, and allows passing time
    values with nanosecond precision in RPCs.
    
    * hurd/hurd_types.defs (timespec_t): New MIG type.
    * hurd/hurd_types.h: Include <time.h>.
    (timespec_t): New C type, aliasing struct timespec.

diff --git a/hurd/hurd_types.defs b/hurd/hurd_types.defs
index 5ad5e93..4b32504 100644
--- a/hurd/hurd_types.defs
+++ b/hurd/hurd_types.defs
@@ -230,6 +230,8 @@ type rusage_t = struct[18] of int; /* XXX */
 
 type flock_t = struct[5] of int;
 
+type timespec_t = struct[2] of int;
+
 #define _SYS_UTSNAME_H		/* Inhibit warning from <bits/utsname.h>.  */
 #include <bits/utsname.h>
 type utsname_t = struct[5 * _UTSNAME_LENGTH] of char;
diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h
index e1a644f..7d1bb73 100644
--- a/hurd/hurd_types.h
+++ b/hurd/hurd_types.h
@@ -20,6 +20,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #ifndef _HURD_TYPES_H
 #define _HURD_TYPES_H
 
+#include <time.h>		/* For struct timespec.  */
 #include <mach/std_types.h>	/* For mach_port_t et al. */
 #include <mach/message.h>	/* For mach_msg_id_t et al. */
 #include <sys/types.h>		/* For pid_t and uid_t.  */
@@ -69,6 +70,7 @@ typedef struct statfs fsys_statfsbuf_t;
 typedef struct stat64 io_statbuf_t;
 typedef struct statfs64 fsys_statfsbuf_t;
 #endif
+typedef struct timespec timespec_t;
 
 
 /*   Parameters and flags in RPC calls   */


commit 8cd75c4d6b229bb4e3de9264466731e3a32e0133
Author: Richard Braun <rbraun@sceen.net>
Date:   Tue Feb 26 22:24:47 2013 +0100

    Add io_select_timeout to the io interface
    
    * hurd/io.defs (io_select_timeout): New MIG routine.
    * hurd/io_reply.defs (io_select_timeout_reply): New MIG simpleroutine.
    * hurd/io_request.defs (io_select_timeout_request): Likewise.

diff --git a/hurd/io.defs b/hurd/io.defs
index 9119b05..ba0b807 100644
--- a/hurd/io.defs
+++ b/hurd/io.defs
@@ -320,3 +320,14 @@ routine io_identity (
    on the specified object.  */
 routine io_revoke (
 	io_object: io_t RPTLAST);
+
+/* INTR */
+routine io_select_timeout (
+	io_object: io_t;
+#if defined (REPLY_PORTS) || defined (IO_SELECT_REPLY_PORT)
+	replyport reply: sreply_port_t;
+#else
+	ureplyport reply: mach_port_make_send_t;
+#endif
+	timeout: timespec_t;
+	inout select_type: int);
diff --git a/hurd/io_reply.defs b/hurd/io_reply.defs
index ffc4e75..eee6824 100644
--- a/hurd/io_reply.defs
+++ b/hurd/io_reply.defs
@@ -175,3 +175,8 @@ simpleroutine io_identity_reply (
 simpleroutine io_revoke_reply (
 	reply: reply_port_t;
 	RETURN_CODE_ARG);
+
+simpleroutine io_select_timeout_reply (
+	reply: reply_port_t;
+	RETURN_CODE_ARG;
+	select_result: int);
diff --git a/hurd/io_request.defs b/hurd/io_request.defs
index a3e775a..0d5e36d 100644
--- a/hurd/io_request.defs
+++ b/hurd/io_request.defs
@@ -172,3 +172,9 @@ simpleroutine io_identity_request (
 simpleroutine io_revoke_request (
 		io_object: io_t;
 		reply: reply_port_t);
+
+simpleroutine io_select_timeout_request (
+		io_object: io_t;
+		ureplyport reply: mach_port_make_send_t;
+		timeout: timespec_t;
+		select_type: int);
