GRAYBYTE WORDPRESS FILE MANAGER3982

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /usr/include/bind9/isc/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /usr/include/bind9/isc//util.h
/*
 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
 *
 * 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.
 */

#ifndef ISC_UTIL_H
#define ISC_UTIL_H 1

#include <inttypes.h>

/*! \file isc/util.h
 * NOTE:
 *
 * This file is not to be included from any <isc/???.h> (or other) library
 * files.
 *
 * \brief
 * Including this file puts several macros in your name space that are
 * not protected (as all the other ISC functions/macros do) by prepending
 * ISC_ or isc_ to the name.
 */

/***
 *** General Macros.
 ***/

/*%
 * Use this to hide unused function arguments.
 * \code
 * int
 * foo(char *bar)
 * {
 *	UNUSED(bar);
 * }
 * \endcode
 */
#define UNUSED(x)      (void)(x)

/*%
 * The opposite: silent warnings about stored values which are never read.
 */
#define POST(x)        (void)(x)

#define ISC_MAX(a, b)  ((a) > (b) ? (a) : (b))
#define ISC_MIN(a, b)  ((a) < (b) ? (a) : (b))

#define ISC_CLAMP(v, x, y) ((v) < (x) ? (x) : ((v) > (y) ? (y) : (v)))

/*%
 * Use this to remove the const qualifier of a variable to assign it to
 * a non-const variable or pass it as a non-const function argument ...
 * but only when you are sure it won't then be changed!
 * This is necessary to sometimes shut up some compilers
 * (as with gcc -Wcast-qual) when there is just no other good way to avoid the
 * situation.
 */
#define DE_CONST(konst, var) \
	do { \
		union { const void *k; void *v; } _u; \
		_u.k = konst; \
		var = _u.v; \
	} while (0)

#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))

/*%
 * Use this in translation units that would otherwise be empty, to
 * suppress compiler warnings.
 */
#define EMPTY_TRANSLATION_UNIT extern int isc__empty;

/*%
 * We use macros instead of calling the routines directly because
 * the capital letters make the locking stand out.
 * We RUNTIME_CHECK for success since in general there's no way
 * for us to continue if they fail.
 */

#ifdef ISC_UTIL_TRACEON
#define ISC_UTIL_TRACE(a) a
#include <stdio.h>		/* Required for fprintf/stderr when tracing. */
#include <isc/msgs.h>		/* Required for isc_msgcat when tracing. */
#else
#define ISC_UTIL_TRACE(a)
#endif

#include <isc/result.h>		/* Contractual promise. */

#define LOCK(lp) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_LOCKING, "LOCKING"), \
			       (lp), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_mutex_lock((lp)) == ISC_R_SUCCESS); \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_LOCKED, "LOCKED"), \
			       (lp), __FILE__, __LINE__)); \
	} while (0)
#define UNLOCK(lp) do { \
	RUNTIME_CHECK(isc_mutex_unlock((lp)) == ISC_R_SUCCESS); \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_UNLOCKED, "UNLOCKED"), \
			       (lp), __FILE__, __LINE__)); \
	} while (0)
#define DESTROYLOCK(lp) \
	RUNTIME_CHECK(isc_mutex_destroy((lp)) == ISC_R_SUCCESS)


#define BROADCAST(cvp) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_BROADCAST, "BROADCAST"),\
			       (cvp), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_condition_broadcast((cvp)) == ISC_R_SUCCESS); \
	} while (0)
#define SIGNAL(cvp) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_SIGNAL, "SIGNAL"), \
			       (cvp), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_condition_signal((cvp)) == ISC_R_SUCCESS); \
	} while (0)
#define WAIT(cvp, lp) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_UTILWAIT, "WAIT"), \
			       (cvp), \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_LOCK, "LOCK"), \
			       (lp), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_condition_wait((cvp), (lp)) == ISC_R_SUCCESS); \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p %s %p %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_WAITED, "WAITED"), \
			       (cvp), \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_LOCKED, "LOCKED"), \
			       (lp), __FILE__, __LINE__)); \
	} while (0)

