]>
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 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 */