X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Funit.h;h=cfb38d0aae751e79eae95e685a8bfbd68c18fc68;hb=d081dffbd3e57dc9da494a3384e333bf565d4175;hp=756f465da339fe7310044da24d712ed4dbcb00c5;hpb=b30e2f4c18ad81b04e4314fd191a5d458553773c;p=elogind.git diff --git a/src/core/unit.h b/src/core/unit.h index 756f465da..cfb38d0aa 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -9,16 +9,16 @@ Copyright 2010 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -32,6 +32,7 @@ typedef enum UnitLoadState UnitLoadState; typedef enum UnitActiveState UnitActiveState; typedef enum UnitDependency UnitDependency; typedef struct UnitRef UnitRef; +typedef struct UnitStatusMessageFormats UnitStatusMessageFormats; #include "set.h" #include "util.h" @@ -153,15 +154,22 @@ struct Unit { Set *names; Set *dependencies[_UNIT_DEPENDENCY_MAX]; + char **requires_mounts_for; + char *description; + char **documentation; char *fragment_path; /* if loaded from a config file this is the primary path to it */ + char *source_path; /* if converted, the source file */ usec_t fragment_mtime; + usec_t source_mtime; - /* If there is something to do with this unit, then this is - * the job for it */ + /* If there is something to do with this unit, then this is the installed job for it */ Job *job; + /* JOB_NOP jobs are special and can be installed without disturbing the real job. */ + Job *nop_job; + usec_t job_timeout; /* References to this */ @@ -184,6 +192,9 @@ struct Unit { /* Per type list */ LIST_FIELDS(Unit, units_by_type); + /* All units which have requires_mounts_for set */ + LIST_FIELDS(Unit, has_requires_mounts_for); + /* Load queue */ LIST_FIELDS(Unit, load_queue); @@ -200,7 +211,9 @@ struct Unit { unsigned gc_marker; /* When deserializing, temporarily store the job type for this - * unit here, if there was a job scheduled */ + * unit here, if there was a job scheduled. + * Only for deserializing from a legacy version. New style uses full + * serialized jobs. */ int deserialized_job; /* This is actually of type JobType */ /* Error code when we didn't manage to load the unit (negative) */ @@ -257,6 +270,12 @@ struct UnitRef { LIST_FIELDS(UnitRef, refs); }; +struct UnitStatusMessageFormats { + const char *starting_stopping[2]; + const char *finished_start_job[_JOB_RESULT_MAX]; + const char *finished_stop_job[_JOB_RESULT_MAX]; +}; + #include "service.h" #include "timer.h" #include "socket.h" @@ -336,9 +355,6 @@ struct UnitVTable { void (*sigchld_event)(Unit *u, pid_t pid, int code, int status); void (*timer_event)(Unit *u, uint64_t n_elapsed, Watch *w); - /* Check whether unit needs a daemon reload */ - bool (*need_daemon_reload)(Unit *u); - /* Reset failed state if we are in failed state */ void (*reset_failed)(Unit *u); @@ -383,6 +399,8 @@ struct UnitVTable { /* The interface name */ const char *bus_interface; + UnitStatusMessageFormats status_message_formats; + /* Can units of this type have multiple names? */ bool no_alias:1; @@ -391,9 +409,6 @@ struct UnitVTable { /* Exclude from automatic gc */ bool no_gc:1; - - /* Show status updates on the console */ - bool show_status:1; }; extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX]; @@ -550,6 +565,9 @@ void unit_ref_unset(UnitRef *ref); #define UNIT_DEREF(ref) ((ref).unit) +int unit_add_one_mount_link(Unit *u, Mount *m); +int unit_add_mount_links(Unit *u); + const char *unit_load_state_to_string(UnitLoadState i); UnitLoadState unit_load_state_from_string(const char *s);