/*
 * isc_condition_waituntil can return ISC_R_TIMEDOUT, so we
 * don't RUNTIME_CHECK the result.
 *
 *  XXX Also, can't really debug this then...
 */

#define WAITUNTIL(cvp, lp, tp) \
	isc_condition_waituntil((cvp), (lp), (tp))

#define RWLOCK(lp, t) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p, %d %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_RWLOCK, "RWLOCK"), \
			       (lp), (t), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_rwlock_lock((lp), (t)) == ISC_R_SUCCESS); \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p, %d %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_RWLOCKED, "RWLOCKED"), \
			       (lp), (t), __FILE__, __LINE__)); \
	} while (0)
#define RWUNLOCK(lp, t) do { \
	ISC_UTIL_TRACE(fprintf(stderr, "%s %p, %d %s %d\n", \
			       isc_msgcat_get(isc_msgcat, ISC_MSGSET_UTIL, \
					      ISC_MSG_RWUNLOCK, "RWUNLOCK"), \
			       (lp), (t), __FILE__, __LINE__)); \
	RUNTIME_CHECK(isc_rwlock_unlock((lp), (t)) == ISC_R_SUCCESS); \
	} while (0)

#define DESTROYMUTEXBLOCK(bp, n) \
	RUNTIME_CHECK(isc_mutexblock_destroy((bp), (n)) == ISC_R_SUCCESS)

/*
 * List Macros.
 */
#include <isc/list.h>		/* Contractual promise. */

#define LIST(type)			ISC_LIST(type)
#define INIT_LIST(type)			ISC_LIST_INIT(type)
#define LINK(type)			ISC_LINK(type)
#define INIT_LINK(elt, link)		ISC_LINK_INIT(elt, link)
#define HEAD(list)			ISC_LIST_HEAD(list)
#define TAIL(list)			ISC_LIST_TAIL(list)
#define EMPTY(list)			ISC_LIST_EMPTY(list)
#define PREV(elt, link)			ISC_LIST_PREV(elt, link)
#define NEXT(elt, link)			ISC_LIST_NEXT(elt, link)
#define APPEND(list, elt, link)		ISC_LIST_APPEND(list, elt, link)
#define PREPEND(list, elt, link)	ISC_LIST_PREPEND(list, elt, link)
#define UNLINK(list, elt, link)		ISC_LIST_UNLINK(list, elt, link)
#define ENQUEUE(list, elt, link)	ISC_LIST_APPEND(list, elt, link)
#define DEQUEUE(list, elt, link)	ISC_LIST_UNLINK(list, elt, link)
#define INSERTBEFORE(li, b, e, ln)	ISC_LIST_INSERTBEFORE(li, b, e, ln)
#define INSERTAFTER(li, a, e, ln)	ISC_LIST_INSERTAFTER(li, a, e, ln)
#define APPENDLIST(list1, list2, link)	ISC_LIST_APPENDLIST(list1, list2, link)

/*%
 * Performance
 */
#include <isc/likely.h>

#ifdef HAVE_BUILTIN_UNREACHABLE
#define ISC_UNREACHABLE() __builtin_unreachable();
#else
#define ISC_UNREACHABLE()
#endif

#if !defined(__has_feature)
#define __has_feature(x) 0
#endif

/* GCC defines __SANITIZE_ADDRESS__, so reuse the macro for clang */
#if __has_feature(address_sanitizer)
#define __SANITIZE_ADDRESS__ 1
#endif

/* GCC defines __SANITIZE_THREAD__, so reuse the macro for clang */
#if __has_feature(thread_sanitizer)
#define __SANITIZE_THREAD__ 1
#endif

#if __SANITIZE_THREAD__
#define ISC_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread"))) __attribute__((noinline))
#define ISC_NO_SANITIZE_INLINE
#else /* if __SANITIZE_THREAD__ */
#define ISC_NO_SANITIZE_THREAD
#define ISC_NO_SANITIZE_INLINE inline
#endif /* if __SANITIZE_THREAD__ */

#ifdef UNIT_TESTING
extern void mock_assert(const int result, const char* const expression,
			const char * const file, const int line);
