SILENT KILLERPanel

Current Path: > > usr > include > bind9 > isc >


Operation   : Linux premium131.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
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/include/bind9/isc/

NameTypeSizeLast ModifiedActions
aes.h File 1080 bytes February 20 2025 09:05:24.
app.h File 10478 bytes February 20 2025 09:05:24.
assertions.h File 2907 bytes February 20 2025 09:05:24.
atomic.h File 4168 bytes February 20 2025 09:05:24.
backtrace.h File 3891 bytes February 20 2025 09:05:24.
base32.h File 4453 bytes February 20 2025 09:05:24.
base64.h File 2866 bytes February 20 2025 09:05:24.
bind9.h File 830 bytes February 20 2025 09:05:24.
boolean.h File 594 bytes February 20 2025 09:05:24.
buffer.h File 26268 bytes February 20 2025 09:05:24.
bufferlist.h File 1452 bytes February 20 2025 09:05:24.
cmocka.h File 1383 bytes February 20 2025 09:05:24.
commandline.h File 1713 bytes February 20 2025 09:05:24.
condition.h File 1478 bytes February 20 2025 09:05:24.
counter.h File 1926 bytes February 20 2025 09:05:24.
crc64.h File 998 bytes February 20 2025 09:05:24.
deprecated.h File 623 bytes February 20 2025 09:05:24.
dir.h File 1598 bytes February 20 2025 09:05:24.
endian.h File 4778 bytes February 20 2025 09:05:24.
entropy.h File 10373 bytes February 20 2025 09:05:24.
errno.h File 659 bytes February 20 2025 09:05:24.
errno2result.h File 902 bytes February 20 2025 09:05:37.
error.h File 1430 bytes February 20 2025 09:05:24.
event.h File 3053 bytes February 20 2025 09:05:24.
eventclass.h File 1381 bytes February 20 2025 09:05:24.
file.h File 11667 bytes February 20 2025 09:05:24.
formatcheck.h File 893 bytes February 20 2025 09:05:24.
fsaccess.h File 7442 bytes February 20 2025 09:05:24.
hash.h File 7662 bytes February 20 2025 09:05:24.
heap.h File 5264 bytes February 20 2025 09:05:24.
hex.h File 2806 bytes February 20 2025 09:05:24.
hmacmd5.h File 1787 bytes February 20 2025 09:05:24.
hmacsha.h File 4511 bytes February 20 2025 09:05:24.
ht.h File 4396 bytes February 20 2025 09:05:24.
httpd.h File 2318 bytes February 20 2025 09:05:24.
int.h File 1088 bytes February 20 2025 09:05:24.
interfaceiter.h File 3120 bytes February 20 2025 09:05:24.
iterated_hash.h File 1046 bytes February 20 2025 09:05:24.
json.h File 1459 bytes February 20 2025 09:05:24.
keyboard.h File 989 bytes February 20 2025 09:05:24.
lang.h File 637 bytes February 20 2025 09:05:24.
lex.h File 9771 bytes February 20 2025 09:05:24.
lfsr.h File 2958 bytes February 20 2025 09:05:24.
lib.h File 1068 bytes February 20 2025 09:05:24.
likely.h File 818 bytes February 20 2025 09:05:24.
list.h File 5751 bytes February 20 2025 09:05:24.
log.h File 28734 bytes February 20 2025 09:05:24.
magic.h File 994 bytes February 20 2025 09:05:24.
md5.h File 2380 bytes February 20 2025 09:05:24.
mem.h File 21110 bytes February 20 2025 09:05:24.
meminfo.h File 710 bytes February 20 2025 09:05:24.
msgcat.h File 2726 bytes February 20 2025 09:05:24.
msgs.h File 8422 bytes February 20 2025 09:05:24.
mutex.h File 3524 bytes February 20 2025 09:05:24.
mutexblock.h File 1375 bytes February 20 2025 09:05:24.
net.h File 10534 bytes February 20 2025 09:05:24.
netaddr.h File 4590 bytes February 20 2025 09:05:24.
netdb.h File 863 bytes February 20 2025 09:05:24.
netscope.h File 967 bytes February 20 2025 09:05:24.
offset.h File 700 bytes February 20 2025 09:05:24.
once.h File 983 bytes February 20 2025 09:05:24.
ondestroy.h File 2799 bytes February 20 2025 09:05:24.
os.h File 671 bytes February 20 2025 09:05:24.
parseint.h File 1542 bytes February 20 2025 09:05:24.
platform.h File 9717 bytes February 20 2025 09:05:24.
pool.h File 3502 bytes February 20 2025 09:05:24.
portset.h File 3295 bytes February 20 2025 09:05:24.
print.h File 2475 bytes February 20 2025 09:05:24.
queue.h File 5204 bytes February 20 2025 09:05:24.
quota.h File 2440 bytes February 20 2025 09:05:24.
radix.h File 6491 bytes February 20 2025 09:05:24.
random.h File 3582 bytes February 20 2025 09:05:24.
ratelimiter.h File 3497 bytes February 20 2025 09:05:24.
refcount.h File 8193 bytes February 20 2025 09:05:24.
regex.h File 767 bytes February 20 2025 09:05:24.
region.h File 2034 bytes February 20 2025 09:05:24.
resource.h File 2862 bytes February 20 2025 09:05:24.
result.h File 4982 bytes February 20 2025 09:05:24.
resultclass.h File 1599 bytes February 20 2025 09:05:24.
rwlock.h File 3807 bytes February 20 2025 09:05:24.
safe.h File 1352 bytes February 20 2025 09:05:24.
serial.h File 1368 bytes February 20 2025 09:05:24.
sha1.h File 1556 bytes February 20 2025 09:05:24.
sha2.h File 5733 bytes February 20 2025 09:05:24.
siphash.h File 734 bytes February 20 2025 09:05:24.
sockaddr.h File 6039 bytes February 20 2025 09:05:24.
socket.h File 36655 bytes February 20 2025 09:05:24.
stat.h File 806 bytes February 20 2025 09:05:24.
stats.h File 3709 bytes February 20 2025 09:05:24.
stdatomic.h File 5250 bytes February 20 2025 09:05:24.
stdio.h File 1787 bytes February 20 2025 09:05:24.
stdlib.h File 704 bytes February 20 2025 09:05:24.
stdtime.h File 1065 bytes February 20 2025 09:05:24.
strerror.h File 777 bytes February 20 2025 09:05:24.
string.h File 6019 bytes February 20 2025 09:05:24.
symtab.h File 4326 bytes February 20 2025 09:05:24.
syslog.h File 844 bytes February 20 2025 09:05:24.
task.h File 21544 bytes February 20 2025 09:05:24.
taskpool.h File 3709 bytes February 20 2025 09:05:24.
thread.h File 1506 bytes February 20 2025 09:05:24.
time.h File 8876 bytes February 20 2025 09:05:24.
timer.h File 10795 bytes February 20 2025 09:05:24.
tm.h File 895 bytes February 20 2025 09:05:24.
types.h File 5780 bytes February 20 2025 09:05:24.
utf8.h File 928 bytes February 20 2025 09:05:24.
util.h File 10537 bytes February 20 2025 09:05:24.
version.h File 689 bytes February 20 2025 09:05:24.
xml.h File 1094 bytes February 20 2025 09:05:24.

