automount.h | automount.h | |||
---|---|---|---|---|
skipping to change at line 39 | skipping to change at line 39 | |||
typedef enum AutomountState { | typedef enum AutomountState { | |||
AUTOMOUNT_DEAD, | AUTOMOUNT_DEAD, | |||
AUTOMOUNT_WAITING, | AUTOMOUNT_WAITING, | |||
AUTOMOUNT_RUNNING, | AUTOMOUNT_RUNNING, | |||
AUTOMOUNT_FAILED, | AUTOMOUNT_FAILED, | |||
_AUTOMOUNT_STATE_MAX, | _AUTOMOUNT_STATE_MAX, | |||
_AUTOMOUNT_STATE_INVALID = -1 | _AUTOMOUNT_STATE_INVALID = -1 | |||
} AutomountState; | } AutomountState; | |||
struct Automount { | struct Automount { | |||
Meta meta; | Unit meta; | |||
AutomountState state, deserialized_state; | AutomountState state, deserialized_state; | |||
char *where; | char *where; | |||
UnitRef mount; | UnitRef mount; | |||
int pipe_fd; | int pipe_fd; | |||
mode_t directory_mode; | mode_t directory_mode; | |||
Watch pipe_watch; | Watch pipe_watch; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
cgroup-show.h | cgroup-show.h | |||
---|---|---|---|---|
skipping to change at line 25 | skipping to change at line 25 | |||
systemd is distributed in the hope that it will be useful, but | systemd is distributed in the hope that it will be useful, but | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
int show_cgroup_by_path(const char *path, const char *prefix, unsigned colu | #include <stdbool.h> | |||
mns); | ||||
int show_cgroup(const char *controller, const char *path, const char *prefi | int show_cgroup_by_path(const char *path, const char *prefix, unsigned colu | |||
x, unsigned columns); | mns, bool kernel_threads); | |||
int show_cgroup(const char *controller, const char *path, const char *prefi | ||||
x, unsigned columns, bool kernel_threads); | ||||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
4 lines changed or deleted | 6 lines changed or added | |||
cgroup-util.h | cgroup-util.h | |||
---|---|---|---|---|
skipping to change at line 63 | skipping to change at line 63 | |||
int cg_trim(const char *controller, const char *path, bool delete_root); | int cg_trim(const char *controller, const char *path, bool delete_root); | |||
int cg_rmdir(const char *controller, const char *path, bool honour_sticky); | int cg_rmdir(const char *controller, const char *path, bool honour_sticky); | |||
int cg_delete(const char *controller, const char *path); | int cg_delete(const char *controller, const char *path); | |||
int cg_create(const char *controller, const char *path); | int cg_create(const char *controller, const char *path); | |||
int cg_attach(const char *controller, const char *path, pid_t pid); | int cg_attach(const char *controller, const char *path, pid_t pid); | |||
int cg_create_and_attach(const char *controller, const char *path, pid_t pi d); | int cg_create_and_attach(const char *controller, const char *path, pid_t pi d); | |||
int cg_set_group_access(const char *controller, const char *path, mode_t mo de, uid_t uid, gid_t gid); | int cg_set_group_access(const char *controller, const char *path, mode_t mo de, uid_t uid, gid_t gid); | |||
int cg_set_task_access(const char *controller, const char *path, mode_t mod e, uid_t uid, gid_t gid); | int cg_set_task_access(const char *controller, const char *path, mode_t mod e, uid_t uid, gid_t gid, int sticky); | |||
int cg_install_release_agent(const char *controller, const char *agent); | int cg_install_release_agent(const char *controller, const char *agent); | |||
int cg_is_empty(const char *controller, const char *path, bool ignore_self) ; | int cg_is_empty(const char *controller, const char *path, bool ignore_self) ; | |||
int cg_is_empty_recursive(const char *controller, const char *path, bool ig nore_self); | int cg_is_empty_recursive(const char *controller, const char *path, bool ig nore_self); | |||
int cg_get_user_path(char **path); | int cg_get_user_path(char **path); | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
cgroup.h | cgroup.h | |||
---|---|---|---|---|
skipping to change at line 56 | skipping to change at line 56 | |||
/* If we cannot create this group, or add a process to it, is this fatal? */ | /* If we cannot create this group, or add a process to it, is this fatal? */ | |||
bool essential:1; | bool essential:1; | |||
/* This cgroup is realized */ | /* This cgroup is realized */ | |||
bool realized:1; | bool realized:1; | |||
}; | }; | |||
int cgroup_bonding_realize(CGroupBonding *b); | int cgroup_bonding_realize(CGroupBonding *b); | |||
int cgroup_bonding_realize_list(CGroupBonding *first); | int cgroup_bonding_realize_list(CGroupBonding *first); | |||
void cgroup_bonding_free(CGroupBonding *b, bool remove_or_trim); | void cgroup_bonding_free(CGroupBonding *b, bool trim); | |||
void cgroup_bonding_free_list(CGroupBonding *first, bool remove_or_trim); | void cgroup_bonding_free_list(CGroupBonding *first, bool trim); | |||
int cgroup_bonding_install(CGroupBonding *b, pid_t pid); | int cgroup_bonding_install(CGroupBonding *b, pid_t pid); | |||
int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid); | int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid); | |||
int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t ui d, gid_t gid); | int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t ui d, gid_t gid); | |||
int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid _t uid, gid_t gid); | int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid _t uid, gid_t gid); | |||
int cgroup_bonding_set_task_access(CGroupBonding *b, mode_t mode, uid_t uid | int cgroup_bonding_set_task_access(CGroupBonding *b, mode_t mode, uid_t uid | |||
, gid_t gid); | , gid_t gid, int sticky); | |||
int cgroup_bonding_set_task_access_list(CGroupBonding *b, mode_t mode, uid_ | int cgroup_bonding_set_task_access_list(CGroupBonding *b, mode_t mode, uid_ | |||
t uid, gid_t gid); | t uid, gid_t gid, int sticky); | |||
int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s); | int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s); | |||
int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, S et *s); | int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, S et *s); | |||
void cgroup_bonding_trim(CGroupBonding *first, bool delete_root); | void cgroup_bonding_trim(CGroupBonding *first, bool delete_root); | |||
void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root); | void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root); | |||
int cgroup_bonding_is_empty(CGroupBonding *b); | int cgroup_bonding_is_empty(CGroupBonding *b); | |||
int cgroup_bonding_is_empty_list(CGroupBonding *first); | int cgroup_bonding_is_empty_list(CGroupBonding *first); | |||
End of changes. 2 change blocks. | ||||
6 lines changed or deleted | 6 lines changed or added | |||
conf-parser.h | conf-parser.h | |||
---|---|---|---|---|
skipping to change at line 98 | skipping to change at line 98 | |||
bool relaxed, | bool relaxed, | |||
void *userdata); | void *userdata); | |||
/* Generic parsers */ | /* Generic parsers */ | |||
int config_parse_int(const char *filename, unsigned line, const char *secti on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us erdata); | int config_parse_int(const char *filename, unsigned line, const char *secti on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us erdata); | |||
int config_parse_unsigned(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | int config_parse_unsigned(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | |||
int config_parse_long(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_long(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_uint64(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_uint64(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_size(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_size(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_bool(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_bool(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_tristate(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | ||||
int config_parse_string(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_string(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_path(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_path(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_strv(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_strv(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_path_strv(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | int config_parse_path_strv(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | |||
int config_parse_usec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_usec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_mode(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_mode(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_bytes(const char *filename, unsigned line, const char *sec tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * userdata); | int config_parse_bytes(const char *filename, unsigned line, const char *sec tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * userdata); | |||
#define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ | #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ | |||
int function( \ | int function( \ | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
config.h | config.h | |||
---|---|---|---|---|
skipping to change at line 108 | skipping to change at line 108 | |||
/* Name of package */ | /* Name of package */ | |||
#define PACKAGE "systemd" | #define PACKAGE "systemd" | |||
/* Define to the address where bug reports for this package should be sent. */ | /* Define to the address where bug reports for this package should be sent. */ | |||
#define PACKAGE_BUGREPORT "systemd-devel@lists.freedesktop.org" | #define PACKAGE_BUGREPORT "systemd-devel@lists.freedesktop.org" | |||
/* Define to the full name of this package. */ | /* Define to the full name of this package. */ | |||
#define PACKAGE_NAME "systemd" | #define PACKAGE_NAME "systemd" | |||
/* Define to the full name and version of this package. */ | /* Define to the full name and version of this package. */ | |||
#define PACKAGE_STRING "systemd 38" | #define PACKAGE_STRING "systemd 39" | |||
/* Define to the one symbol short name of this package. */ | /* Define to the one symbol short name of this package. */ | |||
#define PACKAGE_TARNAME "systemd" | #define PACKAGE_TARNAME "systemd" | |||
/* Define to the home page for this package. */ | /* Define to the home page for this package. */ | |||
#define PACKAGE_URL "" | #define PACKAGE_URL "" | |||
/* Define to the version of this package. */ | /* Define to the version of this package. */ | |||
#define PACKAGE_VERSION "38" | #define PACKAGE_VERSION "39" | |||
/* Define to 1 if you have the ANSI C header files. */ | /* Define to 1 if you have the ANSI C header files. */ | |||
#define STDC_HEADERS 1 | #define STDC_HEADERS 1 | |||
/* Target is ALTLinux */ | /* Target is ALTLinux */ | |||
/* #undef TARGET_ALTLINUX */ | /* #undef TARGET_ALTLINUX */ | |||
/* Target is Ångström */ | /* Target is Ångström */ | |||
/* #undef TARGET_ANGSTROM */ | /* #undef TARGET_ANGSTROM */ | |||
skipping to change at line 186 | skipping to change at line 186 | |||
/* Enable extensions on HP NonStop. */ | /* Enable extensions on HP NonStop. */ | |||
#ifndef _TANDEM_SOURCE | #ifndef _TANDEM_SOURCE | |||
# define _TANDEM_SOURCE 1 | # define _TANDEM_SOURCE 1 | |||
#endif | #endif | |||
/* Enable general extensions on Solaris. */ | /* Enable general extensions on Solaris. */ | |||
#ifndef __EXTENSIONS__ | #ifndef __EXTENSIONS__ | |||
# define __EXTENSIONS__ 1 | # define __EXTENSIONS__ 1 | |||
#endif | #endif | |||
/* Version number of package */ | /* Version number of package */ | |||
#define VERSION "38" | #define VERSION "39" | |||
/* Number of bits in a file offset, on hosts where this is settable. */ | /* Number of bits in a file offset, on hosts where this is settable. */ | |||
#define _FILE_OFFSET_BITS 64 | #define _FILE_OFFSET_BITS 64 | |||
/* Define for large files, on AIX-style hosts. */ | /* Define for large files, on AIX-style hosts. */ | |||
/* #undef _LARGE_FILES */ | /* #undef _LARGE_FILES */ | |||
/* Define to 1 if on MINIX. */ | /* Define to 1 if on MINIX. */ | |||
/* #undef _MINIX */ | /* #undef _MINIX */ | |||
End of changes. 3 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added | |||
dbus-common.h | dbus-common.h | |||
---|---|---|---|---|
skipping to change at line 99 | skipping to change at line 99 | |||
int bus_connect_system_ssh(const char *user, const char *host, DBusConnecti on **_bus, DBusError *error); | int bus_connect_system_ssh(const char *user, const char *host, DBusConnecti on **_bus, DBusError *error); | |||
int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error); | int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error); | |||
const char *bus_error_message(const DBusError *error); | const char *bus_error_message(const DBusError *error); | |||
typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *prope rty, void *data); | typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *prope rty, void *data); | |||
typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *pr operty); | typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *pr operty); | |||
typedef struct BusProperty { | typedef struct BusProperty { | |||
const char *interface; /* interface of the property */ | ||||
const char *property; /* name of the property */ | const char *property; /* name of the property */ | |||
BusPropertyCallback append; /* Function that is called to seri alize this property */ | BusPropertyCallback append; /* Function that is called to seri alize this property */ | |||
const char *signature; | const char *signature; | |||
const void *data; /* The data of this property */ | const uint16_t offset; /* Offset from BusBoundProperties: | |||
:base address to the property data. | ||||
* uint16_t is sufficient, because | ||||
we have no structs too big. | ||||
* -Werror=overflow will catch it | ||||
if this does not hold. */ | ||||
bool indirect; /* data is indirect, ie. not base+ | ||||
offset, but *(base+offset) */ | ||||
BusPropertySetCallback set; /* Optional: Function that is call ed to set this property */ | BusPropertySetCallback set; /* Optional: Function that is call ed to set this property */ | |||
} BusProperty; | } BusProperty; | |||
typedef struct BusBoundProperties { | ||||
const char *interface; /* interface of the properties */ | ||||
const BusProperty *properties; /* array of properties, ended by a | ||||
NULL-filled element */ | ||||
const void *const base; /* base pointer to which the offse | ||||
t must be added to reach data */ | ||||
} BusBoundProperties; | ||||
DBusHandlerResult bus_send_error_reply( | DBusHandlerResult bus_send_error_reply( | |||
DBusConnection *c, | DBusConnection *c, | |||
DBusMessage *message, | DBusMessage *message, | |||
DBusError *bus_error, | DBusError *bus_error, | |||
int error); | int error); | |||
DBusHandlerResult bus_default_message_handler( | DBusHandlerResult bus_default_message_handler( | |||
DBusConnection *c, | DBusConnection *c, | |||
DBusMessage *message, | DBusMessage *message, | |||
const char *introspection, | const char *introspection, | |||
const char *interfaces, | const char *interfaces, | |||
const BusProperty *properties); | const BusBoundProperties *bound_properties); | |||
int bus_property_append_string(DBusMessageIter *i, const char *property, vo id *data); | int bus_property_append_string(DBusMessageIter *i, const char *property, vo id *data); | |||
int bus_property_append_strv(DBusMessageIter *i, const char *property, void *data); | int bus_property_append_strv(DBusMessageIter *i, const char *property, void *data); | |||
int bus_property_append_bool(DBusMessageIter *i, const char *property, void *data); | int bus_property_append_bool(DBusMessageIter *i, const char *property, void *data); | |||
int bus_property_append_tristate_false(DBusMessageIter *i, const char *prop erty, void *data); | ||||
int bus_property_append_int32(DBusMessageIter *i, const char *property, voi d *data); | int bus_property_append_int32(DBusMessageIter *i, const char *property, voi d *data); | |||
int bus_property_append_uint32(DBusMessageIter *i, const char *property, vo id *data); | int bus_property_append_uint32(DBusMessageIter *i, const char *property, vo id *data); | |||
int bus_property_append_uint64(DBusMessageIter *i, const char *property, vo id *data); | int bus_property_append_uint64(DBusMessageIter *i, const char *property, vo id *data); | |||
int bus_property_append_size(DBusMessageIter *i, const char *property, void *data); | int bus_property_append_size(DBusMessageIter *i, const char *property, void *data); | |||
int bus_property_append_ul(DBusMessageIter *i, const char *property, void * data); | int bus_property_append_ul(DBusMessageIter *i, const char *property, void * data); | |||
int bus_property_append_long(DBusMessageIter *i, const char *property, void *data); | int bus_property_append_long(DBusMessageIter *i, const char *property, void *data); | |||
#define bus_property_append_int bus_property_append_int32 | #define bus_property_append_int bus_property_append_int32 | |||
#define bus_property_append_pid bus_property_append_uint32 | #define bus_property_append_pid bus_property_append_uint32 | |||
#define bus_property_append_uid bus_property_append_uint32 | #define bus_property_append_uid bus_property_append_uint32 | |||
End of changes. 5 change blocks. | ||||
3 lines changed or deleted | 18 lines changed or added | |||
dbus-execute.h | dbus-execute.h | |||
---|---|---|---|---|
skipping to change at line 28 | skipping to change at line 28 | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <dbus/dbus.h> | #include <dbus/dbus.h> | |||
#include "manager.h" | #include "manager.h" | |||
#include "dbus-common.h" | ||||
#define BUS_EXEC_STATUS_INTERFACE(prefix) \ | #define BUS_EXEC_STATUS_INTERFACE(prefix) \ | |||
" <property name=\"" prefix "StartTimestamp\" type=\"t\" access=\" read\"/>\n" \ | " <property name=\"" prefix "StartTimestamp\" type=\"t\" access=\" read\"/>\n" \ | |||
" <property name=\"" prefix "StartTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \ | " <property name=\"" prefix "StartTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \ | |||
" <property name=\"" prefix "ExitTimestamp\" type=\"t\" access=\"r ead\"/>\n" \ | " <property name=\"" prefix "ExitTimestamp\" type=\"t\" access=\"r ead\"/>\n" \ | |||
" <property name=\"" prefix "ExitTimestampMonotonic\" type=\"t\" a ccess=\"read\"/>\n" \ | " <property name=\"" prefix "ExitTimestampMonotonic\" type=\"t\" a ccess=\"read\"/>\n" \ | |||
" <property name=\"" prefix "PID\" type=\"u\" access=\"read\"/>\n" \ | " <property name=\"" prefix "PID\" type=\"u\" access=\"read\"/>\n" \ | |||
" <property name=\"" prefix "Code\" type=\"i\" access=\"read\"/>\n " \ | " <property name=\"" prefix "Code\" type=\"i\" access=\"read\"/>\n " \ | |||
" <property name=\"" prefix "Status\" type=\"i\" access=\"read\"/> \n" | " <property name=\"" prefix "Status\" type=\"i\" access=\"read\"/> \n" | |||
skipping to change at line 96 | skipping to change at line 97 | |||
" <property name=\"ReadWriteDirectories\" type=\"as\" access=\"rea d\"/>\n" \ | " <property name=\"ReadWriteDirectories\" type=\"as\" access=\"rea d\"/>\n" \ | |||
" <property name=\"ReadOnlyDirectories\" type=\"as\" access=\"read \"/>\n" \ | " <property name=\"ReadOnlyDirectories\" type=\"as\" access=\"read \"/>\n" \ | |||
" <property name=\"InaccessibleDirectories\" type=\"as\" access=\" read\"/>\n" \ | " <property name=\"InaccessibleDirectories\" type=\"as\" access=\" read\"/>\n" \ | |||
" <property name=\"MountFlags\" type=\"t\" access=\"read\"/>\n" \ | " <property name=\"MountFlags\" type=\"t\" access=\"read\"/>\n" \ | |||
" <property name=\"PrivateTmp\" type=\"b\" access=\"read\"/>\n" \ | " <property name=\"PrivateTmp\" type=\"b\" access=\"read\"/>\n" \ | |||
" <property name=\"SameProcessGroup\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"SameProcessGroup\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"KillMode\" type=\"s\" access=\"read\"/>\n" \ | " <property name=\"KillMode\" type=\"s\" access=\"read\"/>\n" \ | |||
" <property name=\"KillSignal\" type=\"i\" access=\"read\"/>\n" \ | " <property name=\"KillSignal\" type=\"i\" access=\"read\"/>\n" \ | |||
" <property name=\"UtmpIdentifier\" type=\"s\" access=\"read\"/>\n " \ | " <property name=\"UtmpIdentifier\" type=\"s\" access=\"read\"/>\n " \ | |||
" <property name=\"ControlGroupModify\" type=\"b\" access=\"read\" />\n" \ | " <property name=\"ControlGroupModify\" type=\"b\" access=\"read\" />\n" \ | |||
" <property name=\"ControlGroupPersistent\" type=\"b\" access=\"re ad\"/>\n" \ | ||||
" <property name=\"PrivateNetwork\" type=\"b\" access=\"read\"/>\n " | " <property name=\"PrivateNetwork\" type=\"b\" access=\"read\"/>\n " | |||
#define BUS_EXEC_COMMAND_INTERFACE(name) \ | #define BUS_EXEC_COMMAND_INTERFACE(name) \ | |||
" <property name=\"" name "\" type=\"a(sasbttuii)\" access=\"read\ "/>\n" | " <property name=\"" name "\" type=\"a(sasbttuii)\" access=\"read\ "/>\n" | |||
#define BUS_EXEC_CONTEXT_PROPERTIES(interface, context) \ | extern const BusProperty bus_exec_context_properties[]; | |||
{ interface, "Environment", bus_property_append_s | ||||
trv, "as", (context).environment }, \ | ||||
{ interface, "EnvironmentFiles", bus_execute_append_en | ||||
v_files, "a(sb)", (context).environment_files }, \ | ||||
{ interface, "UMask", bus_property_append_m | ||||
ode, "u", &(context).umask }, \ | ||||
{ interface, "LimitCPU", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitFSIZE", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitDATA", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitSTACK", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitCORE", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitRSS", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitNOFILE", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitAS", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitNPROC", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitMEMLOCK", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitLOCKS", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitSIGPENDING", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitMSGQUEUE", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitNICE", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitRTPRIO", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "LimitRTTIME", bus_execute_append_rl | ||||
imits, "t", &(context) }, \ | ||||
{ interface, "WorkingDirectory", bus_property_append_s | ||||
tring, "s", (context).working_directory }, \ | ||||
{ interface, "RootDirectory", bus_property_append_s | ||||
tring, "s", (context).root_directory }, \ | ||||
{ interface, "OOMScoreAdjust", bus_execute_append_oo | ||||
m_score_adjust, "i", &(context) }, \ | ||||
{ interface, "Nice", bus_execute_append_ni | ||||
ce, "i", &(context) }, \ | ||||
{ interface, "IOScheduling", bus_execute_append_io | ||||
prio, "i", &(context) }, \ | ||||
{ interface, "CPUSchedulingPolicy", bus_execute_append_cp | ||||
u_sched_policy, "i", &(context) }, \ | ||||
{ interface, "CPUSchedulingPriority", bus_execute_append_cp | ||||
u_sched_priority, "i", &(context) }, \ | ||||
{ interface, "CPUAffinity", bus_execute_append_af | ||||
finity,"ay", &(context) }, \ | ||||
{ interface, "TimerSlackNSec", bus_execute_append_ti | ||||
mer_slack_nsec, "t", &(context) }, \ | ||||
{ interface, "CPUSchedulingResetOnFork", bus_property_append_b | ||||
ool, "b", &(context).cpu_sched_reset_on_fork }, \ | ||||
{ interface, "NonBlocking", bus_property_append_b | ||||
ool, "b", &(context).non_blocking }, \ | ||||
{ interface, "StandardInput", bus_execute_append_in | ||||
put, "s", &(context).std_input }, \ | ||||
{ interface, "StandardOutput", bus_execute_append_ou | ||||
tput, "s", &(context).std_output }, \ | ||||
{ interface, "StandardError", bus_execute_append_ou | ||||
tput, "s", &(context).std_error }, \ | ||||
{ interface, "TTYPath", bus_property_append_s | ||||
tring, "s", (context).tty_path }, \ | ||||
{ interface, "TTYReset", bus_property_append_b | ||||
ool, "b", &(context).tty_reset }, \ | ||||
{ interface, "TTYVHangup", bus_property_append_b | ||||
ool, "b", &(context).tty_vhangup }, \ | ||||
{ interface, "TTYVTDisallocate", bus_property_append_b | ||||
ool, "b", &(context).tty_vt_disallocate }, \ | ||||
{ interface, "SyslogPriority", bus_property_append_i | ||||
nt, "i", &(context).syslog_priority }, \ | ||||
{ interface, "SyslogIdentifier", bus_property_append_s | ||||
tring, "s", (context).syslog_identifier }, \ | ||||
{ interface, "SyslogLevelPrefix", bus_property_append_b | ||||
ool, "b", &(context).syslog_level_prefix }, \ | ||||
{ interface, "Capabilities", bus_execute_append_ca | ||||
pabilities, "s",&(context) }, \ | ||||
{ interface, "SecureBits", bus_property_append_i | ||||
nt, "i", &(context).secure_bits }, \ | ||||
{ interface, "CapabilityBoundingSet", bus_execute_append_ca | ||||
pability_bs, "t", &(context).capability_bounding_set_drop }, \ | ||||
{ interface, "User", bus_property_append_s | ||||
tring, "s", (context).user }, \ | ||||
{ interface, "Group", bus_property_append_s | ||||
tring, "s", (context).group }, \ | ||||
{ interface, "SupplementaryGroups", bus_property_append_s | ||||
trv, "as", (context).supplementary_groups }, \ | ||||
{ interface, "TCPWrapName", bus_property_append_s | ||||
tring, "s", (context).tcpwrap_name }, \ | ||||
{ interface, "PAMName", bus_property_append_s | ||||
tring, "s", (context).pam_name }, \ | ||||
{ interface, "ReadWriteDirectories", bus_property_append_s | ||||
trv, "as", (context).read_write_dirs }, \ | ||||
{ interface, "ReadOnlyDirectories", bus_property_append_s | ||||
trv, "as", (context).read_only_dirs }, \ | ||||
{ interface, "InaccessibleDirectories", bus_property_append_s | ||||
trv, "as", (context).inaccessible_dirs }, \ | ||||
{ interface, "MountFlags", bus_property_append_u | ||||
l, "t", &(context).mount_flags }, \ | ||||
{ interface, "PrivateTmp", bus_property_append_b | ||||
ool, "b", &(context).private_tmp }, \ | ||||
{ interface, "PrivateNetwork", bus_property_append_b | ||||
ool, "b", &(context).private_network }, \ | ||||
{ interface, "SameProcessGroup", bus_property_append_b | ||||
ool, "b", &(context).same_pgrp }, \ | ||||
{ interface, "KillMode", bus_execute_append_ki | ||||
ll_mode, "s", &(context).kill_mode }, \ | ||||
{ interface, "KillSignal", bus_property_append_i | ||||
nt, "i", &(context).kill_signal }, \ | ||||
{ interface, "UtmpIdentifier", bus_property_append_s | ||||
tring, "s", (context).utmp_id }, \ | ||||
{ interface, "ControlGroupModify", bus_property_append_b | ||||
ool, "b", &(context).control_group_modify } | ||||
#define BUS_EXEC_STATUS_PROPERTIES(interface, estatus, prefix) \ | ||||
{ interface, prefix "StartTimestamp", bus_property_append_u | ||||
sec, "t", &(estatus).start_timestamp.realtime }, \ | ||||
{ interface, prefix "StartTimestampMonotonic",bus_property_append_u | ||||
sec, "t", &(estatus).start_timestamp.monotonic }, \ | ||||
{ interface, prefix "ExitTimestamp", bus_property_append_u | ||||
sec, "t", &(estatus).start_timestamp.realtime }, \ | ||||
{ interface, prefix "ExitTimestampMonotonic", bus_property_append_u | ||||
sec, "t", &(estatus).start_timestamp.monotonic }, \ | ||||
{ interface, prefix "PID", bus_property_append_p | ||||
id, "u", &(estatus).pid }, \ | ||||
{ interface, prefix "Code", bus_property_append_i | ||||
nt, "i", &(estatus).code }, \ | ||||
{ interface, prefix "Status", bus_property_append_i | ||||
nt, "i", &(estatus).status } | ||||
#define BUS_EXEC_COMMAND_PROPERTY(interface, command, name) \ | #define BUS_EXEC_COMMAND_PROPERTY(name, command, indirect) \ | |||
{ interface, name, bus_execute_append_command, "a(sasbttttuii)", (c | { name, bus_execute_append_command, "a(sasbttttuii)", (command), (i | |||
ommand) } | ndirect), NULL } | |||
int bus_execute_append_output(DBusMessageIter *i, const char *property, voi d *data); | int bus_execute_append_output(DBusMessageIter *i, const char *property, voi d *data); | |||
int bus_execute_append_input(DBusMessageIter *i, const char *property, void *data); | int bus_execute_append_input(DBusMessageIter *i, const char *property, void *data); | |||
int bus_execute_append_oom_score_adjust(DBusMessageIter *i, const char *pro perty, void *data); | int bus_execute_append_oom_score_adjust(DBusMessageIter *i, const char *pro perty, void *data); | |||
int bus_execute_append_nice(DBusMessageIter *i, const char *property, void *data); | int bus_execute_append_nice(DBusMessageIter *i, const char *property, void *data); | |||
int bus_execute_append_ioprio(DBusMessageIter *i, const char *property, voi d *data); | int bus_execute_append_ioprio(DBusMessageIter *i, const char *property, voi d *data); | |||
int bus_execute_append_cpu_sched_policy(DBusMessageIter *i, const char *pro perty, void *data); | int bus_execute_append_cpu_sched_policy(DBusMessageIter *i, const char *pro perty, void *data); | |||
int bus_execute_append_cpu_sched_priority(DBusMessageIter *i, const char *p roperty, void *data); | int bus_execute_append_cpu_sched_priority(DBusMessageIter *i, const char *p roperty, void *data); | |||
int bus_execute_append_affinity(DBusMessageIter *i, const char *property, v oid *data); | int bus_execute_append_affinity(DBusMessageIter *i, const char *property, v oid *data); | |||
int bus_execute_append_timer_slack_nsec(DBusMessageIter *i, const char *pro perty, void *data); | int bus_execute_append_timer_slack_nsec(DBusMessageIter *i, const char *pro perty, void *data); | |||
End of changes. 4 change blocks. | ||||
138 lines changed or deleted | 6 lines changed or added | |||
dbus-unit.h | dbus-unit.h | |||
---|---|---|---|---|
skipping to change at line 28 | skipping to change at line 28 | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <dbus/dbus.h> | #include <dbus/dbus.h> | |||
#include "manager.h" | #include "manager.h" | |||
#include "dbus-common.h" | ||||
#define BUS_UNIT_INTERFACE \ | #define BUS_UNIT_INTERFACE \ | |||
" <interface name=\"org.freedesktop.systemd1.Unit\">\n" \ | " <interface name=\"org.freedesktop.systemd1.Unit\">\n" \ | |||
" <method name=\"Start\">\n" \ | " <method name=\"Start\">\n" \ | |||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | |||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \ | " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \ | |||
" </method>\n" \ | " </method>\n" \ | |||
" <method name=\"Stop\">\n" \ | " <method name=\"Stop\">\n" \ | |||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | |||
" <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \ | " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \ | |||
skipping to change at line 129 | skipping to change at line 130 | |||
" <property name=\"ConditionTimestamp\" type=\"t\" access=\"read\" />\n" \ | " <property name=\"ConditionTimestamp\" type=\"t\" access=\"read\" />\n" \ | |||
" <property name=\"ConditionTimestampMonotonic\" type=\"t\" access =\"read\"/>\n" \ | " <property name=\"ConditionTimestampMonotonic\" type=\"t\" access =\"read\"/>\n" \ | |||
" <property name=\"ConditionResult\" type=\"b\" access=\"read\"/>\ n" \ | " <property name=\"ConditionResult\" type=\"b\" access=\"read\"/>\ n" \ | |||
" <property name=\"LoadError\" type=\"(ss)\" access=\"read\"/>\n" \ | " <property name=\"LoadError\" type=\"(ss)\" access=\"read\"/>\n" \ | |||
" </interface>\n" | " </interface>\n" | |||
#define BUS_UNIT_INTERFACES_LIST \ | #define BUS_UNIT_INTERFACES_LIST \ | |||
BUS_GENERIC_INTERFACES_LIST \ | BUS_GENERIC_INTERFACES_LIST \ | |||
"org.freedesktop.systemd1.Unit\0" | "org.freedesktop.systemd1.Unit\0" | |||
#define BUS_UNIT_PROPERTIES \ | extern const BusProperty bus_unit_properties[]; | |||
{ "org.freedesktop.systemd1.Unit", "Id", bus_prop | ||||
erty_append_string, "s", u->meta.id }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Names", bus_unit | ||||
_append_names, "as", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Following", bus_unit | ||||
_append_following, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Requires", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRES] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RequiresOverridable", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRES_OVERRIDA | ||||
BLE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Requisite", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUISITE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RequisiteOverridable", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUISITE_OVERRID | ||||
ABLE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Wants", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_WANTS] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "BindTo", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_BIND_TO] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RequiredBy", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRED_BY] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RequiredByOverridable",bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_REQUIRED_BY_OVERR | ||||
IDABLE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "WantedBy", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_WANTED_BY] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "BoundBy", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_BOUND_BY] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Conflicts", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_CONFLICTS] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ConflictedBy", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_CONFLICTED_BY] }, | ||||
\ | ||||
{ "org.freedesktop.systemd1.Unit", "Before", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_BEFORE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "After", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_AFTER] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "OnFailure", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_ON_FAILURE] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Triggers", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_TRIGGERS] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "TriggeredBy", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_TRIGGERED_BY] }, | ||||
\ | ||||
{ "org.freedesktop.systemd1.Unit", "PropagateReloadTo", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_PROPAGATE_RELOAD_ | ||||
TO] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "PropagateReloadFrom", bus_unit | ||||
_append_dependencies, "as", u->meta.dependencies[UNIT_PROPAGATE_RELOAD_ | ||||
FROM] }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Description", bus_unit | ||||
_append_description, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "LoadState", bus_unit | ||||
_append_load_state, "s", &u->meta.load_state }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ActiveState", bus_unit | ||||
_append_active_state, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "SubState", bus_unit | ||||
_append_sub_state, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "FragmentPath", bus_prop | ||||
erty_append_string, "s", u->meta.fragment_path }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "UnitFileState", bus_unit | ||||
_append_file_state, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "InactiveExitTimestamp",bus_prop | ||||
erty_append_usec, "t", &u->meta.inactive_exit_timestamp.realtime } | ||||
, \ | ||||
{ "org.freedesktop.systemd1.Unit", "InactiveExitTimestampMonotonic" | ||||
,bus_property_append_usec, "t", &u->meta.inactive_exit_timestamp.monotonic | ||||
}, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ActiveEnterTimestamp", bus_prop | ||||
erty_append_usec, "t", &u->meta.active_enter_timestamp.realtime }, | ||||
\ | ||||
{ "org.freedesktop.systemd1.Unit", "ActiveEnterTimestampMonotonic", | ||||
bus_property_append_usec, "t", &u->meta.active_enter_timestamp.monotonic } | ||||
, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ActiveExitTimestamp", bus_prop | ||||
erty_append_usec, "t", &u->meta.active_exit_timestamp.realtime }, | ||||
\ | ||||
{ "org.freedesktop.systemd1.Unit", "ActiveExitTimestampMonotonic", | ||||
bus_property_append_usec, "t", &u->meta.active_exit_timestamp.monotonic }, | ||||
\ | ||||
{ "org.freedesktop.systemd1.Unit", "InactiveEnterTimestamp",bus_pro | ||||
perty_append_usec, "t", &u->meta.inactive_enter_timestamp.realtime | ||||
}, \ | ||||
{ "org.freedesktop.systemd1.Unit", "InactiveEnterTimestampMonotonic | ||||
",bus_property_append_usec,"t", &u->meta.inactive_enter_timestamp.monotonic | ||||
}, \ | ||||
{ "org.freedesktop.systemd1.Unit", "CanStart", bus_unit | ||||
_append_can_start, "b", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "CanStop", bus_unit | ||||
_append_can_stop, "b", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "CanReload", bus_unit | ||||
_append_can_reload, "b", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "CanIsolate", bus_unit | ||||
_append_can_isolate, "b", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "Job", bus_unit | ||||
_append_job, "(uo)", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "StopWhenUnneeded", bus_prop | ||||
erty_append_bool, "b", &u->meta.stop_when_unneeded }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RefuseManualStart", bus_prop | ||||
erty_append_bool, "b", &u->meta.refuse_manual_start }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "RefuseManualStop", bus_prop | ||||
erty_append_bool, "b", &u->meta.refuse_manual_stop }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "AllowIsolate", bus_prop | ||||
erty_append_bool, "b", &u->meta.allow_isolate }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "DefaultDependencies", bus_prop | ||||
erty_append_bool, "b", &u->meta.default_dependencies }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "OnFailureIsolate", bus_prop | ||||
erty_append_bool, "b", &u->meta.on_failure_isolate }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "IgnoreOnIsolate", bus_prop | ||||
erty_append_bool, "b", &u->meta.ignore_on_isolate }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "IgnoreOnSnapshot", bus_prop | ||||
erty_append_bool, "b", &u->meta.ignore_on_snapshot }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "DefaultControlGroup", bus_unit | ||||
_append_default_cgroup, "s", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ControlGroup", bus_unit | ||||
_append_cgroups, "as", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ControlGroupAttributes", bus_un | ||||
it_append_cgroup_attrs, "a(sss)", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "NeedDaemonReload", bus_unit | ||||
_append_need_daemon_reload, "b", u }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "JobTimeoutUSec", bus_prop | ||||
erty_append_usec, "t", &u->meta.job_timeout }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ConditionTimestamp", bus_prop | ||||
erty_append_usec, "t", &u->meta.condition_timestamp.realtime }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ConditionTimestampMonotonic", b | ||||
us_property_append_usec,"t", &u->meta.condition_timestamp.monotonic }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "ConditionResult", bus_prop | ||||
erty_append_bool, "b", &u->meta.condition_result }, \ | ||||
{ "org.freedesktop.systemd1.Unit", "LoadError", bus_unit | ||||
_append_load_error, "(ss)", u } | ||||
int bus_unit_append_names(DBusMessageIter *i, const char *property, void *d | ||||
ata); | ||||
int bus_unit_append_following(DBusMessageIter *i, const char *property, voi | ||||
d *data); | ||||
int bus_unit_append_dependencies(DBusMessageIter *i, const char *property, | ||||
void *data); | ||||
int bus_unit_append_description(DBusMessageIter *i, const char *property, v | ||||
oid *data); | ||||
int bus_unit_append_load_state(DBusMessageIter *i, const char *property, vo | ||||
id *data); | ||||
int bus_unit_append_active_state(DBusMessageIter *i, const char *property, | ||||
void *data); | ||||
int bus_unit_append_sub_state(DBusMessageIter *i, const char *property, voi | ||||
d *data); | ||||
int bus_unit_append_file_state(DBusMessageIter *i, const char *property, vo | ||||
id *data); | ||||
int bus_unit_append_can_start(DBusMessageIter *i, const char *property, voi | ||||
d *data); | ||||
int bus_unit_append_can_stop(DBusMessageIter *i, const char *property, void | ||||
*data); | ||||
int bus_unit_append_can_reload(DBusMessageIter *i, const char *property, vo | ||||
id *data); | ||||
int bus_unit_append_can_isolate(DBusMessageIter *i, const char *property, v | ||||
oid *data); | ||||
int bus_unit_append_job(DBusMessageIter *i, const char *property, void *dat | ||||
a); | ||||
int bus_unit_append_default_cgroup(DBusMessageIter *i, const char *property | ||||
, void *data); | ||||
int bus_unit_append_cgroups(DBusMessageIter *i, const char *property, void | ||||
*data); | ||||
int bus_unit_append_cgroup_attrs(DBusMessageIter *i, const char *property, | ||||
void *data); | ||||
int bus_unit_append_need_daemon_reload(DBusMessageIter *i, const char *prop | ||||
erty, void *data); | ||||
int bus_unit_append_load_error(DBusMessageIter *i, const char *property, vo | ||||
id *data); | ||||
void bus_unit_send_change_signal(Unit *u); | void bus_unit_send_change_signal(Unit *u); | |||
void bus_unit_send_removed_signal(Unit *u); | void bus_unit_send_removed_signal(Unit *u); | |||
extern const DBusObjectPathVTable bus_unit_vtable; | extern const DBusObjectPathVTable bus_unit_vtable; | |||
extern const char bus_unit_interface[]; | extern const char bus_unit_interface[]; | |||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
169 lines changed or deleted | 2 lines changed or added | |||
device.h | device.h | |||
---|---|---|---|---|
skipping to change at line 39 | skipping to change at line 39 | |||
/* We simply watch devices, we cannot plug/unplug them. That | /* We simply watch devices, we cannot plug/unplug them. That | |||
* simplifies the state engine greatly */ | * simplifies the state engine greatly */ | |||
typedef enum DeviceState { | typedef enum DeviceState { | |||
DEVICE_DEAD, | DEVICE_DEAD, | |||
DEVICE_PLUGGED, | DEVICE_PLUGGED, | |||
_DEVICE_STATE_MAX, | _DEVICE_STATE_MAX, | |||
_DEVICE_STATE_INVALID = -1 | _DEVICE_STATE_INVALID = -1 | |||
} DeviceState; | } DeviceState; | |||
struct Device { | struct Device { | |||
Meta meta; | Unit meta; | |||
char *sysfs; | char *sysfs; | |||
/* In order to be able to distinguish dependencies on | /* In order to be able to distinguish dependencies on | |||
different device nodes we might end up creating multiple | different device nodes we might end up creating multiple | |||
devices for the same sysfs path. We chain them up here. */ | devices for the same sysfs path. We chain them up here. */ | |||
LIST_FIELDS(struct Device, same_sysfs); | LIST_FIELDS(struct Device, same_sysfs); | |||
DeviceState state; | DeviceState state; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
execute.h | execute.h | |||
---|---|---|---|---|
skipping to change at line 166 | skipping to change at line 166 | |||
int syslog_priority; | int syslog_priority; | |||
char *syslog_identifier; | char *syslog_identifier; | |||
bool syslog_level_prefix; | bool syslog_level_prefix; | |||
bool cpu_sched_reset_on_fork; | bool cpu_sched_reset_on_fork; | |||
bool non_blocking; | bool non_blocking; | |||
bool private_tmp; | bool private_tmp; | |||
bool private_network; | bool private_network; | |||
bool control_group_modify; | bool control_group_modify; | |||
int control_group_persistent; | ||||
/* This is not exposed to the user but available | /* This is not exposed to the user but available | |||
* internally. We need it to make sure that whenever we spawn | * internally. We need it to make sure that whenever we spawn | |||
* /bin/mount it is run in the same process group as us so | * /bin/mount it is run in the same process group as us so | |||
* that the autofs logic detects that it belongs to us and we | * that the autofs logic detects that it belongs to us and we | |||
* don't enter a trigger loop. */ | * don't enter a trigger loop. */ | |||
bool same_pgrp; | bool same_pgrp; | |||
bool oom_score_adjust_set:1; | bool oom_score_adjust_set:1; | |||
bool nice_set:1; | bool nice_set:1; | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
journal-file.h | journal-file.h | |||
---|---|---|---|---|
skipping to change at line 80 | skipping to change at line 80 | |||
Window windows[_WINDOW_MAX]; | Window windows[_WINDOW_MAX]; | |||
uint64_t current_offset; | uint64_t current_offset; | |||
JournalMetrics metrics; | JournalMetrics metrics; | |||
bool compress; | bool compress; | |||
#ifdef HAVE_XZ | #ifdef HAVE_XZ | |||
void *compress_buffer; | void *compress_buffer; | |||
size_t compress_buffer_size; | uint64_t compress_buffer_size; | |||
#endif | #endif | |||
} JournalFile; | } JournalFile; | |||
typedef enum direction { | typedef enum direction { | |||
DIRECTION_UP, | DIRECTION_UP, | |||
DIRECTION_DOWN | DIRECTION_DOWN | |||
} direction_t; | } direction_t; | |||
int journal_file_open(const char *fname, int flags, mode_t mode, JournalFil e *template, JournalFile **ret); | int journal_file_open(const char *fname, int flags, mode_t mode, JournalFil e *template, JournalFile **ret); | |||
void journal_file_close(JournalFile *j); | void journal_file_close(JournalFile *j); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
journald.h | journald.h | |||
---|---|---|---|---|
skipping to change at line 76 | skipping to change at line 76 | |||
bool import_proc_kmsg; | bool import_proc_kmsg; | |||
char proc_kmsg_buffer[LINE_MAX+1]; | char proc_kmsg_buffer[LINE_MAX+1]; | |||
size_t proc_kmsg_length; | size_t proc_kmsg_length; | |||
uint64_t cached_available_space; | uint64_t cached_available_space; | |||
usec_t cached_available_space_timestamp; | usec_t cached_available_space_timestamp; | |||
uint64_t var_available_timestamp; | uint64_t var_available_timestamp; | |||
gid_t file_gid; | ||||
bool file_gid_valid; | ||||
LIST_HEAD(StdoutStream, stdout_streams); | LIST_HEAD(StdoutStream, stdout_streams); | |||
unsigned n_stdout_streams; | unsigned n_stdout_streams; | |||
} Server; | } Server; | |||
/* gperf lookup function */ | /* gperf lookup function */ | |||
const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigne d length); | const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigne d length); | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 3 lines changed or added | |||
log.h | log.h | |||
---|---|---|---|---|
skipping to change at line 30 | skipping to change at line 30 | |||
You should have received a copy of the GNU General Public License | You should have received a copy of the GNU General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <syslog.h> | #include <syslog.h> | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include "macro.h" | #include "macro.h" | |||
/* If set to SYSLOG and /dev/log can not be opened we fall back to | ||||
* KSMG. If KMSG fails, we fall back to CONSOLE */ | ||||
typedef enum LogTarget{ | typedef enum LogTarget{ | |||
LOG_TARGET_CONSOLE, | LOG_TARGET_CONSOLE, | |||
LOG_TARGET_KMSG, | LOG_TARGET_KMSG, | |||
LOG_TARGET_JOURNAL, | ||||
LOG_TARGET_JOURNAL_OR_KMSG, | ||||
LOG_TARGET_SYSLOG, | LOG_TARGET_SYSLOG, | |||
LOG_TARGET_SYSLOG_OR_KMSG, | LOG_TARGET_SYSLOG_OR_KMSG, | |||
LOG_TARGET_AUTO, /* console if stderr is tty, SYSLOG_OR_KMSG otherw ise */ | LOG_TARGET_AUTO, /* console if stderr is tty, JOURNAL_OR_KMSG other wise */ | |||
LOG_TARGET_NULL, | LOG_TARGET_NULL, | |||
_LOG_TARGET_MAX, | _LOG_TARGET_MAX, | |||
_LOG_TARGET_INVALID = -1 | _LOG_TARGET_INVALID = -1 | |||
} LogTarget; | } LogTarget; | |||
void log_set_target(LogTarget target); | void log_set_target(LogTarget target); | |||
void log_set_max_level(int level); | void log_set_max_level(int level); | |||
int log_set_target_from_string(const char *e); | int log_set_target_from_string(const char *e); | |||
int log_set_max_level_from_string(const char *e); | int log_set_max_level_from_string(const char *e); | |||
skipping to change at line 63 | skipping to change at line 63 | |||
int log_show_location_from_string(const char *e); | int log_show_location_from_string(const char *e); | |||
LogTarget log_get_target(void); | LogTarget log_get_target(void); | |||
int log_get_max_level(void); | int log_get_max_level(void); | |||
int log_open(void); | int log_open(void); | |||
void log_close(void); | void log_close(void); | |||
void log_forget_fds(void); | void log_forget_fds(void); | |||
void log_close_syslog(void); | void log_close_syslog(void); | |||
void log_close_journal(void); | ||||
void log_close_kmsg(void); | void log_close_kmsg(void); | |||
void log_close_console(void); | void log_close_console(void); | |||
void log_parse_environment(void); | void log_parse_environment(void); | |||
int log_meta( | int log_meta( | |||
int level, | int level, | |||
const char*file, | const char*file, | |||
int line, | int line, | |||
const char *func, | const char *func, | |||
const char *format, ...) _printf_attr_(5,6); | const char *format, ...) _printf_attr_(5,6); | |||
_noreturn_ void log_assert( | _noreturn_ void log_assert_failed(const char *text, const char *file, int l | |||
const char*file, | ine, const char *func); | |||
int line, | _noreturn_ void log_assert_failed_unreachable(const char *text, const char | |||
const char *func, | *file, int line, const char *func); | |||
const char *format, ...) _printf_attr_(4,5); | ||||
/* This modifies the buffer passed! */ | /* This modifies the buffer passed! */ | |||
int log_dump_internal( | int log_dump_internal( | |||
int level, | int level, | |||
const char*file, | const char*file, | |||
int line, | int line, | |||
const char *func, | const char *func, | |||
char *buffer); | char *buffer); | |||
#define log_full(level, ...) log_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__) | #define log_full(level, ...) log_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__) | |||
End of changes. 5 change blocks. | ||||
8 lines changed or deleted | 8 lines changed or added | |||
logs-show.h | logs-show.h | |||
---|---|---|---|---|
skipping to change at line 37 | skipping to change at line 37 | |||
#include <systemd/sd-journal.h> | #include <systemd/sd-journal.h> | |||
#include "util.h" | #include "util.h" | |||
typedef enum OutputMode { | typedef enum OutputMode { | |||
OUTPUT_SHORT, | OUTPUT_SHORT, | |||
OUTPUT_SHORT_MONOTONIC, | OUTPUT_SHORT_MONOTONIC, | |||
OUTPUT_VERBOSE, | OUTPUT_VERBOSE, | |||
OUTPUT_EXPORT, | OUTPUT_EXPORT, | |||
OUTPUT_JSON, | OUTPUT_JSON, | |||
OUTPUT_CAT, | ||||
_OUTPUT_MODE_MAX, | _OUTPUT_MODE_MAX, | |||
_OUTPUT_MODE_INVALID = -1 | _OUTPUT_MODE_INVALID = -1 | |||
} OutputMode; | } OutputMode; | |||
int output_journal(sd_journal *j, OutputMode mode, unsigned line, bool show _all); | int output_journal(sd_journal *j, OutputMode mode, unsigned line, bool show _all); | |||
int show_journal_by_unit( | int show_journal_by_unit( | |||
const char *unit, | const char *unit, | |||
OutputMode mode, | OutputMode mode, | |||
const char *prefix, | const char *prefix, | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
macro.h | macro.h | |||
---|---|---|---|---|
skipping to change at line 94 | skipping to change at line 94 | |||
__extension__ ({ \ | __extension__ ({ \ | |||
typeof(x) _x = (x); \ | typeof(x) _x = (x); \ | |||
typeof(low) _low = (low); \ | typeof(low) _low = (low); \ | |||
typeof(high) _high = (high); \ | typeof(high) _high = (high); \ | |||
((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \ | ((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \ | |||
}) | }) | |||
#define assert_se(expr) \ | #define assert_se(expr) \ | |||
do { \ | do { \ | |||
if (_unlikely_(!(expr))) \ | if (_unlikely_(!(expr))) \ | |||
log_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, | log_assert_failed(#expr, __FILE__, __LINE__, __PRET | |||
\ | TY_FUNCTION__); \ | |||
"Assertion '%s' failed at %s:%u, functio | ||||
n %s(). Aborting.", \ | ||||
#expr , __FILE__, __LINE__, __PRETTY_FUN | ||||
CTION__); \ | ||||
} while (false) \ | } while (false) \ | |||
/* We override the glibc assert() here. */ | /* We override the glibc assert() here. */ | |||
#undef assert | #undef assert | |||
#ifdef NDEBUG | #ifdef NDEBUG | |||
#define assert(expr) do {} while(false) | #define assert(expr) do {} while(false) | |||
#else | #else | |||
#define assert(expr) assert_se(expr) | #define assert(expr) assert_se(expr) | |||
#endif | #endif | |||
#define assert_not_reached(t) \ | #define assert_not_reached(t) \ | |||
do { \ | do { \ | |||
log_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ | log_assert_failed_unreachable(t, __FILE__, __LINE__, __PRET | |||
"Code should not be reached '%s' at %s:%u, funct | TY_FUNCTION__); \ | |||
ion %s(). Aborting.", \ | ||||
t, __FILE__, __LINE__, __PRETTY_FUNCTION__); \ | ||||
} while (false) | } while (false) | |||
#define assert_cc(expr) \ | #define assert_cc(expr) \ | |||
do { \ | do { \ | |||
switch (0) { \ | switch (0) { \ | |||
case 0: \ | case 0: \ | |||
case !!(expr): \ | case !!(expr): \ | |||
; \ | ; \ | |||
} \ | } \ | |||
} while (false) | } while (false) | |||
End of changes. 2 change blocks. | ||||
10 lines changed or deleted | 4 lines changed or added | |||
manager.h | manager.h | |||
---|---|---|---|---|
skipping to change at line 77 | skipping to change at line 77 | |||
WATCH_SWAP, | WATCH_SWAP, | |||
WATCH_UDEV, | WATCH_UDEV, | |||
WATCH_DBUS_WATCH, | WATCH_DBUS_WATCH, | |||
WATCH_DBUS_TIMEOUT | WATCH_DBUS_TIMEOUT | |||
}; | }; | |||
struct Watch { | struct Watch { | |||
int fd; | int fd; | |||
WatchType type; | WatchType type; | |||
union { | union { | |||
union Unit *unit; | struct Unit *unit; | |||
struct Job *job; | struct Job *job; | |||
DBusWatch *bus_watch; | DBusWatch *bus_watch; | |||
DBusTimeout *bus_timeout; | DBusTimeout *bus_timeout; | |||
} data; | } data; | |||
bool fd_is_dupped:1; | bool fd_is_dupped:1; | |||
bool socket_accept:1; | bool socket_accept:1; | |||
}; | }; | |||
#include "unit.h" | #include "unit.h" | |||
#include "job.h" | #include "job.h" | |||
skipping to change at line 105 | skipping to change at line 105 | |||
/* Note that the set of units we know of is allowed to be | /* Note that the set of units we know of is allowed to be | |||
* inconsistent. However the subset of it that is loaded may | * inconsistent. However the subset of it that is loaded may | |||
* not, and the list of jobs may neither. */ | * not, and the list of jobs may neither. */ | |||
/* Active jobs and units */ | /* Active jobs and units */ | |||
Hashmap *units; /* name string => Unit object n:1 */ | Hashmap *units; /* name string => Unit object n:1 */ | |||
Hashmap *jobs; /* job id => Job object 1:1 */ | Hashmap *jobs; /* job id => Job object 1:1 */ | |||
/* To make it easy to iterate through the units of a specific | /* To make it easy to iterate through the units of a specific | |||
* type we maintain a per type linked list */ | * type we maintain a per type linked list */ | |||
LIST_HEAD(Meta, units_by_type[_UNIT_TYPE_MAX]); | LIST_HEAD(Unit, units_by_type[_UNIT_TYPE_MAX]); | |||
/* Units that need to be loaded */ | /* Units that need to be loaded */ | |||
LIST_HEAD(Meta, load_queue); /* this is actually more a stack than a queue, but uh. */ | LIST_HEAD(Unit, load_queue); /* this is actually more a stack than a queue, but uh. */ | |||
/* Jobs that need to be run */ | /* Jobs that need to be run */ | |||
LIST_HEAD(Job, run_queue); /* more a stack than a queue, too */ | LIST_HEAD(Job, run_queue); /* more a stack than a queue, too */ | |||
/* Units and jobs that have not yet been announced via | /* Units and jobs that have not yet been announced via | |||
* D-Bus. When something about a job changes it is added here | * D-Bus. When something about a job changes it is added here | |||
* if it is not in there yet. This allows easy coalescing of | * if it is not in there yet. This allows easy coalescing of | |||
* D-Bus change signals. */ | * D-Bus change signals. */ | |||
LIST_HEAD(Meta, dbus_unit_queue); | LIST_HEAD(Unit, dbus_unit_queue); | |||
LIST_HEAD(Job, dbus_job_queue); | LIST_HEAD(Job, dbus_job_queue); | |||
/* Units to remove */ | /* Units to remove */ | |||
LIST_HEAD(Meta, cleanup_queue); | LIST_HEAD(Unit, cleanup_queue); | |||
/* Units to check when doing GC */ | /* Units to check when doing GC */ | |||
LIST_HEAD(Meta, gc_queue); | LIST_HEAD(Unit, gc_queue); | |||
/* Jobs to be added */ | /* Jobs to be added */ | |||
Hashmap *transaction_jobs; /* Unit object => Job object list 1 :1 */ | Hashmap *transaction_jobs; /* Unit object => Job object list 1 :1 */ | |||
JobDependency *transaction_anchor; | JobDependency *transaction_anchor; | |||
Hashmap *watch_pids; /* pid => Unit object n:1 */ | Hashmap *watch_pids; /* pid => Unit object n:1 */ | |||
char *notify_socket; | char *notify_socket; | |||
Watch notify_watch; | Watch notify_watch; | |||
skipping to change at line 292 | skipping to change at line 292 | |||
void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); | void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); | |||
void manager_send_unit_plymouth(Manager *m, Unit *u); | void manager_send_unit_plymouth(Manager *m, Unit *u); | |||
bool manager_unit_pending_inactive(Manager *m, const char *name); | bool manager_unit_pending_inactive(Manager *m, const char *name); | |||
void manager_check_finished(Manager *m); | void manager_check_finished(Manager *m); | |||
void manager_run_generators(Manager *m); | void manager_run_generators(Manager *m); | |||
void manager_undo_generators(Manager *m); | void manager_undo_generators(Manager *m); | |||
void manager_recheck_syslog(Manager *m); | void manager_recheck_journal(Manager *m); | |||
void manager_set_show_status(Manager *m, bool b); | void manager_set_show_status(Manager *m, bool b); | |||
bool manager_get_show_status(Manager *m); | bool manager_get_show_status(Manager *m); | |||
const char *manager_running_as_to_string(ManagerRunningAs i); | const char *manager_running_as_to_string(ManagerRunningAs i); | |||
ManagerRunningAs manager_running_as_from_string(const char *s); | ManagerRunningAs manager_running_as_from_string(const char *s); | |||
#endif | #endif | |||
End of changes. 7 change blocks. | ||||
7 lines changed or deleted | 7 lines changed or added | |||
mount.h | mount.h | |||
---|---|---|---|---|
skipping to change at line 63 | skipping to change at line 63 | |||
} MountExecCommand; | } MountExecCommand; | |||
typedef struct MountParameters { | typedef struct MountParameters { | |||
char *what; | char *what; | |||
char *options; | char *options; | |||
char *fstype; | char *fstype; | |||
int passno; | int passno; | |||
} MountParameters; | } MountParameters; | |||
struct Mount { | struct Mount { | |||
Meta meta; | Unit meta; | |||
char *where; | char *where; | |||
MountParameters parameters_etc_fstab; | MountParameters parameters_etc_fstab; | |||
MountParameters parameters_proc_self_mountinfo; | MountParameters parameters_proc_self_mountinfo; | |||
MountParameters parameters_fragment; | MountParameters parameters_fragment; | |||
bool from_etc_fstab:1; | bool from_etc_fstab:1; | |||
bool from_proc_self_mountinfo:1; | bool from_proc_self_mountinfo:1; | |||
bool from_fragment:1; | bool from_fragment:1; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
path.h | path.h | |||
---|---|---|---|---|
skipping to change at line 73 | skipping to change at line 73 | |||
int path_spec_watch(PathSpec *s, Unit *u); | int path_spec_watch(PathSpec *s, Unit *u); | |||
void path_spec_unwatch(PathSpec *s, Unit *u); | void path_spec_unwatch(PathSpec *s, Unit *u); | |||
int path_spec_fd_event(PathSpec *s, uint32_t events); | int path_spec_fd_event(PathSpec *s, uint32_t events); | |||
void path_spec_done(PathSpec *s); | void path_spec_done(PathSpec *s); | |||
static inline bool path_spec_owns_inotify_fd(PathSpec *s, int fd) { | static inline bool path_spec_owns_inotify_fd(PathSpec *s, int fd) { | |||
return s->inotify_fd == fd; | return s->inotify_fd == fd; | |||
} | } | |||
struct Path { | struct Path { | |||
Meta meta; | Unit meta; | |||
LIST_HEAD(PathSpec, specs); | LIST_HEAD(PathSpec, specs); | |||
UnitRef unit; | UnitRef unit; | |||
PathState state, deserialized_state; | PathState state, deserialized_state; | |||
bool failure; | bool failure; | |||
bool inotify_triggered; | bool inotify_triggered; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
sd-id128.h | sd-id128.h | |||
---|---|---|---|---|
skipping to change at line 29 | skipping to change at line 29 | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <inttypes.h> | #include <inttypes.h> | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include <string.h> | #include <string.h> | |||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
typedef union sd_id128 sd_id128_t; | typedef union sd_id128 sd_id128_t; | |||
union sd_id128 { | union sd_id128 { | |||
uint8_t bytes[16]; | uint8_t bytes[16]; | |||
uint64_t qwords[2]; | uint64_t qwords[2]; | |||
}; | }; | |||
char *sd_id128_to_string(sd_id128_t id, char s[33]); | char *sd_id128_to_string(sd_id128_t id, char s[33]); | |||
int sd_id128_from_string(const char s[33], sd_id128_t *ret); | int sd_id128_from_string(const char s[33], sd_id128_t *ret); | |||
skipping to change at line 61 | skipping to change at line 65 | |||
* times. It is hence not a good idea to call this macro with an | * times. It is hence not a good idea to call this macro with an | |||
* expensive function as paramater or an expression with side | * expensive function as paramater or an expression with side | |||
* effects */ | * effects */ | |||
#define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%0 2x%02x%02x%02x%02x" | #define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%0 2x%02x%02x%02x%02x" | |||
#define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x ).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).byt es[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes [13], (x).bytes[14], (x).bytes[15] | #define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x ).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).byt es[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes [13], (x).bytes[14], (x).bytes[15] | |||
static inline bool sd_id128_equal(sd_id128_t a, sd_id128_t b) { | static inline bool sd_id128_equal(sd_id128_t a, sd_id128_t b) { | |||
return memcmp(&a, &b, 16) == 0; | return memcmp(&a, &b, 16) == 0; | |||
} | } | |||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 8 lines changed or added | |||
sd-journal.h | sd-journal.h | |||
---|---|---|---|---|
skipping to change at line 32 | skipping to change at line 32 | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <inttypes.h> | #include <inttypes.h> | |||
#include <sys/types.h> | #include <sys/types.h> | |||
#include <stdarg.h> | #include <stdarg.h> | |||
#include <sys/uio.h> | #include <sys/uio.h> | |||
#include <systemd/sd-id128.h> | #include <systemd/sd-id128.h> | |||
/* TODO: | #ifdef __cplusplus | |||
* | extern "C" { | |||
* - OR of matches is borked... | #endif | |||
* - extend hash tables table as we go | ||||
* - accelerate looking for "all hostnames" and suchlike. | ||||
* - handle incomplete header | ||||
* | ||||
* - kann NTP nicht finden? | ||||
* | ||||
* - local deserializer | ||||
* - http server | ||||
* - message catalog | ||||
* | ||||
* - check LE/BE conversion for 8bit, 16bit, 32bit values | ||||
* - cryptographic hash | ||||
* - think about manipulations of header | ||||
* - implement audit gateway | ||||
*/ | ||||
/* Write to daemon */ | /* Write to daemon */ | |||
int sd_journal_print(int piority, const char *format, ...) __attribute__ (( format (printf, 2, 3))); | int sd_journal_print(int piority, const char *format, ...) __attribute__ (( format (printf, 2, 3))); | |||
int sd_journal_printv(int priority, const char *format, va_list ap); | int sd_journal_printv(int priority, const char *format, va_list ap); | |||
int sd_journal_send(const char *format, ...) __attribute__((sentinel)); | int sd_journal_send(const char *format, ...) __attribute__((sentinel)); | |||
int sd_journal_sendv(const struct iovec *iov, int n); | int sd_journal_sendv(const struct iovec *iov, int n); | |||
int sd_journal_stream_fd(const char *identifier, int priority, int level_pr efix); | int sd_journal_stream_fd(const char *identifier, int priority, int level_pr efix); | |||
skipping to change at line 125 | skipping to change at line 110 | |||
#define SD_JOURNAL_FOREACH_BACKWARDS(j) \ | #define SD_JOURNAL_FOREACH_BACKWARDS(j) \ | |||
if (sd_journal_seek_tail(j) >= 0) \ | if (sd_journal_seek_tail(j) >= 0) \ | |||
while (sd_journal_previous(j) > 0) | while (sd_journal_previous(j) > 0) | |||
#define SD_JOURNAL_FOREACH_DATA(j, data, l) \ | #define SD_JOURNAL_FOREACH_DATA(j, data, l) \ | |||
for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(d ata), &(l)) > 0; ) | for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(d ata), &(l)) > 0; ) | |||
#define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \ | #define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \ | |||
for (sd_journal_restart_unique(j); sd_journal_enumerate_data((j), & (data), &(l)) > 0; ) | for (sd_journal_restart_unique(j); sd_journal_enumerate_data((j), & (data), &(l)) > 0; ) | |||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
18 lines changed or deleted | 7 lines changed or added | |||
sd-login.h | sd-login.h | |||
---|---|---|---|---|
skipping to change at line 27 | skipping to change at line 27 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <sys/types.h> | #include <sys/types.h> | |||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
/* | /* | |||
* A few points: | * A few points: | |||
* | * | |||
* Instead of returning an empty string array or empty uid array, we | * Instead of returning an empty string array or empty uid array, we | |||
* may return NULL. | * may return NULL. | |||
* | * | |||
* Free the data we return with libc free(). | * Free the data we return with libc free(). | |||
* | * | |||
* We return error codes as negative errno, kernel-style. 0 or | * We return error codes as negative errno, kernel-style. 0 or | |||
* positive on success. | * positive on success. | |||
skipping to change at line 128 | skipping to change at line 132 | |||
/* Destroys the passed monitor. Returns NULL. */ | /* Destroys the passed monitor. Returns NULL. */ | |||
sd_login_monitor* sd_login_monitor_unref(sd_login_monitor *m); | sd_login_monitor* sd_login_monitor_unref(sd_login_monitor *m); | |||
/* Flushes the monitor */ | /* Flushes the monitor */ | |||
int sd_login_monitor_flush(sd_login_monitor *m); | int sd_login_monitor_flush(sd_login_monitor *m); | |||
/* Get FD from monitor */ | /* Get FD from monitor */ | |||
int sd_login_monitor_get_fd(sd_login_monitor *m); | int sd_login_monitor_get_fd(sd_login_monitor *m); | |||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 8 lines changed or added | |||
sd-messages.h | sd-messages.h | |||
---|---|---|---|---|
skipping to change at line 27 | skipping to change at line 27 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <systemd/sd-id128.h> | #include <systemd/sd-id128.h> | |||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
#define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be ,5f,69,40,50,5a,77,7b) | #define SD_MESSAGE_JOURNAL_START SD_ID128_MAKE(f7,73,79,a8,49,0b,40,8b,be ,5f,69,40,50,5a,77,7b) | |||
#define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97 ,ce,a6,15,ce,59,c0,0b) | #define SD_MESSAGE_JOURNAL_STOP SD_ID128_MAKE(d9,3f,b3,c9,c2,4d,45,1a,97 ,ce,a6,15,ce,59,c0,0b) | |||
#define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82 ,8e,72,30,9e,95,d6,1e) | #define SD_MESSAGE_JOURNAL_DROPPED SD_ID128_MAKE(a5,96,d6,fe,7b,fa,49,94,82 ,8e,72,30,9e,95,d6,1e) | |||
#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9 | ||||
,07,29,ab,34,a2,50,b1) | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||
#endif | #endif | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 11 lines changed or added | |||
service.h | service.h | |||
---|---|---|---|---|
skipping to change at line 92 | skipping to change at line 92 | |||
typedef enum NotifyAccess { | typedef enum NotifyAccess { | |||
NOTIFY_NONE, | NOTIFY_NONE, | |||
NOTIFY_ALL, | NOTIFY_ALL, | |||
NOTIFY_MAIN, | NOTIFY_MAIN, | |||
_NOTIFY_ACCESS_MAX, | _NOTIFY_ACCESS_MAX, | |||
_NOTIFY_ACCESS_INVALID = -1 | _NOTIFY_ACCESS_INVALID = -1 | |||
} NotifyAccess; | } NotifyAccess; | |||
struct Service { | struct Service { | |||
Meta meta; | Unit meta; | |||
ServiceType type; | ServiceType type; | |||
ServiceRestart restart; | ServiceRestart restart; | |||
/* If set we'll read the main daemon PID from this file */ | /* If set we'll read the main daemon PID from this file */ | |||
char *pid_file; | char *pid_file; | |||
usec_t restart_usec; | usec_t restart_usec; | |||
usec_t timeout_usec; | usec_t timeout_usec; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
snapshot.h | snapshot.h | |||
---|---|---|---|---|
skipping to change at line 37 | skipping to change at line 37 | |||
#include "unit.h" | #include "unit.h" | |||
typedef enum SnapshotState { | typedef enum SnapshotState { | |||
SNAPSHOT_DEAD, | SNAPSHOT_DEAD, | |||
SNAPSHOT_ACTIVE, | SNAPSHOT_ACTIVE, | |||
_SNAPSHOT_STATE_MAX, | _SNAPSHOT_STATE_MAX, | |||
_SNAPSHOT_STATE_INVALID = -1 | _SNAPSHOT_STATE_INVALID = -1 | |||
} SnapshotState; | } SnapshotState; | |||
struct Snapshot { | struct Snapshot { | |||
Meta meta; | Unit meta; | |||
SnapshotState state, deserialized_state; | SnapshotState state, deserialized_state; | |||
bool cleanup; | bool cleanup; | |||
bool by_snapshot_create:1; | bool by_snapshot_create:1; | |||
}; | }; | |||
extern const UnitVTable snapshot_vtable; | extern const UnitVTable snapshot_vtable; | |||
int snapshot_create(Manager *m, const char *name, bool cleanup, DBusError * e, Snapshot **s); | int snapshot_create(Manager *m, const char *name, bool cleanup, DBusError * e, Snapshot **s); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
socket.h | socket.h | |||
---|---|---|---|---|
skipping to change at line 80 | skipping to change at line 80 | |||
int fd; | int fd; | |||
SocketAddress address; | SocketAddress address; | |||
char *path; | char *path; | |||
Watch fd_watch; | Watch fd_watch; | |||
LIST_FIELDS(struct SocketPort, port); | LIST_FIELDS(struct SocketPort, port); | |||
} SocketPort; | } SocketPort; | |||
struct Socket { | struct Socket { | |||
Meta meta; | Unit meta; | |||
LIST_HEAD(SocketPort, ports); | LIST_HEAD(SocketPort, ports); | |||
unsigned n_accepted; | unsigned n_accepted; | |||
unsigned n_connections; | unsigned n_connections; | |||
unsigned max_connections; | unsigned max_connections; | |||
unsigned backlog; | unsigned backlog; | |||
usec_t timeout_usec; | usec_t timeout_usec; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
swap.h | swap.h | |||
---|---|---|---|---|
skipping to change at line 60 | skipping to change at line 60 | |||
typedef struct SwapParameters { | typedef struct SwapParameters { | |||
char *what; | char *what; | |||
int priority; | int priority; | |||
bool noauto:1; | bool noauto:1; | |||
bool nofail:1; | bool nofail:1; | |||
bool handle:1; | bool handle:1; | |||
} SwapParameters; | } SwapParameters; | |||
struct Swap { | struct Swap { | |||
Meta meta; | Unit meta; | |||
char *what; | char *what; | |||
SwapParameters parameters_etc_fstab; | SwapParameters parameters_etc_fstab; | |||
SwapParameters parameters_proc_swaps; | SwapParameters parameters_proc_swaps; | |||
SwapParameters parameters_fragment; | SwapParameters parameters_fragment; | |||
bool from_etc_fstab:1; | bool from_etc_fstab:1; | |||
bool from_proc_swaps:1; | bool from_proc_swaps:1; | |||
bool from_fragment:1; | bool from_fragment:1; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
target.h | target.h | |||
---|---|---|---|---|
skipping to change at line 37 | skipping to change at line 37 | |||
#include "unit.h" | #include "unit.h" | |||
typedef enum TargetState { | typedef enum TargetState { | |||
TARGET_DEAD, | TARGET_DEAD, | |||
TARGET_ACTIVE, | TARGET_ACTIVE, | |||
_TARGET_STATE_MAX, | _TARGET_STATE_MAX, | |||
_TARGET_STATE_INVALID = -1 | _TARGET_STATE_INVALID = -1 | |||
} TargetState; | } TargetState; | |||
struct Target { | struct Target { | |||
Meta meta; | Unit meta; | |||
TargetState state, deserialized_state; | TargetState state, deserialized_state; | |||
}; | }; | |||
extern const UnitVTable target_vtable; | extern const UnitVTable target_vtable; | |||
const char* target_state_to_string(TargetState i); | const char* target_state_to_string(TargetState i); | |||
TargetState target_state_from_string(const char *s); | TargetState target_state_from_string(const char *s); | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
timer.h | timer.h | |||
---|---|---|---|---|
skipping to change at line 60 | skipping to change at line 60 | |||
usec_t value; | usec_t value; | |||
usec_t next_elapse; | usec_t next_elapse; | |||
LIST_FIELDS(struct TimerValue, value); | LIST_FIELDS(struct TimerValue, value); | |||
TimerBase base; | TimerBase base; | |||
bool disabled; | bool disabled; | |||
} TimerValue; | } TimerValue; | |||
struct Timer { | struct Timer { | |||
Meta meta; | Unit meta; | |||
LIST_HEAD(TimerValue, values); | LIST_HEAD(TimerValue, values); | |||
usec_t next_elapse; | usec_t next_elapse; | |||
TimerState state, deserialized_state; | TimerState state, deserialized_state; | |||
UnitRef unit; | UnitRef unit; | |||
Watch timer_watch; | Watch timer_watch; | |||
bool failure; | bool failure; | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
unit.h | unit.h | |||
---|---|---|---|---|
skipping to change at line 28 | skipping to change at line 28 | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
General Public License for more details. | 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 General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include <stdlib.h> | #include <stdlib.h> | |||
typedef union Unit Unit; | typedef struct Unit Unit; | |||
typedef struct Meta Meta; | ||||
typedef struct UnitVTable UnitVTable; | typedef struct UnitVTable UnitVTable; | |||
typedef enum UnitType UnitType; | typedef enum UnitType UnitType; | |||
typedef enum UnitLoadState UnitLoadState; | typedef enum UnitLoadState UnitLoadState; | |||
typedef enum UnitActiveState UnitActiveState; | typedef enum UnitActiveState UnitActiveState; | |||
typedef enum UnitDependency UnitDependency; | typedef enum UnitDependency UnitDependency; | |||
typedef struct UnitRef UnitRef; | typedef struct UnitRef UnitRef; | |||
#include "set.h" | #include "set.h" | |||
#include "util.h" | #include "util.h" | |||
#include "list.h" | #include "list.h" | |||
skipping to change at line 144 | skipping to change at line 143 | |||
_UNIT_DEPENDENCY_MAX, | _UNIT_DEPENDENCY_MAX, | |||
_UNIT_DEPENDENCY_INVALID = -1 | _UNIT_DEPENDENCY_INVALID = -1 | |||
}; | }; | |||
#include "manager.h" | #include "manager.h" | |||
#include "job.h" | #include "job.h" | |||
#include "cgroup.h" | #include "cgroup.h" | |||
#include "cgroup-attr.h" | #include "cgroup-attr.h" | |||
struct Meta { | struct Unit { | |||
Manager *manager; | Manager *manager; | |||
UnitType type; | UnitType type; | |||
UnitLoadState load_state; | UnitLoadState load_state; | |||
Unit *merged_into; | Unit *merged_into; | |||
char *id; /* One name is special because we use it for identificati on. Points to an entry in the names set */ | char *id; /* One name is special because we use it for identificati on. Points to an entry in the names set */ | |||
char *instance; | char *instance; | |||
Set *names; | Set *names; | |||
skipping to change at line 186 | skipping to change at line 185 | |||
dual_timestamp inactive_exit_timestamp; | dual_timestamp inactive_exit_timestamp; | |||
dual_timestamp active_enter_timestamp; | dual_timestamp active_enter_timestamp; | |||
dual_timestamp active_exit_timestamp; | dual_timestamp active_exit_timestamp; | |||
dual_timestamp inactive_enter_timestamp; | dual_timestamp inactive_enter_timestamp; | |||
/* Counterparts in the cgroup filesystem */ | /* Counterparts in the cgroup filesystem */ | |||
CGroupBonding *cgroup_bondings; | CGroupBonding *cgroup_bondings; | |||
CGroupAttribute *cgroup_attributes; | CGroupAttribute *cgroup_attributes; | |||
/* Per type list */ | /* Per type list */ | |||
LIST_FIELDS(Meta, units_by_type); | LIST_FIELDS(Unit, units_by_type); | |||
/* Load queue */ | /* Load queue */ | |||
LIST_FIELDS(Meta, load_queue); | LIST_FIELDS(Unit, load_queue); | |||
/* D-Bus queue */ | /* D-Bus queue */ | |||
LIST_FIELDS(Meta, dbus_queue); | LIST_FIELDS(Unit, dbus_queue); | |||
/* Cleanup queue */ | /* Cleanup queue */ | |||
LIST_FIELDS(Meta, cleanup_queue); | LIST_FIELDS(Unit, cleanup_queue); | |||
/* GC queue */ | /* GC queue */ | |||
LIST_FIELDS(Meta, gc_queue); | LIST_FIELDS(Unit, gc_queue); | |||
/* Used during GC sweeps */ | /* Used during GC sweeps */ | |||
unsigned gc_marker; | unsigned gc_marker; | |||
/* When deserializing, temporarily store the job type for this | /* 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 */ | |||
int deserialized_job; /* This is actually of type JobType */ | int deserialized_job; /* This is actually of type JobType */ | |||
/* Error code when we didn't manage to load the unit (negative) */ | /* Error code when we didn't manage to load the unit (negative) */ | |||
int load_error; | int load_error; | |||
skipping to change at line 272 | skipping to change at line 271 | |||
#include "timer.h" | #include "timer.h" | |||
#include "socket.h" | #include "socket.h" | |||
#include "target.h" | #include "target.h" | |||
#include "device.h" | #include "device.h" | |||
#include "mount.h" | #include "mount.h" | |||
#include "automount.h" | #include "automount.h" | |||
#include "snapshot.h" | #include "snapshot.h" | |||
#include "swap.h" | #include "swap.h" | |||
#include "path.h" | #include "path.h" | |||
union Unit { | ||||
Meta meta; | ||||
Service service; | ||||
Timer timer; | ||||
Socket socket; | ||||
Target target; | ||||
Device device; | ||||
Mount mount; | ||||
Automount automount; | ||||
Snapshot snapshot; | ||||
Swap swap; | ||||
Path path; | ||||
}; | ||||
struct UnitVTable { | struct UnitVTable { | |||
const char *suffix; | const char *suffix; | |||
/* How much memory does an object of this unit type need */ | ||||
size_t object_size; | ||||
/* Config file sections this unit type understands, separated | /* Config file sections this unit type understands, separated | |||
* by NUL chars */ | * by NUL chars */ | |||
const char *sections; | const char *sections; | |||
/* This should reset all type-specific variables. This should | /* This should reset all type-specific variables. This should | |||
* not allocate memory, and is called with zero-initialized | * not allocate memory, and is called with zero-initialized | |||
* data. It should hence only initialize variables that need | * data. It should hence only initialize variables that need | |||
* to be set != 0. */ | * to be set != 0. */ | |||
void (*init)(Unit *u); | void (*init)(Unit *u); | |||
skipping to change at line 413 | skipping to change at line 401 | |||
/* Exclude from automatic gc */ | /* Exclude from automatic gc */ | |||
bool no_gc:1; | bool no_gc:1; | |||
/* Show status updates on the console */ | /* Show status updates on the console */ | |||
bool show_status:1; | bool show_status:1; | |||
}; | }; | |||
extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX]; | extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX]; | |||
#define UNIT_VTABLE(u) unit_vtable[(u)->meta.type] | #define UNIT_VTABLE(u) unit_vtable[(u)->type] | |||
/* For casting a unit into the various unit types */ | /* For casting a unit into the various unit types */ | |||
#define DEFINE_CAST(UPPERCASE, MixedCase) \ | #define DEFINE_CAST(UPPERCASE, MixedCase) \ | |||
static inline MixedCase* UPPERCASE(Unit *u) { \ | static inline MixedCase* UPPERCASE(Unit *u) { \ | |||
if (_unlikely_(!u || u->meta.type != UNIT_##UPPERCASE)) \ | if (_unlikely_(!u || u->type != UNIT_##UPPERCASE)) \ | |||
return NULL; \ | return NULL; \ | |||
\ | \ | |||
return (MixedCase*) u; \ | return (MixedCase*) u; \ | |||
} | } | |||
/* For casting the various unit types into a unit */ | /* For casting the various unit types into a unit */ | |||
#define UNIT(u) ((Unit*) (&(u)->meta)) | #define UNIT(u) (&(u)->meta) | |||
DEFINE_CAST(SOCKET, Socket); | DEFINE_CAST(SOCKET, Socket); | |||
DEFINE_CAST(TIMER, Timer); | DEFINE_CAST(TIMER, Timer); | |||
DEFINE_CAST(SERVICE, Service); | DEFINE_CAST(SERVICE, Service); | |||
DEFINE_CAST(TARGET, Target); | DEFINE_CAST(TARGET, Target); | |||
DEFINE_CAST(DEVICE, Device); | DEFINE_CAST(DEVICE, Device); | |||
DEFINE_CAST(MOUNT, Mount); | DEFINE_CAST(MOUNT, Mount); | |||
DEFINE_CAST(AUTOMOUNT, Automount); | DEFINE_CAST(AUTOMOUNT, Automount); | |||
DEFINE_CAST(SNAPSHOT, Snapshot); | DEFINE_CAST(SNAPSHOT, Snapshot); | |||
DEFINE_CAST(SWAP, Swap); | DEFINE_CAST(SWAP, Swap); | |||
DEFINE_CAST(PATH, Path); | DEFINE_CAST(PATH, Path); | |||
Unit *unit_new(Manager *m); | Unit *unit_new(Manager *m, size_t size); | |||
void unit_free(Unit *u); | void unit_free(Unit *u); | |||
int unit_add_name(Unit *u, const char *name); | int unit_add_name(Unit *u, const char *name); | |||
int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_re ference); | int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_re ference); | |||
int unit_add_two_dependencies(Unit *u, UnitDependency d, UnitDependency e, Unit *other, bool add_reference); | int unit_add_two_dependencies(Unit *u, UnitDependency d, UnitDependency e, Unit *other, bool add_reference); | |||
int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name , const char *filename, bool add_reference); | int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name , const char *filename, bool add_reference); | |||
int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDepend ency e, const char *name, const char *path, bool add_reference); | int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDepend ency e, const char *name, const char *path, bool add_reference); | |||
End of changes. 13 change blocks. | ||||
26 lines changed or deleted | 14 lines changed or added | |||
util.h | util.h | |||
---|---|---|---|---|
skipping to change at line 70 | skipping to change at line 70 | |||
/* What is interpreted as whitespace? */ | /* What is interpreted as whitespace? */ | |||
#define WHITESPACE " \t\n\r" | #define WHITESPACE " \t\n\r" | |||
#define NEWLINE "\n\r" | #define NEWLINE "\n\r" | |||
#define QUOTES "\"\'" | #define QUOTES "\"\'" | |||
#define COMMENTS "#;\n" | #define COMMENTS "#;\n" | |||
#define FORMAT_TIMESTAMP_MAX 64 | #define FORMAT_TIMESTAMP_MAX 64 | |||
#define FORMAT_TIMESTAMP_PRETTY_MAX 256 | #define FORMAT_TIMESTAMP_PRETTY_MAX 256 | |||
#define FORMAT_TIMESPAN_MAX 64 | #define FORMAT_TIMESPAN_MAX 64 | |||
#define FORMAT_BYTES_MAX 8 | ||||
#define ANSI_HIGHLIGHT_ON "\x1B[1;31m" | #define ANSI_HIGHLIGHT_ON "\x1B[1;39m" | |||
#define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m" | ||||
#define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" | #define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" | |||
#define ANSI_HIGHLIGHT_OFF "\x1B[0m" | #define ANSI_HIGHLIGHT_OFF "\x1B[0m" | |||
usec_t now(clockid_t clock); | usec_t now(clockid_t clock); | |||
dual_timestamp* dual_timestamp_get(dual_timestamp *ts); | dual_timestamp* dual_timestamp_get(dual_timestamp *ts); | |||
dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u); | dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u); | |||
#define dual_timestamp_is_set(ts) ((ts)->realtime > 0) | #define dual_timestamp_is_set(ts) ((ts)->realtime > 0) | |||
skipping to change at line 328 | skipping to change at line 330 | |||
int fd_nonblock(int fd, bool nonblock); | int fd_nonblock(int fd, bool nonblock); | |||
int fd_cloexec(int fd, bool cloexec); | int fd_cloexec(int fd, bool cloexec); | |||
int close_all_fds(const int except[], unsigned n_except); | int close_all_fds(const int except[], unsigned n_except); | |||
bool fstype_is_network(const char *fstype); | bool fstype_is_network(const char *fstype); | |||
int chvt(int vt); | int chvt(int vt); | |||
int read_one_char(FILE *f, char *ret, bool *need_nl); | int read_one_char(FILE *f, char *ret, usec_t timeout, bool *need_nl); | |||
int ask(char *ret, const char *replies, const char *text, ...); | int ask(char *ret, const char *replies, const char *text, ...); | |||
int reset_terminal_fd(int fd); | int reset_terminal_fd(int fd); | |||
int reset_terminal(const char *name); | int reset_terminal(const char *name); | |||
int open_terminal(const char *name, int mode); | int open_terminal(const char *name, int mode); | |||
int acquire_terminal(const char *name, bool fail, bool force, bool ignore_t iocstty_eperm); | int acquire_terminal(const char *name, bool fail, bool force, bool ignore_t iocstty_eperm); | |||
int release_terminal(void); | int release_terminal(void); | |||
int flush_fd(int fd); | int flush_fd(int fd); | |||
skipping to change at line 385 | skipping to change at line 387 | |||
cpu_set_t* cpu_set_malloc(unsigned *ncpus); | cpu_set_t* cpu_set_malloc(unsigned *ncpus); | |||
void status_vprintf(const char *status, bool ellipse, const char *format, v a_list ap); | void status_vprintf(const char *status, bool ellipse, const char *format, v a_list ap); | |||
void status_printf(const char *status, bool ellipse, const char *format, .. .); | void status_printf(const char *status, bool ellipse, const char *format, .. .); | |||
void status_welcome(void); | void status_welcome(void); | |||
int fd_columns(int fd); | int fd_columns(int fd); | |||
unsigned columns(void); | unsigned columns(void); | |||
int fd_lines(int fd); | ||||
unsigned lines(void); | ||||
int running_in_chroot(void); | int running_in_chroot(void); | |||
char *ellipsize(const char *s, size_t length, unsigned percent); | char *ellipsize(const char *s, size_t length, unsigned percent); | |||
char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, un signed percent); | char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, un signed percent); | |||
int touch(const char *path); | int touch(const char *path); | |||
char *unquote(const char *s, const char *quotes); | char *unquote(const char *s, const char *quotes); | |||
char *normalize_env_assignment(const char *s); | char *normalize_env_assignment(const char *s); | |||
skipping to change at line 413 | skipping to change at line 418 | |||
DIR *xopendirat(int dirfd, const char *name, int flags); | DIR *xopendirat(int dirfd, const char *name, int flags); | |||
void dual_timestamp_serialize(FILE *f, const char *name, dual_timestamp *t) ; | void dual_timestamp_serialize(FILE *f, const char *name, dual_timestamp *t) ; | |||
void dual_timestamp_deserialize(const char *value, dual_timestamp *t); | void dual_timestamp_deserialize(const char *value, dual_timestamp *t); | |||
char *fstab_node_to_udev_node(const char *p); | char *fstab_node_to_udev_node(const char *p); | |||
void filter_environ(const char *prefix); | void filter_environ(const char *prefix); | |||
bool tty_is_vc(const char *tty); | bool tty_is_vc(const char *tty); | |||
bool tty_is_vc_resolve(const char *tty); | ||||
int vtnr_from_tty(const char *tty); | int vtnr_from_tty(const char *tty); | |||
const char *default_term_for_tty(const char *tty); | const char *default_term_for_tty(const char *tty); | |||
void execute_directory(const char *directory, DIR *_d, char *argv[]); | void execute_directory(const char *directory, DIR *_d, char *argv[]); | |||
int kill_and_sigcont(pid_t pid, int sig); | int kill_and_sigcont(pid_t pid, int sig); | |||
bool nulstr_contains(const char*nulstr, const char *needle); | bool nulstr_contains(const char*nulstr, const char *needle); | |||
bool plymouth_running(void); | bool plymouth_running(void); | |||
skipping to change at line 478 | skipping to change at line 484 | |||
int get_files_in_directory(const char *path, char ***list); | int get_files_in_directory(const char *path, char ***list); | |||
char *join(const char *x, ...) _sentinel_; | char *join(const char *x, ...) _sentinel_; | |||
bool is_main_thread(void); | bool is_main_thread(void); | |||
bool in_charset(const char *s, const char* charset); | bool in_charset(const char *s, const char* charset); | |||
int block_get_whole_disk(dev_t d, dev_t *ret); | int block_get_whole_disk(dev_t d, dev_t *ret); | |||
int file_is_sticky(const char *p); | int file_is_priv_sticky(const char *p); | |||
int strdup_or_null(const char *a, char **b); | int strdup_or_null(const char *a, char **b); | |||
#define NULSTR_FOREACH(i, l) \ | #define NULSTR_FOREACH(i, l) \ | |||
for ((i) = (l); (i) && *(i); (i) = strchr((i), 0)+1) | for ((i) = (l); (i) && *(i); (i) = strchr((i), 0)+1) | |||
#define NULSTR_FOREACH_PAIR(i, j, l) \ | #define NULSTR_FOREACH_PAIR(i, j, l) \ | |||
for ((i) = (l), (j) = strchr((i), 0)+1; (i) && *(i); (i) = strchr(( j), 0)+1, (j) = *(i) ? strchr((i), 0)+1 : (i)) | for ((i) = (l), (j) = strchr((i), 0)+1; (i) && *(i); (i) = strchr(( j), 0)+1, (j) = *(i) ? strchr((i), 0)+1 : (i)) | |||
const char *ioprio_class_to_string(int i); | const char *ioprio_class_to_string(int i); | |||
skipping to change at line 525 | skipping to change at line 531 | |||
extern char **saved_argv; | extern char **saved_argv; | |||
bool kexec_loaded(void); | bool kexec_loaded(void); | |||
int prot_from_flags(int flags); | int prot_from_flags(int flags); | |||
unsigned long cap_last_cap(void); | unsigned long cap_last_cap(void); | |||
char *format_bytes(char *buf, size_t l, off_t t); | char *format_bytes(char *buf, size_t l, off_t t); | |||
int fd_wait_for_event(int fd, int event); | int fd_wait_for_event(int fd, int event, usec_t timeout); | |||
void* memdup(const void *p, size_t l); | void* memdup(const void *p, size_t l); | |||
int rtc_open(int flags); | ||||
int is_kernel_thread(pid_t pid); | ||||
#endif | #endif | |||
End of changes. 8 change blocks. | ||||
4 lines changed or deleted | 14 lines changed or added | |||