/*
 *	Allow clang to determine that the following code is not reached
 *	by calling abort() if the condition fails.  The abort() will
 *	never be executed as mock_assert() and _assert_true() longjmp
 *	or exit if the condition is false.
 */
#define REQUIRE(expression)						\
	((!(expression)) ?						\
	(mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0)
#define ENSURE(expression)						\
	((!(int)(expression)) ?						\
	(mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0)
#define INSIST(expression)						\
	((!(expression)) ?						\
	(mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0)
#define INVARIANT(expression)						\
	((!(expression)) ?						\
	(mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0)
#define _assert_true(c, e, f, l) \
	((c) ? (void)0 : (_assert_true(0, e, f, l), abort()))
#define _assert_int_equal(a, b, f, l) \
	(((a) == (b)) ? (void)0 : (_assert_int_equal(a, b, f, l), abort()))
#define _assert_int_not_equal(a, b, f, l) \
	(((a) != (b)) ? (void)0 : (_assert_int_not_equal(a, b, f, l), abort()))
#else /* UNIT_TESTING */

#ifndef CPPCHECK

/*
 * Assertions
 */
#include <isc/assertions.h>	/* Contractual promise. */

/*% Require Assertion */
#define REQUIRE(e)			ISC_REQUIRE(e)
/*% Ensure Assertion */
#define ENSURE(e)			ISC_ENSURE(e)
/*% Insist Assertion */
#define INSIST(e)			ISC_INSIST(e)
/*% Invariant Assertion */
#define INVARIANT(e)			ISC_INVARIANT(e)

#else /* CPPCHECK */

/*% Require Assertion */
#define REQUIRE(e)			if (!(e)) abort()
/*% Ensure Assertion */
#define ENSURE(e)			if (!(e)) abort()
/*% Insist Assertion */
#define INSIST(e)			if (!(e)) abort()
/*% Invariant Assertion */
#define INVARIANT(e)			if (!(e)) abort()

#endif /* CPPCHECK */

#endif /* UNIT_TESTING */

/*
 * Errors
 */
#include <isc/error.h>		/* Contractual promise. */

/*% Unexpected Error */
#define UNEXPECTED_ERROR		isc_error_unexpected
/*% Fatal Error */
#define FATAL_ERROR			isc_error_fatal

#ifdef UNIT_TESTING

#define RUNTIME_CHECK(expression)					\
	((!(expression)) ?						\
	(mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0)

#else /* UNIT_TESTING */

#ifndef CPPCHECK
/*% Runtime Check */
#define RUNTIME_CHECK(cond)		ISC_ERROR_RUNTIMECHECK(cond)
#else
#define RUNTIME_CHECK(e)		if (!(e)) abort()
#endif

#endif /* UNIT_TESTING */

/*%
 * Time
 */
#define TIME_NOW(tp) 	RUNTIME_CHECK(isc_time_now((tp)) == ISC_R_SUCCESS)
#ifdef CLOCK_BOOTTIME
#define TIME_MONOTONIC(tp) 	RUNTIME_CHECK(isc_time_boottime((tp)) == ISC_R_SUCCESS)
#endif


/*%
 * Alignment
 */
#ifdef __GNUC__
#define ISC_ALIGN(x, a) (((x) + (a) - 1) & ~((typeof(x))(a) - 1))
#else
#define ISC_ALIGN(x, a) (((x) + (a) - 1) & ~((uintmax_t)(a) - 1))
#endif

/*%
 * Misc
 */
#include <isc/deprecated.h>

#endif /* ISC_UTIL_H */

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
February 21 2025 08:48:18
root / root
0755
aes.h
1.055 KB
February 20 2025 09:05:24
root / root
0644
app.h
10.232 KB
February 20 2025 09:05:24
root / root
0644
assertions.h
2.839 KB
February 20 2025 09:05:24
root / root
0644
atomic.h
4.07 KB
February 20 2025 09:05:24
root / root
0644
backtrace.h
3.8 KB
February 20 2025 09:05:24
root / root
0644
base32.h
4.349 KB
February 20 2025 09:05:24
root / root
0644
base64.h
2.799 KB
February 20 2025 09:05:24
root / root
0644
bind9.h
0.811 KB
February 20 2025 09:05:24
root / root
0644
boolean.h
0.58 KB
February 20 2025 09:05:24
root / root
0644
buffer.h
25.652 KB
February 20 2025 09:05:24
root / root
0644
bufferlist.h
1.418 KB
February 20 2025 09:05:24
root / root
0644
cmocka.h
1.351 KB
February 20 2025 09:05:24
root / root
0644
commandline.h
1.673 KB
February 20 2025 09:05:24
root / root
0644
condition.h
1.443 KB
February 20 2025 09:05:24
root / root
0644
counter.h
1.881 KB
February 20 2025 09:05:24
root / root
0644
crc64.h
0.975 KB
February 20 2025 09:05:24
root / root
0644
deprecated.h
0.608 KB
February 20 2025 09:05:24
root / root
0644
dir.h
1.561 KB
February 20 2025 09:05:24
root / root
0644
endian.h
4.666 KB
February 20 2025 09:05:24
root / root
0644
entropy.h
10.13 KB
February 20 2025 09:05:24
root / root
0644
errno.h
0.644 KB
February 20 2025 09:05:24
root / root
0644
errno2result.h
0.881 KB
February 20 2025 09:05:37
root / root
0644
error.h
1.396 KB
February 20 2025 09:05:24
root / root
0644
event.h
2.981 KB
February 20 2025 09:05:24
root / root
0644
eventclass.h
1.349 KB
February 20 2025 09:05:24
root / root
0644
file.h
11.394 KB
February 20 2025 09:05:24
root / root
0644
formatcheck.h
0.872 KB
February 20 2025 09:05:24
root / root
0644
fsaccess.h
7.268 KB
February 20 2025 09:05:24
root / root
0644
hash.h
7.482 KB
February 20 2025 09:05:24
root / root
0644
heap.h
5.141 KB
February 20 2025 09:05:24
root / root
0644
hex.h
2.74 KB
February 20 2025 09:05:24
root / root
0644
hmacmd5.h
1.745 KB
February 20 2025 09:05:24
root / root
0644
hmacsha.h
4.405 KB
February 20 2025 09:05:24
root / root
0644
ht.h
4.293 KB
February 20 2025 09:05:24
root / root
0644
httpd.h
2.264 KB
February 20 2025 09:05:24
root / root
0644
int.h
1.063 KB
February 20 2025 09:05:24
root / root
0644
interfaceiter.h
3.047 KB
February 20 2025 09:05:24
root / root
0644
iterated_hash.h
1.021 KB
February 20 2025 09:05:24
root / root
0644
json.h
1.425 KB
February 20 2025 09:05:24
root / root
0644
keyboard.h
0.966 KB
February 20 2025 09:05:24
root / root
0644
lang.h
0.622 KB
February 20 2025 09:05:24
root / root
0644
lex.h
9.542 KB
February 20 2025 09:05:24
root / root
0644
lfsr.h
2.889 KB
February 20 2025 09:05:24
root / root
0644
lib.h
1.043 KB
February 20 2025 09:05:24
root / root
0644
likely.h
0.799 KB
February 20 2025 09:05:24
root / root
0644
list.h
5.616 KB
February 20 2025 09:05:24
root / root
0644
log.h
28.061 KB
February 20 2025 09:05:24
root / root
0644
magic.h
0.971 KB
February 20 2025 09:05:24
root / root
0644
md5.h
2.324 KB
February 20 2025 09:05:24
root / root
0644
mem.h
20.615 KB
February 20 2025 09:05:24
root / root
0644
meminfo.h
0.693 KB
February 20 2025 09:05:24
root / root
0644
msgcat.h
2.662 KB
February 20 2025 09:05:24
root / root
0644
msgs.h
8.225 KB
February 20 2025 09:05:24
root / root
0644
mutex.h
3.441 KB
February 20 2025 09:05:24
root / root
0644
mutexblock.h
1.343 KB
February 20 2025 09:05:24
root / root
0644
net.h
10.287 KB
February 20 2025 09:05:24
root / root
0644
netaddr.h
4.482 KB
February 20 2025 09:05:24
root / root
0644
netdb.h
0.843 KB
February 20 2025 09:05:24
root / root
0644
netscope.h
0.944 KB
February 20 2025 09:05:24
root / root
0644
offset.h
0.684 KB
February 20 2025 09:05:24
root / root
0644
once.h
0.96 KB
February 20 2025 09:05:24
root / root
0644
ondestroy.h
2.733 KB
February 20 2025 09:05:24
root / root
0644
os.h
0.655 KB
February 20 2025 09:05:24
root / root
0644
parseint.h
1.506 KB
February 20 2025 09:05:24
root / root
0644
platform.h
9.489 KB
February 20 2025 09:05:24
root / root
0644
pool.h
3.42 KB
February 20 2025 09:05:24
root / root
0644
portset.h
3.218 KB
February 20 2025 09:05:24
root / root
0644
print.h
2.417 KB
February 20 2025 09:05:24
root / root
0644
queue.h
5.082 KB
February 20 2025 09:05:24
root / root
0644
quota.h
2.383 KB
February 20 2025 09:05:24
root / root
0644
radix.h
6.339 KB
February 20 2025 09:05:24
root / root
0644
random.h
3.498 KB
February 20 2025 09:05:24
root / root
0644
ratelimiter.h
3.415 KB
February 20 2025 09:05:24
root / root
0644
refcount.h
8.001 KB
February 20 2025 09:05:24
root / root
0644
regex.h
0.749 KB
February 20 2025 09:05:24
root / root
0644
region.h
1.986 KB
February 20 2025 09:05:24
root / root
0644
resource.h
2.795 KB
February 20 2025 09:05:24
root / root
0644
result.h
4.865 KB
February 20 2025 09:05:24
root / root
0644
resultclass.h
1.562 KB
February 20 2025 09:05:24
root / root
0644
rwlock.h
3.718 KB
February 20 2025 09:05:24
root / root
0644
safe.h
1.32 KB
February 20 2025 09:05:24
root / root
0644
serial.h
1.336 KB
February 20 2025 09:05:24
root / root
0644
sha1.h
1.52 KB
February 20 2025 09:05:24
root / root
0644
sha2.h
5.599 KB
February 20 2025 09:05:24
root / root
0644
siphash.h
0.717 KB
February 20 2025 09:05:24
root / root
0644
sockaddr.h
5.897 KB
February 20 2025 09:05:24
root / root
0644
socket.h
35.796 KB
February 20 2025 09:05:24
root / root
0644
stat.h
0.787 KB
February 20 2025 09:05:24
root / root
0644
stats.h
3.622 KB
February 20 2025 09:05:24
root / root
0644
stdatomic.h
5.127 KB
February 20 2025 09:05:24
root / root
0644
stdio.h
1.745 KB
February 20 2025 09:05:24
root / root
0644
stdlib.h
0.688 KB
February 20 2025 09:05:24
root / root
0644
stdtime.h
1.04 KB
February 20 2025 09:05:24
root / root
0644
strerror.h
0.759 KB
February 20 2025 09:05:24
root / root
0644
string.h
5.878 KB
February 20 2025 09:05:24
root / root
0644
symtab.h
4.225 KB
February 20 2025 09:05:24
root / root
0644
syslog.h
0.824 KB
February 20 2025 09:05:24
root / root
0644
task.h
21.039 KB
February 20 2025 09:05:24
root / root
0644
taskpool.h
3.622 KB
February 20 2025 09:05:24
root / root
0644
thread.h
1.471 KB
February 20 2025 09:05:24
root / root
0644
time.h
8.668 KB
February 20 2025 09:05:24
root / root
0644
timer.h
10.542 KB
February 20 2025 09:05:24
root / root
0644
tm.h
0.874 KB
February 20 2025 09:05:24
root / root
0644
types.h
5.645 KB
February 20 2025 09:05:24
root / root
0644
utf8.h
0.906 KB
February 20 2025 09:05:24
root / root
0644
util.h
10.29 KB
February 20 2025 09:05:24
root / root
0644
version.h
0.673 KB
February 20 2025 09:05:24
root / root
0644
xml.h
1.068 KB
February 20 2025 09:05:24
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF