diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-07-28 11:14:46 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-07-29 15:54:53 +0200 |
commit | 23d5dd168724fe60c7b00d78f49563a6be05627d (patch) | |
tree | 3bd28cf74b34f04e0cc6f355c859fff36c63e186 /src/shared/exit-status.h | |
parent | 8594c8a552c02fb6fa2bf569e68aa73b739e8da6 (diff) | |
download | systemd-23d5dd168724fe60c7b00d78f49563a6be05627d.tar.gz |
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.h | 12 |
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); |