diff options
Diffstat (limited to 'source3/lib/time.c')
-rw-r--r-- | source3/lib/time.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/source3/lib/time.c b/source3/lib/time.c index f0f62ca841..975c58c7a5 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -129,10 +129,34 @@ static int get_serverzone(void) /* Re-read the smb serverzone value */ +static struct timeval start_time_hires; + void TimeInit(void) { - done_serverzone_init = False; - get_serverzone(); + done_serverzone_init = False; + get_serverzone(); + /* Save the start time of this process. */ + GetTimeOfDay(&start_time_hires); +} + +/********************************************************************** + Return a timeval struct of the uptime of this process. As TimeInit is + done before a daemon fork then this is the start time from the parent + daemon start. JRA. +***********************************************************************/ + +void get_process_uptime(struct timeval *ret_time) +{ + struct timeval time_now_hires; + + GetTimeOfDay(&time_now_hires); + ret_time->tv_sec = time_now_hires.tv_sec - start_time_hires.tv_sec; + ret_time->tv_usec = time_now_hires.tv_usec - start_time_hires.tv_usec; + if (time_now_hires.tv_usec < start_time_hires.tv_usec) { + ret_time->tv_sec -= 1; + ret_time->tv_usec = 1000000 + (time_now_hires.tv_usec - start_time_hires.tv_usec); + } else + ret_time->tv_usec = time_now_hires.tv_usec - start_time_hires.tv_usec; } /******************************************************************* |