unix: clean up __attribute__((quux)) usage

Macro-ify __attribute__((destructor)) and __attribute__((unused)).

The macros are no-ops when the compiler does not support function
attributes.
This commit is contained in:
Ben Noordhuis 2013-08-12 07:29:16 +02:00
parent 1e500266eb
commit fd23dbf5c6
3 changed files with 22 additions and 12 deletions

View File

@ -67,6 +67,21 @@
} \
while (0)
/* The __clang__ and __INTEL_COMPILER checks are superfluous because they
* define __GNUC__. They are here to convey to you, dear reader, that these
* macros are enabled when compiling with clang or icc.
*/
#if defined(__clang__) || \
defined(__GNUC__) || \
defined(__INTEL_COMPILER) || \
defined(__SUNPRO_C)
# define UV_DESTRUCTOR(declaration) __attribute__((destructor)) declaration
# define UV_UNUSED(declaration) __attribute__((unused)) declaration
#else
# define UV_DESTRUCTOR(declaration) declaration
# define UV_UNUSED(declaration) declaration
#endif
#if defined(__linux__)
# define UV__POLLIN UV__EPOLLIN
# define UV__POLLOUT UV__EPOLLOUT
@ -242,21 +257,20 @@ static const int kFSEventStreamEventFlagItemIsSymlink = 0x00040000;
#endif /* defined(__APPLE__) */
__attribute__((unused))
static void uv__req_init(uv_loop_t* loop, uv_req_t* req, uv_req_type type) {
UV_UNUSED(static void uv__req_init(uv_loop_t* loop,
uv_req_t* req,
uv_req_type type)) {
req->type = type;
uv__req_register(loop, req);
}
#define uv__req_init(loop, req, type) \
uv__req_init((loop), (uv_req_t*)(req), (type))
__attribute__((unused))
static void uv__update_time(uv_loop_t* loop) {
UV_UNUSED(static void uv__update_time(uv_loop_t* loop)) {
loop->time = uv__hrtime() / 1000000;
}
__attribute__((unused))
static char* uv__basename_r(const char* path) {
UV_UNUSED(static char* uv__basename_r(const char* path)) {
char* s;
s = strrchr(path, '/');

View File

@ -96,8 +96,7 @@ int uv_get_process_title(char* buffer, size_t size) {
}
__attribute__((destructor))
static void free_args_mem(void) {
UV_DESTRUCTOR(static void free_args_mem(void)) {
free(args_mem); /* Keep valgrind happy. */
args_mem = NULL;
}

View File

@ -129,9 +129,7 @@ static void init_once(void) {
}
#if defined(__GNUC__)
__attribute__((destructor))
static void cleanup(void) {
UV_DESTRUCTOR(static void cleanup(void)) {
unsigned int i;
if (initialized == 0)
@ -153,7 +151,6 @@ static void cleanup(void) {
nthreads = 0;
initialized = 0;
}
#endif
void uv__work_submit(uv_loop_t* loop,