* have no effect.
*/
void process_add ( struct process *process ) {
- if ( list_empty ( &process->list ) ) {
+ if ( ! process_running ( process ) ) {
DBGC ( process, "PROCESS %p starting\n", process );
ref_get ( process->refcnt );
list_add_tail ( &process->list, &run_queue );
* have no effect.
*/
void process_del ( struct process *process ) {
- if ( ! list_empty ( &process->list ) ) {
+ if ( process_running ( process ) ) {
DBGC ( process, "PROCESS %p stopping\n", process );
list_del ( &process->list );
INIT_LIST_HEAD ( &process->list );
process_add ( process );
}
+/**
+ * Check if process is running
+ *
+ * @v process Process
+ * @ret running Process is running
+ */
+static inline __attribute__ (( always_inline )) int
+process_running ( struct process *process ) {
+ return ( ! list_empty ( &process->list ) );
+}
+
/** Permanent process table */
#define PERMANENT_PROCESSES __table ( struct process, "processes" )