diff options
author | Michael Brown <mcb30@etherboot.org> | 2009-08-10 01:09:41 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2009-08-10 19:27:24 +0100 |
commit | 04878ef74512df49803d1119c72c49cd8f1bfe10 (patch) | |
tree | add5a2af82095b9f731c90652e1f6d2b72a629f3 /src/core | |
parent | 46073f12391e5a467fbf5d5853ea91333fcce843 (diff) | |
download | ipxe-04878ef74512df49803d1119c72c49cd8f1bfe10.tar.gz |
[process] Make it safe to call process_add() multiple times
Diffstat (limited to 'src/core')
-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 6dacd6652..9c13e0204 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 ); + } } /** |