Commit Graph

21 Commits

Author SHA1 Message Date
Kay Sievers b30e2f4c18 move libsystemd_core.la sources into core/ 2012-04-11 16:03:51 +02:00
Michal Schmidt d200735e13 dbus: more efficient implementation of properties
The way the various properties[] arrays are initialized is inefficient:
 - only the .data members change at runtime, yet the whole arrays of
   properties with all the fields are constructed on the stack one by
   one by the code.
 - there's duplication, eg. the properties of "org.freedesktop.systemd1.Unit"
   are repeated in several unit types.

Fix it by moving the information about properties into static const
sections. Instead of storing the .data directly in the property, store
a constant offset from a run-time base.
The small arrays of struct BusBoundProperties bind together the constant
information with the right runtime information (the base pointer).

On my system the code shrinks by 60 KB, data increases by 10 KB.
2012-01-16 13:34:42 +01:00
Michal Schmidt ac155bb885 unit: remove union Unit
Now that objects of all unit types are allocated the exact amount of
memory they need, the Unit union has lost its purpose. Remove it.

"Unit" is a more natural name for the base unit class than "Meta", so
rename Meta to Unit.

Access to members of the base class gets simplified.
2012-01-16 13:34:42 +01:00
Lennart Poettering bfebab7f69 dbus: split out object management code into dbus-common, and simplify it 2011-04-16 02:03:35 +02:00
Andrey Borzenkov b8a021c9e2 dbus: fix dbus assert due to uninitialized error
Add missing dbus_error_init() in UNKNOWN_OBJECT case. Fixes assertion

systemd[1]: Caught <ABRT>, dumped core as pid 6256.
systemd[1]: Freezing execution.

Core was generated by `/bin/systemd systemd.unit=graphical.target'.
Program terminated with signal 6, Aborted.
#0  0x00007f8966ec81db in raise () from /lib64/libpthread.so.0
(gdb) bt
#0  0x00007f8966ec81db in raise () from /lib64/libpthread.so.0
#1  0x000000000040823b in crash (sig=6) at src/main.c:120
#2  <signal handler called>
#3  0x00007f896613c075 in raise () from /lib64/libc.so.6
#4  0x00007f896613d806 in abort () from /lib64/libc.so.6
#5  0x00007f89672ac8a5 in _dbus_abort () at dbus-sysdeps.c:94
#6  0x00007f89672a37b5 in _dbus_warn_check_failed (
   format=0x7f89672b35d8 "arguments to %s() were incorrect, assertion
\"%s\" failed in file %s line %d.\nThis is normally a bug in some
application using the D-Bus library.\n") at dbus-internals.c:289
#7  0x0000000000441500 in bus_unit_message_handler (connection=0x21b6090,
   message=0x21b6760, data=0x1f3e870) at src/dbus-unit.c:572
#8  0x00007f8967299f11 in _dbus_object_tree_dispatch_and_unlock (
   tree=0x219d660, message=0x21b6760) at dbus-object-tree.c:858
#9  0x00007f896728bca2 in dbus_connection_dispatch (connection=0x21b6090)
   at dbus-connection.c:4688
#10 0x000000000043befa in bus_dispatch (m=0x1f3e870) at src/dbus.c:547
#11 0x000000000041056d in manager_loop (m=0x1f3e870) at src/manager.c:2344
#12 0x0000000000409515 in main (argc=<value optimized out>,
   argv=<value optimized out>) at src/main.c:1229
2011-03-09 20:03:29 +01:00
Lennart Poettering 05feefe0fb dbus: properly generate UnknownInterface, UnknownProperty and PropertyReadOnly errors 2011-03-09 20:01:53 +01:00
Lennart Poettering 34df5a34e1 drop unnecessary suffix NULs as gcc adds them anyway 2011-03-09 19:48:02 +01:00
Lennart Poettering 08672cb507 dbus: return DBUS_ERROR_UNKNOWN_OBJECT when an object is unknown 2011-03-08 02:27:43 +01:00
Lennart Poettering c77bc38d28 job: when cancelling jobs, make sure to propagate this properly to depending jobs 2011-02-24 03:23:14 +01:00
Lennart Poettering 5d44db4a90 dbus: pass along information why a job failed when it failed (dbus api change!) 2011-02-24 02:36:34 +01:00
Thierry Reding 9a60da2834 build-sys: allow cross-compilation
When cross-compiling systemd, the introspection XML files fail to be
generated because the systemd host binary is not executable. This patch
works around this by putting the introspection XML data into separate
ELF sections and extracting them from the binary when generating the XML
files.

The extracted XML data is passed through the strings utility in order to
strip the trailing NUL character. A small AWK script is used to prepend
the doctype and add the opening and closing node tags respectively.
Finally, the C preprocessor is used to substitute the correct doctype
information from the D-Bus header files.
2010-11-23 22:38:55 +01:00
Lennart Poettering 2cccbca4fd dbus: add introspection to midlevel paths 2010-10-13 03:03:31 +02:00
Lennart Poettering c4e2ceae94 dbus: follow standardized fdo PropertiesChanged signal spec 2010-08-20 02:31:54 +02:00
Lennart Poettering d6c9574fb5 emacs: make sure nobody accidently adds tabs to our sources 2010-08-14 19:59:25 +02:00
Lennart Poettering c0bd0cf7ff dbus: don't hit an assert if we sent a changed signal for something not in the dbus queue (i.e. because it was deleted before it was fully created 2010-07-11 03:59:59 +02:00
Lennart Poettering 46d95c0fe0 dbus: log received message only once, in filter function 2010-07-08 00:27:09 +02:00
Lennart Poettering a567261a29 dbus: send signals about jobs to the clients having created them unconditionally, and thus get rid of broadcast signals in most cases 2010-07-05 00:58:07 +02:00
Lennart Poettering 5e8d1c9a9f dbus: to make sure that systemd stays controllable during early bootup, register our services on our own micro usb server in addition to the bus 2010-06-19 03:04:04 +02:00
Lennart Poettering 4288f61921 dbus: automatically generate and install introspection files 2010-05-23 03:45:33 +02:00
Lennart Poettering 7535cc788e systemctl: add --block switch for synchronous starting of units 2010-05-22 04:27:24 +02:00
Lennart Poettering e99e38bbdc build-sys: move source files to subdirectory 2010-05-16 18:45:24 +02:00
Renamed from dbus-job.c (Browse further)