diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-12-06 02:39:15 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-12-08 14:55:22 +0100 |
commit | 5f86c1f4c43ee9caa120d130e9b89d3fd25124c0 (patch) | |
tree | 34908816bfd429ba578f99626eb2deabc1ed631a /src/shared/bus-errors.c | |
parent | 8b5e2af10830d55b2032e6c79d0cd1f959bb5b7f (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.c | 85 |
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 }; |