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//timer.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_TIMER_H
#define ISC_TIMER_H 1

/*****
 ***** Module Info
 *****/

/*! \file isc/timer.h
 * \brief Provides timers which are event sources in the task system.
 *
 * Three types of timers are supported:
 *
 *\li	'ticker' timers generate a periodic tick event.
 *
 *\li	'once' timers generate an idle timeout event if they are idle for too
 *	long, and generate a life timeout event if their lifetime expires.
 *	They are used to implement both (possibly expiring) idle timers and
 *	'one-shot' timers.
 *
 *\li	'limited' timers generate a periodic tick event until they reach
 *	their lifetime when they generate a life timeout event.
 *
 *\li	'inactive' timers generate no events.
 *
 * Timers can change type.  It is typical to create a timer as
 * an 'inactive' timer and then change it into a 'ticker' or
 * 'once' timer.
 *
 *\li MP:
 *	The module ensures appropriate synchronization of data structures it
 *	creates and manipulates.
 *	Clients of this module must not be holding a timer's task's lock when
 *	making a call that affects that timer.  Failure to follow this rule
 *	can result in deadlock.
 *	The caller must ensure that isc_timermgr_destroy() is called only
 *	once for a given manager.
 *
 * \li Reliability:
 *	No anticipated impact.
 *
 * \li Resources:
 *	TBS
 *
 * \li Security:
 *	No anticipated impact.
 *
 * \li Standards:
 *	None.
 */


/***
 *** Imports
 ***/

#include <stdbool.h>

#include <isc/types.h>
#include <isc/event.h>
#include <isc/eventclass.h>
#include <isc/lang.h>
#include <isc/time.h>

ISC_LANG_BEGINDECLS

/***
 *** Types
 ***/

/*% Timer Type */
typedef enum {
	isc_timertype_undefined = -1,	/*%< Undefined */
	isc_timertype_ticker = 0, 	/*%< Ticker */
	isc_timertype_once = 1, 	/*%< Once */
	isc_timertype_limited = 2, 	/*%< Limited */
	isc_timertype_inactive = 3 	/*%< Inactive */
} isc_timertype_t;

typedef struct isc_timerevent {
	struct isc_event	common;
	isc_time_t		due;
} isc_timerevent_t;

#define ISC_TIMEREVENT_FIRSTEVENT	(ISC_EVENTCLASS_TIMER + 0)
#define ISC_TIMEREVENT_TICK		(ISC_EVENTCLASS_TIMER + 1)
#define ISC_TIMEREVENT_IDLE		(ISC_EVENTCLASS_TIMER + 2)
#define ISC_TIMEREVENT_LIFE		(ISC_EVENTCLASS_TIMER + 3)
#define ISC_TIMEREVENT_LASTEVENT	(ISC_EVENTCLASS_TIMER + 65535)

/*% Timer and timer manager methods */
typedef struct {
	void		(*destroy)(isc_timermgr_t **managerp);
	isc_result_t	(*timercreate)(isc_timermgr_t *manager,
				       isc_timertype_t type,
				       const isc_time_t *expires,
				       const isc_interval_t *interval,
				       isc_task_t *task,
				       isc_taskaction_t action,
				       void *arg,
				       isc_timer_t **timerp);
} isc_timermgrmethods_t;

typedef struct {
	void		(*attach)(isc_timer_t *timer, isc_timer_t **timerp);
	void		(*detach)(isc_timer_t **timerp);
	isc_result_t	(*reset)(isc_timer_t *timer, isc_timertype_t type,
				 const isc_time_t *expires,
				 const isc_interval_t *interval,
				 bool purge);
	isc_result_t	(*touch)(isc_timer_t *timer);
} isc_timermethods_t;

/*%
 * This structure is actually just the common prefix of a timer manager
 * object implementation's version of an isc_timermgr_t.
 * \brief
 * Direct use of this structure by clients is forbidden.  timer implementations
 * may change the structure.  'magic' must be ISCAPI_TIMERMGR_MAGIC for any
 * of the isc_timer_ routines to work.  timer implementations must maintain
 * all timer invariants.
 */
