2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-24 11:08:45 +00:00
bind/lib/isc/event.c
Ondřej Surý d1d88a2895 Add detailed tracing when TASKMGR_TRACE is defined
When TASKMGR_TRACE=1 is defined, the task and event objects have
detailed tracing information about function, file, line, and
backtrace (to the extent tracked by gcc) where it was created.

At exit, when there are unfinished tasks, they will be printed along
with the detailed information.
2022-04-19 14:25:23 +02:00

66 lines
1.4 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/event.h>
#include <isc/mem.h>
#include <isc/util.h>
/***
*** Events.
***/
static void
destroy(isc_event_t *event) {
isc_mem_t *mctx = event->ev_destroy_arg;
isc_mem_put(mctx, event, event->ev_size);
}
isc_event_t *
isc__event_allocate(isc_mem_t *mctx, void *sender, isc_eventtype_t type,
isc_taskaction_t action, void *arg,
size_t size ISC__EVENT_FLARG) {
isc_event_t *event;
REQUIRE(size >= sizeof(struct isc_event));
REQUIRE(action != NULL);
event = isc_mem_get(mctx, size);
ISC_EVENT_INIT_PASS(event, size, 0, NULL, type, action, arg, sender,
destroy, mctx);
return (event);
}
void
isc_event_free(isc_event_t **eventp) {
isc_event_t *event;
REQUIRE(eventp != NULL);
event = *eventp;
*eventp = NULL;
REQUIRE(event != NULL);
REQUIRE(!ISC_LINK_LINKED(event, ev_link));
REQUIRE(!ISC_LINK_LINKED(event, ev_ratelink));
if (event->ev_destroy != NULL) {
(event->ev_destroy)(event);
}
}