summaryrefslogtreecommitdiff
path: root/src/shared/exit-status.h
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-07-28 11:14:46 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-07-29 15:54:53 +0200
commit23d5dd168724fe60c7b00d78f49563a6be05627d (patch)
tree3bd28cf74b34f04e0cc6f355c859fff36c63e186 /src/shared/exit-status.h
parent8594c8a552c02fb6fa2bf569e68aa73b739e8da6 (diff)
downloadsystemd-23d5dd168724fe60c7b00d78f49563a6be05627d.tar.gz
systemd-23d5dd168724fe60c7b00d78f49563a6be05627d.tar.bz2
systemd-23d5dd168724fe60c7b00d78f49563a6be05627d.zip
shared/exit-status: use Bitmap instead of Sets
I opted to embed the Bitmap structure directly in the ExitStatusSet. This means that memory usage is a bit higher for units which don't define this setting: Service changes: /* size: 2720, cachelines: 43, members: 73 */ /* sum members: 2680, holes: 9, sum holes: 39 */ /* sum bitfield members: 7 bits, bit holes: 1, sum bit holes: 1 bits */ /* last cacheline: 32 bytes */ /* size: 2816, cachelines: 44, members: 73 */ /* sum members: 2776, holes: 9, sum holes: 39 */ /* sum bitfield members: 7 bits, bit holes: 1, sum bit holes: 1 bits */ But this way the code is simpler and we do less pointer chasing.
Diffstat (limited to 'src/shared/exit-status.h')
-rw-r--r--src/shared/exit-status.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h
index 24eba79f56..d6da8c19b9 100644
--- a/src/shared/exit-status.h
+++ b/src/shared/exit-status.h
@@ -3,9 +3,9 @@
#include <stdbool.h>
+#include "bitmap.h"
#include "hashmap.h"
#include "macro.h"
-#include "set.h"
/* This defines pretty names for the LSB 'start' verb exit codes. Note that they shouldn't be confused with
* the LSB 'status' verb exit codes which are defined very differently. For details see:
@@ -83,8 +83,8 @@ typedef enum ExitStatusClass {
} ExitStatusClass;
typedef struct ExitStatusSet {
- Set *status;
- Set *signal;
+ Bitmap status;
+ Bitmap signal;
} ExitStatusSet;
const char* exit_status_to_string(int code, ExitStatusClass class) _const_;
@@ -103,8 +103,8 @@ typedef enum ExitClean {
EXIT_CLEAN_COMMAND,
} ExitClean;
-bool is_clean_exit(int code, int status, ExitClean clean, ExitStatusSet *success_status);
+bool is_clean_exit(int code, int status, ExitClean clean, const ExitStatusSet *success_status);
void exit_status_set_free(ExitStatusSet *x);
-bool exit_status_set_is_empty(ExitStatusSet *x);
-bool exit_status_set_test(ExitStatusSet *x, int code, int status);
+bool exit_status_set_is_empty(const ExitStatusSet *x);
+bool exit_status_set_test(const ExitStatusSet *x, int code, int status);