dhcpd-pools.h: function attributes declarations

Advice compiler about functions to generate better optimization
and argument checks.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2011-03-19 11:48:48 +01:00
parent 8544983585
commit 93bcd305c4
3 changed files with 26 additions and 12 deletions

View file

@ -151,7 +151,6 @@ int main(int argc, char **argv)
case 'v': case 'v':
/* Print version */ /* Print version */
print_version(); print_version();
return (EXIT_SUCCESS);
case 'h': case 'h':
/* Print help */ /* Print help */
usage(EXIT_SUCCESS); usage(EXIT_SUCCESS);

View file

@ -98,20 +98,34 @@ struct macaddr_t *macaddr;
/* Function prototypes */ /* Function prototypes */
int prepare_memory (void); int prepare_memory (void);
int parse_leases (void); int parse_leases (void);
char * parse_config (int, char *, char *, char *, struct shared_network_t *); char * parse_config (int, char *, char *, char *, struct shared_network_t *)
int nth_field (int n, char *dest, const char *src); __attribute__((nonnull (2, 3, 4)));
int nth_field (int n, char *dest, const char *src)
__attribute__((nonnull (2, 3)))
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
__attribute__((__hot__))
#endif
;
int prepare_data (void); int prepare_data (void);
int do_counting (void); int do_counting (void);
void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges); void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges)
__attribute__((nonnull (1, 2)));
/* General support functions */ /* General support functions */
void *safe_malloc (const size_t size); void *safe_malloc (const size_t size)
char *safe_strdup(const char *str); #if __GNUC__ >= 3
void print_version (void); __attribute__ ((__malloc__))
void usage (int status); #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
__attribute__ ((__alloc_size__ ((1))))
#endif
#endif
;
char *safe_strdup(const char *str) __attribute__((nonnull (1)));
void print_version (void) __attribute__((noreturn));
void usage (int status) __attribute__((noreturn));
/* qsort required functions... */ /* qsort required functions... */
/* ...for ranges and... */ /* ...for ranges and... */
int intcomp (const void *x, const void *y); int intcomp (const void *x, const void *y) __attribute__((nonnull (1, 2)));
int rangecomp (const void *r1, const void *r2); int rangecomp (const void *r1, const void *r2) __attribute__((nonnull (1, 2)));
/* sort function pointer and functions */ /* sort function pointer and functions */
int sort_name (void); int sort_name (void);
unsigned long int (*returner) (struct range_t r); unsigned long int (*returner) (struct range_t r);
@ -123,8 +137,8 @@ unsigned long int ret_touched(struct range_t r);
unsigned long int ret_tc(struct range_t r); unsigned long int ret_tc(struct range_t r);
unsigned long int ret_tcperc(struct range_t r); unsigned long int ret_tcperc(struct range_t r);
void field_selector(char c); void field_selector(char c);
int get_order(struct range_t *left, struct range_t *right); int get_order(struct range_t *left, struct range_t *right) __attribute__((nonnull (1, 2)));
void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp); void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp) __attribute__((nonnull (1, 3)));
/* output function pointer and functions */ /* output function pointer and functions */
int (*output_analysis) (void); int (*output_analysis) (void);
int output_txt (void); int output_txt (void);

View file

@ -109,6 +109,7 @@ void print_version(void)
"This is free software: you are free to change and redistribute it.\n"); "This is free software: you are free to change and redistribute it.\n");
fprintf(stdout, fprintf(stdout,
"There is NO WARRANTY, to the extent permitted by law.\n"); "There is NO WARRANTY, to the extent permitted by law.\n");
exit(EXIT_SUCCESS);
} }
void usage(int status) void usage(int status)