diff options
author | Michael Brown | 2009-08-10 02:09:41 +0200 |
---|---|---|
committer | Michael Brown | 2009-08-10 20:27:24 +0200 |
commit | 04878ef74512df49803d1119c72c49cd8f1bfe10 (patch) | |
tree | add5a2af82095b9f731c90652e1f6d2b72a629f3 /src/core/process.c | |
parent | [infiniband] Handle duplicate Communication Management REPs (diff) | |
download | ipxe-04878ef74512df49803d1119c72c49cd8f1bfe10.tar.gz ipxe-04878ef74512df49803d1119c72c49cd8f1bfe10.tar.xz ipxe-04878ef74512df49803d1119c72c49cd8f1bfe10.zip |
[process] Make it safe to call process_add() multiple times
Diffstat (limited to 'src/core/process.c')
-rw-r--r-- | src/core/process.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/core/process.c b/src/core/process.c index 6dacd665..9c13e020 100644 --- a/src/core/process.c +++ b/src/core/process.c @@ -37,11 +37,18 @@ static LIST_HEAD ( run_queue ); * Add process to process list * * @v process Process + * + * It is safe to call process_add() multiple times; further calls will + * have no effect. */ void process_add ( struct process *process ) { - DBGC ( process, "PROCESS %p starting\n", process ); - ref_get ( process->refcnt ); - list_add_tail ( &process->list, &run_queue ); + if ( list_empty ( &process->list ) ) { + DBGC ( process, "PROCESS %p starting\n", process ); + ref_get ( process->refcnt ); + list_add_tail ( &process->list, &run_queue ); + } else { + DBGC ( process, "PROCESS %p already started\n", process ); + } } /** |