Added abs_time_t structure to the server protocol, and added a dump
routine for it that displays the relative timeout to make timeout
values easier to interpret.
diff --git a/server/thread.c b/server/thread.c
index 0db0ada..ad310c9 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -373,7 +373,7 @@
}
/* build the thread wait structure */
-static int wait_on( int count, struct object *objects[], int flags, int sec, int usec )
+static int wait_on( int count, struct object *objects[], int flags, const abs_time_t *timeout )
{
struct thread_wait *wait;
struct wait_queue_entry *entry;
@@ -388,8 +388,8 @@
current->wait = wait;
if (flags & SELECT_TIMEOUT)
{
- wait->timeout.tv_sec = sec;
- wait->timeout.tv_usec = usec;
+ wait->timeout.tv_sec = timeout->sec;
+ wait->timeout.tv_usec = timeout->usec;
}
for (i = 0, entry = wait->queues; i < count; i++, entry++)
@@ -518,7 +518,7 @@
/* select on a list of handles */
static void select_on( int count, void *cookie, const obj_handle_t *handles,
- int flags, int sec, int usec )
+ int flags, const abs_time_t *timeout )
{
int ret, i;
struct object *objects[MAXIMUM_WAIT_OBJECTS];
@@ -535,7 +535,7 @@
}
if (i < count) goto done;
- if (!wait_on( count, objects, flags, sec, usec )) goto done;
+ if (!wait_on( count, objects, flags, timeout )) goto done;
if ((ret = check_wait( current )) != -1)
{
@@ -963,7 +963,7 @@
DECL_HANDLER(select)
{
int count = get_req_data_size() / sizeof(int);
- select_on( count, req->cookie, get_req_data(), req->flags, req->sec, req->usec );
+ select_on( count, req->cookie, get_req_data(), req->flags, &req->timeout );
}
/* queue an APC for a thread */