2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 10:10:06 +00:00
Ondřej Surý 0086ebf3fc
Bump the libuv requirement to libuv >= 1.34.0
By bumping the minimum libuv version to 1.34.0, it allows us to remove
all libuv shims we ever had and makes the code much cleaner.  The
up-to-date libuv is available in all distributions supported by BIND
9.19+ either natively or as a backport.
2022-09-27 17:09:10 +02:00

110 lines
3.6 KiB
C

/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* SPDX-License-Identifier: MPL-2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
#pragma once
#include <stdbool.h>
#include <uv.h>
#include <isc/result.h>
#include <isc/tid.h>
#define UV_VERSION(major, minor, patch) ((major << 16) | (minor << 8) | (patch))
/*
* Copied verbatim from libuv/src/version.c
*/
#define UV_STRINGIFY(v) UV_STRINGIFY_HELPER(v)
#define UV_STRINGIFY_HELPER(v) #v
#define UV_VERSION_STRING_BASE \
UV_STRINGIFY(UV_VERSION_MAJOR) \
"." UV_STRINGIFY(UV_VERSION_MINOR) "." UV_STRINGIFY(UV_VERSION_PATCH)
#if UV_VERSION_IS_RELEASE
#define UV_VERSION_STRING UV_VERSION_STRING_BASE
#else
#define UV_VERSION_STRING UV_VERSION_STRING_BASE "-" UV_VERSION_SUFFIX
#endif
#if !defined(UV__ERR)
#define UV__ERR(x) (-(x))
#endif
/*
* These are used with all versions of libuv:
*/
#define UV_RUNTIME_CHECK(func, ret) \
if (ret != 0) { \
isc_error_fatal(__FILE__, __LINE__, "%s failed: %s\n", #func, \
uv_strerror(ret)); \
}
#define isc_uverr2result(x) \
isc__uverr2result(x, true, __FILE__, __LINE__, __func__)
isc_result_t
isc__uverr2result(int uverr, bool dolog, const char *file, unsigned int line,
const char *func);
/*%<
* Convert a libuv error value into an isc_result_t. The
* list of supported error values is not complete; new users
* of this function should add any expected errors that are
* not already there.
*/
/**
* Type-casting helpers
*/
#define uv_handle_set_data(handle, data) \
uv_handle_set_data((uv_handle_t *)(handle), (data))
#define uv_handle_get_data(handle) uv_handle_get_data((uv_handle_t *)(handle))
#define uv_close(handle, close_cb) uv_close((uv_handle_t *)handle, close_cb)
#if UV_TRACE_INIT
#define uv_idle_init(loop, idle) \
({ \
int __r = uv_idle_init(loop, idle); \
fprintf(stderr, "%" PRIu32 ":%s_:uv_idle_init(%p, %p)\n", \
isc_tid(), __func__, loop, idle); \
__r; \
})
#define uv_timer_init(loop, timer) \
({ \
int __r = uv_timer_init(loop, timer); \
fprintf(stderr, "%" PRIu32 ":%s_:uv_timer_init(%p, %p)\n", \
isc_tid(), __func__, loop, timer); \
__r; \
})
#define uv_async_init(loop, async, async_cb) \
({ \
int __r = uv_async_init(loop, async, async_cb); \
fprintf(stderr, "%" PRIu32 ":%s_:uv_timer_init(%p, %p, %p)\n", \
isc_tid(), __func__, loop, async, async_cb); \
__r; \
})
#define uv_close(handle, close_cb) \
({ \
uv_close(handle, close_cb); \
fprintf(stderr, "%" PRIu32 ":%s_:uv_close(%p, %p)\n", \
isc_tid(), __func__, handle, close_cb); \
})
#endif