Module: wine Branch: refs/heads/master Commit: 3095a48d6f2010d224affb276c4749afe3014b05 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=3095a48d6f2010d224affb27...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jul 26 14:49:55 2006 +0200
server: Convert thread creation/exit times to the abs_time_t type.
---
dlls/ntdll/thread.c | 4 ++-- include/wine/server_protocol.h | 6 +++--- server/process.c | 1 + server/protocol.def | 4 ++-- server/thread.c | 13 ++++++++----- server/thread.h | 4 ++-- server/trace.c | 7 +++++-- 7 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 91dbcd8..dbcc5a6 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -1077,8 +1077,8 @@ NTSTATUS WINAPI NtQueryInformationThread status = wine_server_call( req ); if (status == STATUS_SUCCESS) { - RtlSecondsSince1970ToTime( reply->creation_time, &kusrt.CreateTime ); - RtlSecondsSince1970ToTime( reply->exit_time, &kusrt.ExitTime ); + NTDLL_from_server_abstime( &kusrt.CreateTime, &reply->creation_time ); + NTDLL_from_server_abstime( &kusrt.ExitTime, &reply->exit_time ); } } SERVER_END_REQ; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index a51572c..1c128e2 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -386,8 +386,8 @@ struct get_thread_info_reply int exit_code; int priority; int affinity; - time_t creation_time; - time_t exit_time; + abs_time_t creation_time; + abs_time_t exit_time; };
@@ -4385,6 +4385,6 @@ union generic_reply struct query_symlink_reply query_symlink_reply; };
-#define SERVER_PROTOCOL_VERSION 241 +#define SERVER_PROTOCOL_VERSION 242
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */ 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 @@ struct thread *create_process( int fd, s 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 @@ #define SET_PROCESS_INFO_AFFINITY 0x02 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 @@ inline static void init_thread_structure 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 @@ void kill_thread( struct thread *thread, { 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 @@ DECL_HANDLER(get_thread_info) 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 @@ struct thread 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 @@ static void dump_get_thread_info_reply( 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 )