Reading File: //usr/include/bind9/isc//queue.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.
 */


/*
 * This is a generic implementation of a two-lock concurrent queue.
 * There are built-in mutex locks for the head and tail of the queue,
 * allowing elements to be safely added and removed at the same time.
 *
 * NULL is "end of list"
 * -1 is "not linked"
 */

#ifndef ISC_QUEUE_H
#define ISC_QUEUE_H 1

#include <stdbool.h>

#include <isc/assertions.h>
#include <isc/mutex.h>

#ifdef ISC_QUEUE_CHECKINIT
#define ISC_QLINK_INSIST(x) ISC_INSIST(x)
#else
#define ISC_QLINK_INSIST(x) (void)0
#endif

#define ISC_QLINK(type) struct { type *prev, *next; }

#define ISC_QLINK_INIT(elt, link) \
	do { \
		(elt)->link.next = (elt)->link.prev = (void *)(-1); \
	} while(0)

#define ISC_QLINK_LINKED(elt, link) ((void*)(elt)->link.next != (void*)(-1))

#define ISC_QUEUE(type) struct { \
	type *head, *tail; \
	isc_mutex_t headlock, taillock; \
}

#define ISC_QUEUE_INIT(queue, link) \
	do { \
		(void) isc_mutex_init(&(queue).taillock); \
		(void) isc_mutex_init(&(queue).headlock); \
		(queue).tail = (queue).head = NULL; \
	} while (0)

#define ISC_QUEUE_EMPTY(queue) ((queue).head == NULL)

#define ISC_QUEUE_DESTROY(queue) \
	do { \
		ISC_QLINK_INSIST(ISC_QUEUE_EMPTY(queue)); \
		(void) isc_mutex_destroy(&(queue).taillock); \
		(void) isc_mutex_destroy(&(queue).headlock); \
	} while (0)

