From 593fbdd21e52c8c0ac249c5b6163761005af8463 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 6 Apr 2010 02:39:16 +0200 Subject: [PATCH] job: define job_type_is_redundant() to idenity unnecessary jobs --- job.c | 39 +++++++++++++++++++++++++++++++++++++++ job.h | 1 + 2 files changed, 40 insertions(+) diff --git a/job.c b/job.c index e2354af3..c4d2e7a1 100644 --- a/job.c +++ b/job.c @@ -265,6 +265,45 @@ bool job_type_is_conflicting(JobType a, JobType b) { return (a == JOB_STOP) != (b == JOB_STOP); } +bool job_type_is_redundant(JobType a, UnitActiveState b) { + switch (a) { + + case JOB_START: + return + b == UNIT_ACTIVE || + b == UNIT_ACTIVE_RELOADING; + + case JOB_STOP: + return + b == UNIT_INACTIVE; + + case JOB_VERIFY_ACTIVE: + return + b == UNIT_ACTIVE || + b == UNIT_ACTIVE_RELOADING; + + case JOB_RELOAD: + return + b == UNIT_ACTIVE_RELOADING; + + case JOB_RELOAD_OR_START: + return + b == UNIT_ACTIVATING || + b == UNIT_ACTIVE_RELOADING; + + case JOB_RESTART: + return + b == UNIT_ACTIVATING; + + case JOB_TRY_RESTART: + return + b == UNIT_ACTIVATING; + + default: + assert_not_reached("Invalid job type"); + } +} + bool job_is_runnable(Job *j) { Iterator i; Unit *other; diff --git a/job.h b/job.h index bfe20339..5bea2948 100644 --- a/job.h +++ b/job.h @@ -126,6 +126,7 @@ int job_type_merge(JobType *a, JobType b); bool job_type_is_mergeable(JobType a, JobType b); bool job_type_is_superset(JobType a, JobType b); bool job_type_is_conflicting(JobType a, JobType b); +bool job_type_is_redundant(JobType a, UnitActiveState b); bool job_is_runnable(Job *j); -- 2.39.5