struct isc_timermgr {
	unsigned int		impmagic;
	unsigned int		magic;
	isc_timermgrmethods_t	*methods;
};

#define ISCAPI_TIMERMGR_MAGIC		ISC_MAGIC('A','t','m','g')
#define ISCAPI_TIMERMGR_VALID(m)	((m) != NULL && \
					 (m)->magic == ISCAPI_TIMERMGR_MAGIC)

/*%
 * This is the common prefix of a timer object.  The same note as
 * that for the timermgr structure applies.
 */
struct isc_timer {
	unsigned int		impmagic;
	unsigned int		magic;
	isc_timermethods_t	*methods;
};

#define ISCAPI_TIMER_MAGIC	ISC_MAGIC('A','t','m','r')
#define ISCAPI_TIMER_VALID(s)	((s) != NULL && \
				 (s)->magic == ISCAPI_TIMER_MAGIC)

/***
 *** Timer and Timer Manager Functions
 ***
 *** Note: all Ensures conditions apply only if the result is success for
 *** those functions which return an isc_result_t.
 ***/

isc_result_t
isc_timer_create(isc_timermgr_t *manager,
		 isc_timertype_t type,
		 const isc_time_t *expires,
		 const isc_interval_t *interval,
		 isc_task_t *task,
		 isc_taskaction_t action,
		 void *arg,
		 isc_timer_t **timerp);
/*%<
 * Create a new 'type' timer managed by 'manager'.  The timers parameters
 * are specified by 'expires' and 'interval'.  Events will be posted to
 * 'task' and when dispatched 'action' will be called with 'arg' as the
 * arg value.  The new timer is returned in 'timerp'.
 *
 * Notes:
 *
 *\li	For ticker timers, the timer will generate a 'tick' event every
 *	'interval' seconds.  The value of 'expires' is ignored.
 *
 *\li	For once timers, 'expires' specifies the time when a life timeout
 *	event should be generated.  If 'expires' is 0 (the epoch), then no life
 *	timeout will be generated.  'interval' specifies how long the timer
 *	can be idle before it generates an idle timeout.  If 0, then no
 *	idle timeout will be generated.
 *
 *\li	If 'expires' is NULL, the epoch will be used.
 *
 *	If 'interval' is NULL, the zero interval will be used.
 *
 * Requires:
 *
 *\li	'manager' is a valid manager
 *
 *\li	'task' is a valid task
 *
 *\li	'action' is a valid action
 *
 *\li	'expires' points to a valid time, or is NULL.
 *
 *\li	'interval' points to a valid interval, or is NULL.
 *
 *\li	type == isc_timertype_inactive ||
 *	('expires' and 'interval' are not both 0)
 *
 *\li	'timerp' is a valid pointer, and *timerp == NULL
 *
 * Ensures:
 *
 *\li	'*timerp' is attached to the newly created timer
 *
 *\li	The timer is attached to the task
 *
 *\li	An idle timeout will not be generated until at least Now + the
 *	timer's interval if 'timer' is a once timer with a non-zero
 *	interval.
 *
 * Returns:
 *
 *\li	Success
 *\li	No memory
 *\li	Unexpected error
 */

isc_result_t
isc_timer_reset(isc_timer_t *timer,
		isc_timertype_t type,
		const isc_time_t *expires,
		const isc_interval_t *interval,
		bool purge);
/*%<
 * Change the timer's type, expires, and interval values to the given
 * values.  If 'purge' is TRUE, any pending events from this timer
 * are purged from its task's event queue.
 *
 * Notes:
 *
 *\li	If 'expires' is NULL, the epoch will be used.
 *
 *\li	If 'interval' is NULL, the zero interval will be used.
 *
 * Requires:
 *
 *\li	'timer' is a valid timer
 *
 *\li	The same requirements that isc_timer_create() imposes on 'type',
 *	'expires' and 'interval' apply.
 *
 * Ensures:
 *
 *\li	An idle timeout will not be generated until at least Now + the
 *	timer's interval if 'timer' is a once timer with a non-zero
 *	interval.
 *
 * Returns:
 *
 *\li	Success
 *\li	No memory
 *\li	Unexpected error
 */

