basic,shared: mark eligible functions with _pure_/_const_

Following the recent witch hunt done to static inline functions
I figure we should at least give the compiler some more hint
on optimizations.
This commit is contained in:
Mike Yuan
2025-05-26 20:26:58 +02:00
parent fae687ec2b
commit 180341e732
19 changed files with 88 additions and 90 deletions
+3 -3
View File
@@ -103,8 +103,8 @@ typedef enum ExitClean {
EXIT_CLEAN_COMMAND,
} ExitClean;
bool is_clean_exit(int code, int status, ExitClean clean, const ExitStatusSet *success_status);
bool is_clean_exit(int code, int status, ExitClean clean, const ExitStatusSet *success_status) _pure_;
void exit_status_set_free(ExitStatusSet *x);
bool exit_status_set_is_empty(const ExitStatusSet *x);
bool exit_status_set_test(const ExitStatusSet *x, int code, int status);
bool exit_status_set_is_empty(const ExitStatusSet *x) _pure_;
bool exit_status_set_test(const ExitStatusSet *x, int code, int status) _pure_;
+13 -13
View File
@@ -29,19 +29,19 @@ typedef enum PartitionDesignator {
_PARTITION_DESIGNATOR_INVALID = -EINVAL,
} PartitionDesignator;
bool partition_designator_is_versioned(PartitionDesignator d);
bool partition_designator_is_versioned(PartitionDesignator d) _const_;
PartitionDesignator partition_verity_of(PartitionDesignator p);
PartitionDesignator partition_verity_sig_of(PartitionDesignator p);
PartitionDesignator partition_verity_to_data(PartitionDesignator d);
PartitionDesignator partition_verity_sig_to_data(PartitionDesignator d);
PartitionDesignator partition_verity_of(PartitionDesignator p) _const_;
PartitionDesignator partition_verity_sig_of(PartitionDesignator p) _const_;
PartitionDesignator partition_verity_to_data(PartitionDesignator d) _const_;
PartitionDesignator partition_verity_sig_to_data(PartitionDesignator d) _const_;
const char* partition_designator_to_string(PartitionDesignator d) _const_;
PartitionDesignator partition_designator_from_string(const char *name) _pure_;
const char* partition_mountpoint_to_string(PartitionDesignator d) _const_;
const char* gpt_partition_type_uuid_to_string(sd_id128_t id);
const char* gpt_partition_type_uuid_to_string(sd_id128_t id) _const_;
const char* gpt_partition_type_uuid_to_string_harder(
sd_id128_t id,
char buffer[static SD_ID128_UUID_STRING_MAX]);
@@ -49,7 +49,7 @@ const char* gpt_partition_type_uuid_to_string_harder(
#define GPT_PARTITION_TYPE_UUID_TO_STRING_HARDER(id) \
gpt_partition_type_uuid_to_string_harder((id), (char[SD_ID128_UUID_STRING_MAX]) {})
Architecture gpt_partition_type_uuid_to_arch(sd_id128_t id);
Architecture gpt_partition_type_uuid_to_arch(sd_id128_t id) _const_;
typedef struct GptPartitionType {
sd_id128_t uuid;
@@ -65,14 +65,14 @@ int gpt_partition_label_valid(const char *s);
GptPartitionType gpt_partition_type_from_uuid(sd_id128_t id);
int gpt_partition_type_from_string(const char *s, GptPartitionType *ret);
GptPartitionType gpt_partition_type_override_architecture(GptPartitionType type, Architecture arch);
GptPartitionType gpt_partition_type_override_architecture(GptPartitionType type, Architecture arch) _const_;
const char* gpt_partition_type_mountpoint_nulstr(GptPartitionType type);
bool gpt_partition_type_knows_read_only(GptPartitionType type);
bool gpt_partition_type_knows_growfs(GptPartitionType type);
bool gpt_partition_type_knows_no_auto(GptPartitionType type);
bool gpt_partition_type_has_filesystem(GptPartitionType type);
bool gpt_partition_type_knows_read_only(GptPartitionType type) _const_;
bool gpt_partition_type_knows_growfs(GptPartitionType type) _const_;
bool gpt_partition_type_knows_no_auto(GptPartitionType type) _const_;
bool gpt_partition_type_has_filesystem(GptPartitionType type) _const_;
typedef struct {
uint8_t partition_type_guid[16];
@@ -100,4 +100,4 @@ typedef struct {
le32_t partition_entry_array_crc32;
} _packed_ GptHeader;
bool gpt_header_has_signature(const GptHeader *p);
bool gpt_header_has_signature(const GptHeader *p) _pure_;
+2 -2
View File
@@ -52,5 +52,5 @@ UserDisposition group_record_disposition(GroupRecord *h);
bool group_record_matches_group_name(const GroupRecord *g, const char *groupname);
bool group_record_is_root(const GroupRecord *g);
bool group_record_is_nobody(const GroupRecord *g);
bool group_record_is_root(const GroupRecord *g) _pure_;
bool group_record_is_nobody(const GroupRecord *g) _pure_;
+2 -2
View File
@@ -19,14 +19,14 @@ void main_finalize(int r, int exit_status);
return result_to_return_value(r); \
}
int exit_failure_if_negative(int result);
int exit_failure_if_negative(int result) _const_;
/* Negative return values from impl are mapped to EXIT_FAILURE, and
* everything else means success! */
#define DEFINE_MAIN_FUNCTION(impl) \
_DEFINE_MAIN_FUNCTION(,impl(argc, argv), exit_failure_if_negative, exit_failure_if_negative)
int exit_failure_if_nonzero(int result);
int exit_failure_if_nonzero(int result) _const_;
/* Zero is mapped to EXIT_SUCCESS, negative values are mapped to EXIT_FAILURE,
* and positive values are propagated.
+2 -2
View File
@@ -3,8 +3,8 @@
#include "forward.h"
bool mount_point_is_api(const char *path);
bool mount_point_ignore(const char *path);
bool mount_point_is_api(const char *path) _pure_;
bool mount_point_ignore(const char *path) _pure_;
int mount_setup_early(void);
int mount_setup(bool loaded_policy, bool leave_propagation);
+1 -1
View File
@@ -22,4 +22,4 @@
int namespace_flags_from_string(const char *name, unsigned long *ret);
int namespace_flags_to_string(unsigned long flags, char **ret);
const char* namespace_single_flag_to_string(unsigned long flag);
const char* namespace_single_flag_to_string(unsigned long flag) _const_;