core/manager: introduce manager_add_job_full() which takes extra TransactionAddFlags

No functional change. Preparation for later commits.
This commit is contained in:
Mike Yuan
2024-10-27 20:02:46 +01:00
parent 215ffd6c1f
commit d993ad6c6f
14 changed files with 75 additions and 50 deletions
+13 -8
View File
@@ -2,6 +2,7 @@
#pragma once
typedef struct Transaction Transaction;
typedef enum TransactionAddFlags TransactionAddFlags;
#include "hashmap.h"
#include "job.h"
@@ -10,14 +11,14 @@ typedef struct Transaction Transaction;
struct Transaction {
/* Jobs to be added */
Hashmap *jobs; /* Unit object => Job object list 1:1 */
Job *anchor_job; /* the job the user asked for */
Hashmap *jobs; /* Unit object => Job object list 1:1 */
Job *anchor_job; /* The job the user asked for */
bool irreversible;
};
Transaction *transaction_new(bool irreversible);
Transaction *transaction_free(Transaction *tr);
Transaction *transaction_abort_and_free(Transaction *tr);
Transaction* transaction_new(bool irreversible);
Transaction* transaction_free(Transaction *tr);
Transaction* transaction_abort_and_free(Transaction *tr);
DEFINE_TRIVIAL_CLEANUP_FUNC(Transaction*, transaction_abort_and_free);
typedef enum TransactionAddFlags {
@@ -31,13 +32,19 @@ typedef enum TransactionAddFlags {
/* Indicate that we're in the recursion for processing UNIT_ATOM_PROPAGATE_STOP_GRACEFUL units */
TRANSACTION_PROCESS_PROPAGATE_STOP_GRACEFUL = 1 << 5,
_TRANSACTION_FLAGS_MASK_PUBLIC = 0,
} TransactionAddFlags;
void transaction_add_propagate_reload_jobs(
Transaction *tr,
Unit *unit, Job *by,
Unit *unit,
Job *by,
TransactionAddFlags flags);
int transaction_add_isolate_jobs(Transaction *tr, Manager *m);
int transaction_add_triggering_jobs(Transaction *tr, Unit *u);
int transaction_add_job_and_dependencies(
Transaction *tr,
JobType type,
@@ -47,5 +54,3 @@ int transaction_add_job_and_dependencies(
sd_bus_error *e);
int transaction_activate(Transaction *tr, Manager *m, JobMode mode, Set *affected, sd_bus_error *e);
int transaction_add_isolate_jobs(Transaction *tr, Manager *m);
int transaction_add_triggering_jobs(Transaction *tr, Unit *u);