Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
i=liangzhen
[fs/lustre-release.git]
/
lnet
/
selftest
/
timer.c
diff --git
a/lnet/selftest/timer.c
b/lnet/selftest/timer.c
index
97d9297
..
388cd8a
100644
(file)
--- a/
lnet/selftest/timer.c
+++ b/
lnet/selftest/timer.c
@@
-36,6
+36,7
@@
struct st_timer_data {
struct list_head stt_hash[STTIMER_NSLOTS];
int stt_shuttingdown;
#ifdef __KERNEL__
struct list_head stt_hash[STTIMER_NSLOTS];
int stt_shuttingdown;
#ifdef __KERNEL__
+ cfs_waitq_t stt_waitq;
int stt_nthreads;
#endif
} stt_data;
int stt_nthreads;
#endif
} stt_data;
@@
-157,9
+158,9
@@
stt_timer_main (void *arg)
while (!stt_data.stt_shuttingdown) {
stt_check_timers(&stt_data.stt_prev_slot);
while (!stt_data.stt_shuttingdown) {
stt_check_timers(&stt_data.stt_prev_slot);
- set_current_state(CFS_TASK_INTERRUPTIBLE);
-
cfs_schedule_timeout(CFS_TASK_INTERRUPTIBLE
,
-
cfs_time_seconds(STTIMER_SLOTTIME));
+ wait_event_timeout(stt_data.stt_waitq,
+
stt_data.stt_shuttingdown
,
+ cfs_time_seconds(STTIMER_SLOTTIME));
}
spin_lock(&stt_data.stt_lock);
}
spin_lock(&stt_data.stt_lock);
@@
-216,9
+217,10
@@
stt_startup (void)
#ifdef __KERNEL__
stt_data.stt_nthreads = 0;
#ifdef __KERNEL__
stt_data.stt_nthreads = 0;
+ cfs_waitq_init(&stt_data.stt_waitq);
rc = stt_start_timer_thread();
if (rc != 0)
rc = stt_start_timer_thread();
if (rc != 0)
- CERROR ("Can't spawn timer
, stt_startup() has faile
d: %d\n", rc);
+ CERROR ("Can't spawn timer
threa
d: %d\n", rc);
#endif
return rc;
#endif
return rc;
@@
-237,6
+239,7
@@
stt_shutdown (void)
stt_data.stt_shuttingdown = 1;
#ifdef __KERNEL__
stt_data.stt_shuttingdown = 1;
#ifdef __KERNEL__
+ cfs_waitq_signal(&stt_data.stt_waitq);
lst_wait_until(stt_data.stt_nthreads == 0, stt_data.stt_lock,
"waiting for %d threads to terminate\n",
stt_data.stt_nthreads);
lst_wait_until(stt_data.stt_nthreads == 0, stt_data.stt_lock,
"waiting for %d threads to terminate\n",
stt_data.stt_nthreads);