]>
git.ipfire.org Git - thirdparty/systemd.git/blob - job.c
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 void job_free(Job
*j
) {
31 /* Detach from next 'bigger' objects */
34 if (j
->name
->meta
.job
== j
)
35 j
->name
->meta
.job
= NULL
;
37 hashmap_remove(j
->manager
->jobs
, UINT32_TO_PTR(j
->id
));
40 hashmap_remove(j
->manager
->jobs_to_add
, j
->name
);
41 set_remove(j
->manager
->jobs_to_remove
, j
);
43 /* Free data and next 'smaller' objects */
47 void job_dump(Job
*j
, FILE*f
) {
49 static const char* const job_type_table
[_JOB_TYPE_MAX
] = {
50 [JOB_START
] = "start",
52 [JOB_VERIFY_STARTED
] = "verify-started",
53 [JOB_RELOAD
] = "reload",
54 [JOB_RESTART
] = "restart",
55 [JOB_TRY_RESTART
] = "try-restart",
56 [JOB_RESTART_FINISH
] = "restart-finish"
59 static const char* const job_state_table
[_JOB_STATE_MAX
] = {
60 [JOB_WAITING
] = "waiting",
61 [JOB_RUNNING
] = "running",
68 fprintf(f
, "Job %u (%s) → %s in state %s\n",
71 job_type_table
[j
->type
],
72 job_state_table
[j
->state
]);