summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/thread.c11
-rw-r--r--lib/thread.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/lib/thread.c b/lib/thread.c
index dd0413b3..784b29c6 100644
--- a/lib/thread.c
+++ b/lib/thread.c
@@ -1146,7 +1146,7 @@ int
thread_should_yield (struct thread *thread)
{
quagga_get_relative (NULL);
- return (timeval_elapsed(relative_time, thread->ru.real) >
+ return (timeval_elapsed(relative_time, thread->real) >
THREAD_YIELD_TIME_SLOT);
}
@@ -1175,7 +1175,7 @@ void
thread_call (struct thread *thread)
{
unsigned long realtime, cputime;
- RUSAGE_T ru;
+ RUSAGE_T before, after;
/* Cache a pointer to the relevant cpu history thread, if the thread
* does not have it yet.
@@ -1194,13 +1194,14 @@ thread_call (struct thread *thread)
(void * (*) (void *))cpu_record_hash_alloc);
}
- GETRUSAGE (&thread->ru);
+ GETRUSAGE (&before);
+ thread->real = before.real;
(*thread->func) (thread);
- GETRUSAGE (&ru);
+ GETRUSAGE (&after);
- realtime = thread_consumed_time (&ru, &thread->ru, &cputime);
+ realtime = thread_consumed_time (&after, &before, &cputime);
thread->hist->real.total += realtime;
if (thread->hist->real.max < realtime)
thread->hist->real.max = realtime;
diff --git a/lib/thread.h b/lib/thread.h
index dfc51e28..56f4d073 100644
--- a/lib/thread.h
+++ b/lib/thread.h
@@ -77,7 +77,7 @@ struct thread
int fd; /* file descriptor in case of read/write. */
struct timeval sands; /* rest of time sands value. */
} u;
- RUSAGE_T ru; /* Indepth usage info. */
+ struct timeval real;
struct cpu_thread_history *hist; /* cache pointer to cpu_history */
char* funcname;
};