isc_result_t
isc_timer_touch(isc_timer_t *timer);
/*%<
 * Set the last-touched time of 'timer' to the current time.
 *
 * Requires:
 *
 *\li	'timer' is a valid once timer.
 *
 * Ensures:
 *
 *\li	An idle timeout will not be generated until at least Now + the
 *	timer's interval if 'timer' is a once timer with a non-zero
 *	interval.
 *
 * Returns:
 *
 *\li	Success
 *\li	Unexpected error
 */

void
isc_timer_attach(isc_timer_t *timer, isc_timer_t **timerp);
/*%<
 * Attach *timerp to timer.
 *
 * Requires:
 *
 *\li	'timer' is a valid timer.
 *
 *\li	'timerp' points to a NULL timer.
 *
 * Ensures:
 *
 *\li	*timerp is attached to timer.
 */

void
isc_timer_detach(isc_timer_t **timerp);
/*%<
 * Detach *timerp from its timer.
 *
 * Requires:
 *
 *\li	'timerp' points to a valid timer.
 *
 * Ensures:
 *
 *\li	*timerp is NULL.
 *
 *\li	If '*timerp' is the last reference to the timer,
 *	then:
 *
 *\code
 *		The timer will be shutdown
 *
 *		The timer will detach from its task
 *
 *		All resources used by the timer have been freed
 *
 *		Any events already posted by the timer will be purged.
 *		Therefore, if isc_timer_detach() is called in the context
 *		of the timer's task, it is guaranteed that no more
 *		timer event callbacks will run after the call.
 *\endcode
 */

isc_timertype_t
isc_timer_gettype(isc_timer_t *timer);
/*%<
 * Return the timer type.
 *
 * Requires:
 *
 *\li	'timer' to be a valid timer.
 */

isc_result_t
isc_timermgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
			 isc_timermgr_t **managerp);

isc_result_t
isc_timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp);
/*%<
 * Create a timer manager.  isc_timermgr_createinctx() also associates
 * the new manager with the specified application context.
 *
 * Notes:
 *
 *\li	All memory will be allocated in memory context 'mctx'.
 *
 * Requires:
 *
 *\li	'mctx' is a valid memory context.
 *
 *\li	'managerp' points to a NULL isc_timermgr_t.
 *
 *\li	'actx' is a valid application context (for createinctx()).
 *
 * Ensures:
 *
 *\li	'*managerp' is a valid isc_timermgr_t.
 *
 * Returns:
 *
 *\li	Success
 *\li	No memory
 *\li	Unexpected error
 */

void
isc_timermgr_destroy(isc_timermgr_t **managerp);
/*%<
 * Destroy a timer manager.
 *
 * Notes:
 *
 *\li	This routine blocks until there are no timers left in the manager,
 *	so if the caller holds any timer references using the manager, it
 *	must detach them before calling isc_timermgr_destroy() or it will
 *	block forever.
 *
 * Requires:
 *
 *\li	'*managerp' is a valid isc_timermgr_t.
 *
 * Ensures:
 *
 *\li	*managerp == NULL
 *
 *\li	All resources used by the manager have been freed.
 */

void isc_timermgr_poke(isc_timermgr_t *m);

/*%<
 * See isc_timermgr_create() above.
 */
typedef isc_result_t
(*isc_timermgrcreatefunc_t)(isc_mem_t *mctx, isc_timermgr_t **managerp);

isc_result_t
isc__timer_register(void);
/*%<
 * Register a new timer management implementation and add it to the list of
 * supported implementations.  This function must be called when a different
 * event library is used than the one contained in the ISC library.
 */

isc_result_t
isc_timer_register(isc_timermgrcreatefunc_t createfunc);
/*%<
 * A short cut function that specifies the timer management module in the ISC
 * library for isc_timer_register().  An application that uses the ISC library
 * usually do not have to care about this function: it would call
 * isc_lib_register(), which internally calls this function.
 */

ISC_LANG_ENDDECLS

#endif /* ISC_TIMER_H */

SILENT KILLER Tool