chiark / gitweb /
systemctl: make upstart glue code talk to upstart via private abstarct bus and verify...
[elogind.git] / src / unit.h
index 1f8874f4cc41058bdce74c62a22b0b78020b830d..fb158d511d398a7c36febc5fc67cf4c190f3f2d6 100644 (file)
@@ -286,7 +286,7 @@ struct UnitVTable {
         void (*cgroup_notify_empty)(Unit *u);
 
         /* Called whenever a process of this unit sends us a message */
-        void (*notify_message)(Unit *u, char **tags);
+        void (*notify_message)(Unit *u, pid_t pid, char **tags);
 
         /* Called whenever a name thus Unit registered for comes or
          * goes away. */
@@ -296,7 +296,7 @@ struct UnitVTable {
         void (*bus_query_pid_done)(Unit *u, const char *name, pid_t pid);
 
         /* Called for each message received on the bus */
-        DBusHandlerResult (*bus_message_handler)(Unit *u, DBusMessage *message);
+        DBusHandlerResult (*bus_message_handler)(Unit *u, DBusConnection *c, DBusMessage *message);
 
         /* This is called for each unit type and should be used to
          * enumerate existing devices and load them. However,
@@ -336,14 +336,14 @@ extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX];
 /* For casting a unit into the various unit types */
 #define DEFINE_CAST(UPPERCASE, MixedCase)                               \
         static inline MixedCase* UPPERCASE(Unit *u) {                   \
-                if (!u || u->meta.type != UNIT_##UPPERCASE)             \
+                if (_unlikely_(!u || u->meta.type != UNIT_##UPPERCASE)) \
                         return NULL;                                    \
                                                                         \
                 return (MixedCase*) u;                                  \
         }
 
 /* For casting the various unit types into a unit */
-#define UNIT(u) ((Unit*) (u))
+#define UNIT(u) ((Unit*) (&(u)->meta))
 
 DEFINE_CAST(SOCKET, Socket);
 DEFINE_CAST(TIMER, Timer);