diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-06-20 16:54:15 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-06-20 11:18:34 +0200 |
commit | 754c677b0bbf3ea6c7d2a73c93848f1b0d68c91e (patch) | |
tree | 54d99c9f66d5a57bf7f70d53e744a31df18f9e0e /lib/ccan/compiler/_info | |
parent | a8c3d38bc806c6972d10b6a371de8941da25a9ae (diff) | |
download | samba-754c677b0bbf3ea6c7d2a73c93848f1b0d68c91e.tar.gz samba-754c677b0bbf3ea6c7d2a73c93848f1b0d68c91e.tar.bz2 samba-754c677b0bbf3ea6c7d2a73c93848f1b0d68c91e.zip |
lib: import ccan modules for tdb2
Imported from git://git.ozlabs.org/~ccan/ccan init-1161-g661d41f
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'lib/ccan/compiler/_info')
-rw-r--r-- | lib/ccan/compiler/_info | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/ccan/compiler/_info b/lib/ccan/compiler/_info new file mode 100644 index 0000000000..c55ba22f08 --- /dev/null +++ b/lib/ccan/compiler/_info @@ -0,0 +1,64 @@ +#include <string.h> +#include <stdio.h> +#include "config.h" + +/** + * compiler - macros for common compiler extensions + * + * Abstracts away some compiler hints. Currently these include: + * - COLD + * For functions not called in fast paths (aka. cold functions) + * - PRINTF_FMT + * For functions which take printf-style parameters. + * - IDEMPOTENT + * For functions which return the same value for same parameters. + * - NEEDED + * For functions and variables which must be emitted even if unused. + * - UNNEEDED + * For functions and variables which need not be emitted if unused. + * - UNUSED + * For parameters which are not used. + * - IS_COMPILE_CONSTANT + * For using different tradeoffs for compiletime vs runtime evaluation. + * + * License: LGPL (3 or any later version) + * Author: Rusty Russell <rusty@rustcorp.com.au> + * + * Example: + * #include <ccan/compiler/compiler.h> + * #include <stdio.h> + * #include <stdarg.h> + * + * // Example of a (slow-path) logging function. + * static int log_threshold = 2; + * static void COLD PRINTF_FMT(2,3) + * logger(int level, const char *fmt, ...) + * { + * va_list ap; + * va_start(ap, fmt); + * if (level >= log_threshold) + * vfprintf(stderr, fmt, ap); + * va_end(ap); + * } + * + * int main(int argc, char *argv[]) + * { + * if (argc != 1) { + * logger(3, "Don't want %i arguments!\n", argc-1); + * return 1; + * } + * return 0; + * } + */ +int main(int argc, char *argv[]) +{ + /* Expect exactly one argument */ + if (argc != 2) + return 1; + + if (strcmp(argv[1], "depends") == 0) { + return 0; + } + + return 1; +} |