From dacb429a7158b181321ca3686fe8a1aa1162f2a4 Mon Sep 17 00:00:00 2001 From: "Denis V. Lunev" Date: Tue, 20 May 2008 15:12:44 -0700 Subject: [PATCH] --- yaml --- r: 97101 b: refs/heads/master c: d3ede327e83f202c3a0962e207318f65717c5eb7 h: refs/heads/master i: 97099: 949790dd5593b298443865d83f3b0b0d8993e69e v: v3 --- [refs] | 2 +- trunk/net/core/pktgen.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a5d6f301894f..8107ce4f3ce4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5fb13570543f4ae022996c9d7c0c099c8abf22dd +refs/heads/master: d3ede327e83f202c3a0962e207318f65717c5eb7 diff --git a/trunk/net/core/pktgen.c b/trunk/net/core/pktgen.c index 8dca21110493..fdf537707e51 100644 --- a/trunk/net/core/pktgen.c +++ b/trunk/net/core/pktgen.c @@ -390,6 +390,7 @@ struct pktgen_thread { int cpu; wait_queue_head_t queue; + struct completion start_done; }; #define REMOVE 1 @@ -3414,6 +3415,7 @@ static int pktgen_thread_worker(void *arg) BUG_ON(smp_processor_id() != cpu); init_waitqueue_head(&t->queue); + complete(&t->start_done); pr_debug("pktgen: starting pktgen/%d: pid=%d\n", cpu, task_pid_nr(current)); @@ -3615,6 +3617,7 @@ static int __init pktgen_create_thread(int cpu) INIT_LIST_HEAD(&t->if_list); list_add_tail(&t->th_list, &pktgen_threads); + init_completion(&t->start_done); p = kthread_create(pktgen_thread_worker, t, "kpktgend_%d", cpu); if (IS_ERR(p)) { @@ -3639,6 +3642,7 @@ static int __init pktgen_create_thread(int cpu) } wake_up_process(p); + wait_for_completion(&t->start_done); return 0; }