server: Convert thread creation/exit times to the abs_time_t type.
diff --git a/server/process.c b/server/process.c
index 853700f..3e5ef97 100644
--- a/server/process.c
+++ b/server/process.c
@@ -256,6 +256,7 @@
list_init( &process->dlls );
gettimeofday( &process->start_time, NULL );
+ process->end_time.tv_sec = process->end_time.tv_usec = 0;
list_add_head( &process_list, &process->entry );
if (!(process->id = process->group_id = alloc_ptid( process )))
diff --git a/server/protocol.def b/server/protocol.def
index 7fd045a..6910ed4 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -345,8 +345,8 @@
int exit_code; /* thread exit code */
int priority; /* thread priority level */
int affinity; /* thread affinity mask */
- time_t creation_time; /* thread creation time */
- time_t exit_time; /* thread exit time */
+ abs_time_t creation_time; /* thread creation time */
+ abs_time_t exit_time; /* thread exit time */
@END
diff --git a/server/thread.c b/server/thread.c
index 36b7309..23508d3 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -144,11 +144,12 @@
thread->priority = THREAD_PRIORITY_NORMAL;
thread->affinity = 1;
thread->suspend = 0;
- thread->creation_time = time(NULL);
- thread->exit_time = 0;
thread->desktop_users = 0;
thread->token = NULL;
+ gettimeofday( &thread->creation_time, NULL );
+ thread->exit_time.tv_sec = thread->exit_time.tv_usec = 0;
+
list_init( &thread->mutex_list );
list_init( &thread->system_apc );
list_init( &thread->user_apc );
@@ -737,7 +738,7 @@
{
if (thread->state == TERMINATED) return; /* already killed */
thread->state = TERMINATED;
- thread->exit_time = time(NULL);
+ gettimeofday( &thread->exit_time, NULL );
if (current == thread) current = NULL;
if (debug_level)
fprintf( stderr,"%04x: *killed* exit_code=%d\n",
@@ -946,8 +947,10 @@
reply->exit_code = (thread->state == TERMINATED) ? thread->exit_code : STILL_ACTIVE;
reply->priority = thread->priority;
reply->affinity = thread->affinity;
- reply->creation_time = thread->creation_time;
- reply->exit_time = thread->exit_time;
+ reply->creation_time.sec = thread->creation_time.tv_sec;
+ reply->creation_time.usec = thread->creation_time.tv_usec;
+ reply->exit_time.sec = thread->exit_time.tv_sec;
+ reply->exit_time.usec = thread->exit_time.tv_usec;
release_object( thread );
}
diff --git a/server/thread.h b/server/thread.h
index fdc69d4..61911cd 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -84,8 +84,8 @@
int suspend; /* suspend count */
obj_handle_t desktop; /* desktop handle */
int desktop_users; /* number of objects using the thread desktop */
- time_t creation_time; /* Thread creation time */
- time_t exit_time; /* Thread exit time */
+ struct timeval creation_time; /* Thread creation time */
+ struct timeval exit_time; /* Thread exit time */
struct token *token; /* security token associated with this thread */
};
diff --git a/server/trace.c b/server/trace.c
index 0fe3a67..ee3db8b 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -766,8 +766,11 @@
fprintf( stderr, " exit_code=%d,", req->exit_code );
fprintf( stderr, " priority=%d,", req->priority );
fprintf( stderr, " affinity=%d,", req->affinity );
- fprintf( stderr, " creation_time=%ld,", (long)req->creation_time );
- fprintf( stderr, " exit_time=%ld", (long)req->exit_time );
+ fprintf( stderr, " creation_time=" );
+ dump_abs_time( &req->creation_time );
+ fprintf( stderr, "," );
+ fprintf( stderr, " exit_time=" );
+ dump_abs_time( &req->exit_time );
}
static void dump_set_thread_info_request( const struct set_thread_info_request *req )