]>
git.ipfire.org Git - people/ms/systemd.git/blob - job.c
87bcd289d98eafc8185fcbc2f194172eb431acf2
1 /*-*- Mode: C; c-basic-offset: 8 -*-*/
8 Job
* job_new(Manager
*m
, JobType type
, Name
*name
) {
12 assert(type
< _JOB_TYPE_MAX
);
15 if (!(j
= new0(Job
, 1)))
19 j
->id
= m
->current_job_id
++;
23 /* We don't link it here, that's what job_link() is for */
28 int job_link(Job
*j
) {
34 if ((r
= hashmap_put(j
->manager
->jobs
, UINT32_TO_PTR(j
->id
), j
)) < 0)
37 j
->name
->meta
.job
= j
;
44 void job_free(Job
*j
) {
47 /* Detach from next 'bigger' objects */
51 assert(j
->name
->meta
.job
== j
);
52 j
->name
->meta
.job
= NULL
;
54 hashmap_remove(j
->manager
->jobs
, UINT32_TO_PTR(j
->id
));
57 hashmap_remove(j
->manager
->jobs_to_add
, j
->name
);
58 set_remove(j
->manager
->jobs_to_remove
, j
);
60 /* Free data and next 'smaller' objects */
64 void job_dump(Job
*j
, FILE*f
) {
66 static const char* const job_type_table
[_JOB_TYPE_MAX
] = {
67 [JOB_START
] = "START",
69 [JOB_VERIFY_STARTED
] = "VERIFY_STARTED",
70 [JOB_RELOAD
] = "RELOAD",
71 [JOB_RESTART
] = "RESTART",
72 [JOB_TRY_RESTART
] = "TRY_RESTART",
73 [JOB_RESTART_FINISH
] = "RESTART_FINISH"
76 static const char* const job_state_table
[_JOB_STATE_MAX
] = {
77 [JOB_WAITING
] = "WAITING",
78 [JOB_RUNNING
] = "RUNNING",
85 fprintf(f
, "Job %u: %s → %s in state %s\n",
88 job_type_table
[j
->type
],
89 job_state_table
[j
->state
]);