counter.c File Reference

#include <config.h>
#include <stddef.h>
#include <isc/counter.h>
#include <isc/magic.h>
#include <isc/mem.h>
#include <isc/util.h>

Go to the source code of this file.

Data Structures

struct  isc_counter

Defines

#define COUNTER_MAGIC   ISC_MAGIC('C', 'n', 't', 'r')
#define VALID_COUNTER(r)   ISC_MAGIC_VALID(r, COUNTER_MAGIC)

Functions

isc_result_t isc_counter_create (isc_mem_t *mctx, int limit, isc_counter_t **counterp)
 Allocate and initialize a counter object.
isc_result_t isc_counter_increment (isc_counter_t *counter)
 Increment the counter.
unsigned int isc_counter_used (isc_counter_t *counter)
 Return the current counter value.
void isc_counter_setlimit (isc_counter_t *counter, int limit)
 Set the counter limit.
void isc_counter_attach (isc_counter_t *source, isc_counter_t **targetp)
 Attach to a counter object, increasing its reference counter.
static void destroy (isc_counter_t *counter)
void isc_counter_detach (isc_counter_t **counterp)
 Detach (and destroy if reference counter has dropped to zero) a counter object.


Detailed Description

Definition in file counter.c.


Define Documentation

#define COUNTER_MAGIC   ISC_MAGIC('C', 'n', 't', 'r')

Definition at line 28 of file counter.c.

Referenced by isc_counter_create().

#define VALID_COUNTER ( r   )     ISC_MAGIC_VALID(r, COUNTER_MAGIC)

Definition at line 29 of file counter.c.

Referenced by isc_counter_attach(), isc_counter_detach(), isc_counter_setlimit(), and isc_counter_used().


Function Documentation

isc_result_t isc_counter_create ( isc_mem_t mctx,
int  limit,
isc_counter_t **  counterp 
)

Allocate and initialize a counter object.

Definition at line 41 of file counter.c.

References counter, COUNTER_MAGIC, isc_mem_attach(), isc_mem_get, isc_mem_put, isc_mutex_init, ISC_R_NOMEMORY, ISC_R_SUCCESS, isc_counter::limit, isc_counter::lock, isc_counter::magic, isc_counter::mctx, isc_counter::references, REQUIRE, and isc_counter::used.

Referenced by ATF_TC_BODY(), and fctx_create().

isc_result_t isc_counter_increment ( isc_counter_t counter  ) 

Increment the counter.

If the counter limit is nonzero and has been reached, then return ISC_R_QUOTA, otherwise ISC_R_SUCCESS. (The counter is incremented regardless of return value.)

Definition at line 70 of file counter.c.

References ISC_R_QUOTA, ISC_R_SUCCESS, isc_counter::limit, isc_counter::lock, LOCK, UNLOCK, and isc_counter::used.

Referenced by ATF_TC_BODY(), and fctx_try().

unsigned int isc_counter_used ( isc_counter_t counter  ) 

Return the current counter value.

Definition at line 83 of file counter.c.

References REQUIRE, isc_counter::used, and VALID_COUNTER.

Referenced by ATF_TC_BODY(), and fctx_try().

void isc_counter_setlimit ( isc_counter_t counter,
int  limit 
)

Set the counter limit.

Definition at line 90 of file counter.c.

References isc_counter::limit, isc_counter::lock, LOCK, REQUIRE, UNLOCK, and VALID_COUNTER.

Referenced by ATF_TC_BODY().

void isc_counter_attach ( isc_counter_t source,
isc_counter_t **  targetp 
)

Attach to a counter object, increasing its reference counter.

Definition at line 99 of file counter.c.

References INSIST, isc_counter::lock, LOCK, isc_counter::references, REQUIRE, UNLOCK, and VALID_COUNTER.

Referenced by fctx_create().

static void destroy ( isc_counter_t counter  )  [static]

Definition at line 112 of file counter.c.

References isc_mem_putanddetach, isc_mutex_destroy, isc_counter::lock, isc_counter::magic, and isc_counter::mctx.

Referenced by acache_cleaner_shutdown_action(), adb_shutdown(), authvalidated(), cleannode(), cnamevalidated(), detach(), dlvfetched(), dlvvalidated(), dns_acache_detach(), dns_acl_detach(), dns_dlzdestroy(), dns_keytable_detach(), dns_ntatable_detach(), dns_resolver_detach(), dns_ssutable_detach(), dns_tsigkeyring_dumpanddetach(), dns_validator_destroy(), dns_view_weakdetach(), doneloading(), dsfetched(), dsfetched2(), dsvalidated(), fetch_callback_validator(), internal_accept(), internal_connect(), isc___mem_putanddetach(), isc__socket_detach(), isc__timer_detach(), isc_counter_detach(), isc_entropy_destroysource(), isc_entropy_detach(), isc_event_allocate(), isc_event_constallocate(), isc_hash_ctxdetach(), isc_hash_destroy(), isc_rng_detach(), keyvalidated(), main(), notify_find_address(), ns_listenlist_detach(), req_shutdown(), resolver_shutdown(), shutdown_task(), validator_start(), view_flushanddetach(), and zt_flushanddetach().

void isc_counter_detach ( isc_counter_t **  counterp  ) 

Detach (and destroy if reference counter has dropped to zero) a counter object.

Definition at line 119 of file counter.c.

References counter, destroy(), INSIST, ISC_FALSE, ISC_TRUE, isc_counter::lock, LOCK, isc_counter::references, REQUIRE, UNLOCK, and VALID_COUNTER.

Referenced by ATF_TC_BODY(), fctx_create(), and fctx_destroy().


Generated on Tue Apr 28 17:41:14 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha