summaryrefslogtreecommitdiff
path: root/src/shared/bus-errors.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-12-06 02:39:15 +0100
committerLennart Poettering <lennart@poettering.net>2014-12-08 14:55:22 +0100
commit5f86c1f4c43ee9caa120d130e9b89d3fd25124c0 (patch)
tree34908816bfd429ba578f99626eb2deabc1ed631a /src/shared/bus-errors.c
parent8b5e2af10830d55b2032e6c79d0cd1f959bb5b7f (diff)
sd-bus: rework ELF error mapping table magic
The ELF magic cannot work for consumers of our shard library, since they are in a different module. Hence make all the ELF magic private, and instead introduce a public function to register additional static mapping table.
Diffstat (limited to 'src/shared/bus-errors.c')
-rw-r--r--src/shared/bus-errors.c85
1 files changed, 44 insertions, 41 deletions
diff --git a/src/shared/bus-errors.c b/src/shared/bus-errors.c
index b6f65d205b..c347545c71 100644
--- a/src/shared/bus-errors.c
+++ b/src/shared/bus-errors.c
@@ -22,52 +22,55 @@
#include <errno.h>
#include "sd-bus.h"
+#include "bus-error.h"
#include "bus-errors.h"
-SD_BUS_ERROR_MAPPING(systemd_shared) = {
- {BUS_ERROR_NO_SUCH_UNIT, ENOENT},
- {BUS_ERROR_NO_UNIT_FOR_PID, ESRCH},
- {BUS_ERROR_UNIT_EXISTS, EEXIST},
- {BUS_ERROR_LOAD_FAILED, EIO},
- {BUS_ERROR_JOB_FAILED, EREMOTEIO},
- {BUS_ERROR_NO_SUCH_JOB, ENOENT},
- {BUS_ERROR_NOT_SUBSCRIBED, EINVAL},
- {BUS_ERROR_ALREADY_SUBSCRIBED, EINVAL},
- {BUS_ERROR_ONLY_BY_DEPENDENCY, EINVAL},
- {BUS_ERROR_TRANSACTION_JOBS_CONFLICTING, EDEADLOCK},
- {BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC, EDEADLOCK},
- {BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, EDEADLOCK},
- {BUS_ERROR_UNIT_MASKED, ENOSYS},
- {BUS_ERROR_JOB_TYPE_NOT_APPLICABLE, EBADR},
- {BUS_ERROR_NO_ISOLATION, EPERM},
- {BUS_ERROR_SHUTTING_DOWN, ECANCELED},
- {BUS_ERROR_SCOPE_NOT_RUNNING, EHOSTDOWN},
+BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map shared_errors[] = {
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_UNIT, ENOENT),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_UNIT_FOR_PID, ESRCH),
+ SD_BUS_ERROR_MAP(BUS_ERROR_UNIT_EXISTS, EEXIST),
+ SD_BUS_ERROR_MAP(BUS_ERROR_LOAD_FAILED, EIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_JOB_FAILED, EREMOTEIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_JOB, ENOENT),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NOT_SUBSCRIBED, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_ALREADY_SUBSCRIBED, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_ONLY_BY_DEPENDENCY, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_JOBS_CONFLICTING, EDEADLOCK),
+ SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC, EDEADLOCK),
+ SD_BUS_ERROR_MAP(BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, EDEADLOCK),
+ SD_BUS_ERROR_MAP(BUS_ERROR_UNIT_MASKED, ENOSYS),
+ SD_BUS_ERROR_MAP(BUS_ERROR_JOB_TYPE_NOT_APPLICABLE, EBADR),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_ISOLATION, EPERM),
+ SD_BUS_ERROR_MAP(BUS_ERROR_SHUTTING_DOWN, ECANCELED),
+ SD_BUS_ERROR_MAP(BUS_ERROR_SCOPE_NOT_RUNNING, EHOSTDOWN),
- {BUS_ERROR_NO_SUCH_MACHINE, ENXIO},
- {BUS_ERROR_NO_MACHINE_FOR_PID, ENXIO},
- {BUS_ERROR_MACHINE_EXISTS, EEXIST},
- {BUS_ERROR_NO_PRIVATE_NETWORKING, ENOSYS},
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_MACHINE, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_MACHINE_FOR_PID, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_MACHINE_EXISTS, EEXIST),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_PRIVATE_NETWORKING, ENOSYS),
- {BUS_ERROR_NO_SUCH_SESSION, ENXIO},
- {BUS_ERROR_NO_SESSION_FOR_PID, ENXIO},
- {BUS_ERROR_NO_SUCH_USER, ENXIO},
- {BUS_ERROR_NO_USER_FOR_PID, ENXIO},
- {BUS_ERROR_NO_SUCH_SEAT, ENXIO},
- {BUS_ERROR_SESSION_NOT_ON_SEAT, EINVAL},
- {BUS_ERROR_NOT_IN_CONTROL, EINVAL},
- {BUS_ERROR_DEVICE_IS_TAKEN, EINVAL},
- {BUS_ERROR_DEVICE_NOT_TAKEN, EINVAL},
- {BUS_ERROR_OPERATION_IN_PROGRESS, EINPROGRESS},
- {BUS_ERROR_SLEEP_VERB_NOT_SUPPORTED, ENOSYS},
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_SESSION, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SESSION_FOR_PID, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_USER, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_USER_FOR_PID, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_SEAT, ENXIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_SESSION_NOT_ON_SEAT, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NOT_IN_CONTROL, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DEVICE_IS_TAKEN, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_DEVICE_NOT_TAKEN, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_OPERATION_IN_PROGRESS, EINPROGRESS),
+ SD_BUS_ERROR_MAP(BUS_ERROR_SLEEP_VERB_NOT_SUPPORTED, ENOSYS),
- {BUS_ERROR_AUTOMATIC_TIME_SYNC_ENABLED, EALREADY},
+ SD_BUS_ERROR_MAP(BUS_ERROR_AUTOMATIC_TIME_SYNC_ENABLED, EALREADY),
- {BUS_ERROR_NO_SUCH_PROCESS, ESRCH},
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_PROCESS, ESRCH),
- {BUS_ERROR_NO_NAME_SERVERS, EIO},
- {BUS_ERROR_INVALID_REPLY, EINVAL},
- {BUS_ERROR_NO_SUCH_RR, ENOENT},
- {BUS_ERROR_NO_RESOURCES, ENOMEM},
- {BUS_ERROR_CNAME_LOOP, EDEADLOCK},
- {BUS_ERROR_ABORTED, ECANCELED},
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_NAME_SERVERS, EIO),
+ SD_BUS_ERROR_MAP(BUS_ERROR_INVALID_REPLY, EINVAL),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_RR, ENOENT),
+ SD_BUS_ERROR_MAP(BUS_ERROR_NO_RESOURCES, ENOMEM),
+ SD_BUS_ERROR_MAP(BUS_ERROR_CNAME_LOOP, EDEADLOCK),
+ SD_BUS_ERROR_MAP(BUS_ERROR_ABORTED, ECANCELED),
+
+ SD_BUS_ERROR_MAP_END
};