/*
 * queues are meant to separate the locks at either end.  For best effect, that
 * means keeping the ends separate - i.e. non-empty queues work best.
 *
 * a push to an empty queue has to take the pop lock to update
 * the pop side of the queue.
 * Popping the last entry has to take the push lock to update
 * the push side of the queue.
 *
 * The order is (pop, push), because a pop is presumably in the
 * latency path and a push is when we're done.
 *
 * We do an MT hot test in push to see if we need both locks, so we can
 * acquire them in order.  Hopefully that makes the case where we get
 * the push lock and find we need the pop lock (and have to release it) rare.
 *
 * > 1 entry - no collision, push works on one end, pop on the other
 *   0 entry - headlock race
 *     pop wins - return(NULL), push adds new as both head/tail
 *     push wins - updates head/tail, becomes 1 entry case.
 *   1 entry - taillock race
 *     pop wins - return(pop) sets head/tail NULL, becomes 0 entry case
 *     push wins - updates {head,tail}->link.next, pop updates head
 *                 with new ->link.next and doesn't update tail
 *
 */
#define ISC_QUEUE_PUSH(queue, elt, link) \
	do { \
		bool headlocked = false; \
		ISC_QLINK_INSIST(!ISC_QLINK_LINKED(elt, link)); \
		LOCK(&(queue).taillock); \
		if ((queue).tail == NULL) { \
			UNLOCK(&(queue).taillock); \
			LOCK(&(queue).headlock); \
			LOCK(&(queue).taillock); \
			headlocked = true; \
		} \
		(elt)->link.prev = (queue).tail; \
		(elt)->link.next = NULL; \
		if ((queue).tail != NULL) \
			(queue).tail->link.next = (elt); \
		(queue).tail = (elt); \
		UNLOCK(&(queue).taillock); \
		if (headlocked) { \
			if ((queue).head == NULL) \
				(queue).head = (elt); \
			UNLOCK(&(queue).headlock); \
		} \
	} while (0)

#define ISC_QUEUE_POP(queue, link, ret) \
	do { \
		LOCK(&(queue).headlock); \
		ret = (queue).head; \
		while (ret != NULL) { \
			if (ret->link.next == NULL) { \
				LOCK(&(queue).taillock); \
				if (ret->link.next == NULL) { \
					(queue).head = (queue).tail = NULL; \
					UNLOCK(&(queue).taillock); \
					break; \
				}\
				UNLOCK(&(queue).taillock); \
			} \
			(queue).head = ret->link.next; \
			(queue).head->link.prev = NULL; \
			break; \
		} \
		UNLOCK(&(queue).headlock); \
		if (ret != NULL) \
			(ret)->link.next = (ret)->link.prev = (void *)(-1); \
	} while(0)

#define ISC_QUEUE_UNLINK(queue, elt, link) \
	do { \
		ISC_QLINK_INSIST(ISC_QLINK_LINKED(elt, link)); \
		LOCK(&(queue).headlock); \
		LOCK(&(queue).taillock); \
		if ((elt)->link.prev == NULL) \
			(queue).head = (elt)->link.next; \
		else \
			(elt)->link.prev->link.next = (elt)->link.next; \
		if ((elt)->link.next == NULL) \
			(queue).tail = (elt)->link.prev; \
		else \
			(elt)->link.next->link.prev = (elt)->link.prev; \
		UNLOCK(&(queue).taillock); \
		UNLOCK(&(queue).headlock); \
		(elt)->link.next = (elt)->link.prev = (void *)(-1); \
	} while(0)

#define ISC_QUEUE_UNLINKIFLINKED(queue, elt, link) \
	do { \
		LOCK(&(queue).headlock); \
		LOCK(&(queue).taillock); \
		if (ISC_QLINK_LINKED(elt, link)) { \
			if ((elt)->link.prev == NULL) \
				(queue).head = (elt)->link.next; \
			else \
				(elt)->link.prev->link.next = (elt)->link.next; \
			if ((elt)->link.next == NULL) \
				(queue).tail = (elt)->link.prev; \
			else \
				(elt)->link.next->link.prev = (elt)->link.prev; \
		} \
		UNLOCK(&(queue).taillock); \
		UNLOCK(&(queue).headlock); \
		(elt)->link.next = (elt)->link.prev = (void *)(-1); \
	} while(0)

#endif /* ISC_QUEUE_H */

SILENT KILLER Tool