xref: /freebsd/sys/kern/kern_ktr.c (revision 62ae6c89ad2b03770097d05590093f93b9d94e08)
162ae6c89SJason Evans /*
262ae6c89SJason Evans  * Copyright (c) 2000
362ae6c89SJason Evans  *	John Baldwin <jhb@FreeBSD.org>.  All rights reserved.
462ae6c89SJason Evans  *
562ae6c89SJason Evans  * Redistribution and use in source and binary forms, with or without
662ae6c89SJason Evans  * modification, are permitted provided that the following conditions
762ae6c89SJason Evans  * are met:
862ae6c89SJason Evans  * 1. Redistributions of source code must retain the above copyright
962ae6c89SJason Evans  *    notice, this list of conditions and the following disclaimer.
1062ae6c89SJason Evans  * 2. Redistributions in binary form must reproduce the above copyright
1162ae6c89SJason Evans  *    notice, this list of conditions and the following disclaimer in the
1262ae6c89SJason Evans  *    documentation and/or other materials provided with the distribution.
1362ae6c89SJason Evans  * 4. Neither the name of the author nor the names of any co-contributors
1462ae6c89SJason Evans  *    may be used to endorse or promote products derived from this software
1562ae6c89SJason Evans  *    without specific prior written permission.
1662ae6c89SJason Evans  *
1762ae6c89SJason Evans  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
1862ae6c89SJason Evans  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1962ae6c89SJason Evans  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2062ae6c89SJason Evans  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
2162ae6c89SJason Evans  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2262ae6c89SJason Evans  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2362ae6c89SJason Evans  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2462ae6c89SJason Evans  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2562ae6c89SJason Evans  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2662ae6c89SJason Evans  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2762ae6c89SJason Evans  * THE POSSIBILITY OF SUCH DAMAGE.
2862ae6c89SJason Evans  *
2962ae6c89SJason Evans  * $FreeBSD$
3062ae6c89SJason Evans  */
3162ae6c89SJason Evans 
3262ae6c89SJason Evans /*
3362ae6c89SJason Evans  * This module holds the global variables used by KTR.
3462ae6c89SJason Evans  */
3562ae6c89SJason Evans 
3662ae6c89SJason Evans #include <sys/types.h>
3762ae6c89SJason Evans #include <sys/time.h>
3862ae6c89SJason Evans #include <sys/ktr.h>
3962ae6c89SJason Evans #include <sys/linker_set.h>
4062ae6c89SJason Evans #include <sys/sysctl.h>
4162ae6c89SJason Evans 
4262ae6c89SJason Evans #ifdef KTR_EXTEND
4362ae6c89SJason Evans /*
4462ae6c89SJason Evans  * This variable is used only by gdb to work out what fields are in
4562ae6c89SJason Evans  * ktr_entry.
4662ae6c89SJason Evans  */
4762ae6c89SJason Evans int     ktr_extend = 1;
4862ae6c89SJason Evans SYSCTL_INT(_debug, OID_AUTO, ktr_extend, CTLFLAG_RD, &ktr_extend, 1, "");
4962ae6c89SJason Evans #else
5062ae6c89SJason Evans int     ktr_extend = 0;
5162ae6c89SJason Evans SYSCTL_INT(_debug, OID_AUTO, ktr_extend, CTLFLAG_RD, &ktr_extend, 0, "");
5262ae6c89SJason Evans #endif
5362ae6c89SJason Evans 
5462ae6c89SJason Evans int	ktr_cpumask = KTR_CPUMASK;
5562ae6c89SJason Evans SYSCTL_INT(_debug, OID_AUTO, ktr_cpumask, CTLFLAG_RW, &ktr_cpumask, KTR_CPUMASK, "");
5662ae6c89SJason Evans 
5762ae6c89SJason Evans int	ktr_mask = KTR_MASK;
5862ae6c89SJason Evans SYSCTL_INT(_debug, OID_AUTO, ktr_mask, CTLFLAG_RW, &ktr_mask, KTR_MASK, "");
5962ae6c89SJason Evans 
6062ae6c89SJason Evans int	ktr_entries = KTR_ENTRIES;
6162ae6c89SJason Evans SYSCTL_INT(_debug, OID_AUTO, ktr_entries, CTLFLAG_RD, &ktr_entries, KTR_ENTRIES, "");
6262ae6c89SJason Evans 
6362ae6c89SJason Evans volatile int	ktr_idx = 0;
6462ae6c89SJason Evans struct	ktr_entry ktr_buf[KTR_ENTRIES];
65