mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-09 09:40:45 -04:00
Instead of juggling different logging context, use one single logging context that gets initialized in the libisc constructor and destroyed in the libisc destructor. The application is still responsible for creating the logging configuration before using the isc_log API. This patch is first in the series in a way that it is transparent for the users of the isc_log API as the isc_log_create() and isc_log_destroy() are now thin shims that emulate the previous functionality, but it isc_log_create() will always return internal isc__lctx pointer and isc_log_destroy() will actually not destroy the internal isc__lctx context. Signed-off-by: Ondřej Surý <ondrej@isc.org>
74 lines
1.6 KiB
C
74 lines
1.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.
|
|
*/
|
|
|
|
/*! \file */
|
|
|
|
#include <isc/hash.h>
|
|
#include <isc/iterated_hash.h>
|
|
#include <isc/log.h>
|
|
#include <isc/md.h>
|
|
#include <isc/mem.h>
|
|
#include <isc/os.h>
|
|
#include <isc/tls.h>
|
|
#include <isc/urcu.h>
|
|
#include <isc/util.h>
|
|
#include <isc/uv.h>
|
|
#include <isc/xml.h>
|
|
|
|
#include "mem_p.h"
|
|
#include "mutex_p.h"
|
|
#include "os_p.h"
|
|
|
|
#ifndef ISC_CONSTRUCTOR
|
|
#error Either __attribute__((constructor|destructor))__ or DllMain support needed to compile BIND 9.
|
|
#endif
|
|
|
|
/***
|
|
*** Functions
|
|
***/
|
|
|
|
void
|
|
isc__initialize(void) ISC_CONSTRUCTOR;
|
|
void
|
|
isc__shutdown(void) ISC_DESTRUCTOR;
|
|
|
|
void
|
|
isc__initialize(void) {
|
|
isc__os_initialize();
|
|
isc__mutex_initialize();
|
|
isc__mem_initialize();
|
|
isc__log_initialize();
|
|
isc__tls_initialize();
|
|
isc__uv_initialize();
|
|
isc__xml_initialize();
|
|
isc__md_initialize();
|
|
isc__hash_initialize();
|
|
isc__iterated_hash_initialize();
|
|
(void)isc_os_ncpus();
|
|
rcu_register_thread();
|
|
}
|
|
|
|
void
|
|
isc__shutdown(void) {
|
|
isc__iterated_hash_shutdown();
|
|
isc__md_shutdown();
|
|
isc__xml_shutdown();
|
|
isc__uv_shutdown();
|
|
isc__tls_shutdown();
|
|
isc__log_shutdown();
|
|
isc__mem_shutdown();
|
|
isc__mutex_shutdown();
|
|
isc__os_shutdown();
|
|
/* should be after isc__mem_shutdown() which calls rcu_barrier() */
|
|
rcu_unregister_thread();
|
|
}
|