xref: /freebsd/usr.sbin/pmc/headers.hh (revision a79a051e7d16684b5bce7792dbfb4ad81f350b09)
193da997eSAli Mashtizadeh /*-
293da997eSAli Mashtizadeh  * SPDX-License-Identifier: BSD-2-Clause
393da997eSAli Mashtizadeh  *
493da997eSAli Mashtizadeh  * Copyright (c) 2026, Netflix, Inc.
593da997eSAli Mashtizadeh  *
693da997eSAli Mashtizadeh  * This software was developed by Ali Mashtizadeh under the sponsorship from
793da997eSAli Mashtizadeh  * Netflix, Inc.
893da997eSAli Mashtizadeh  *
993da997eSAli Mashtizadeh  * Redistribution and use in source and binary forms, with or without
1093da997eSAli Mashtizadeh  * modification, are permitted provided that the following conditions
1193da997eSAli Mashtizadeh  * are met:
1293da997eSAli Mashtizadeh  * 1. Redistributions of source code must retain the above copyright
1393da997eSAli Mashtizadeh  *    notice, this list of conditions and the following disclaimer.
1493da997eSAli Mashtizadeh  * 2. Redistributions in binary form must reproduce the above copyright
1593da997eSAli Mashtizadeh  *    notice, this list of conditions and the following disclaimer in the
1693da997eSAli Mashtizadeh  *    documentation and/or other materials provided with the distribution.
1793da997eSAli Mashtizadeh  *
1893da997eSAli Mashtizadeh  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1993da997eSAli Mashtizadeh  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2093da997eSAli Mashtizadeh  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2193da997eSAli Mashtizadeh  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2293da997eSAli Mashtizadeh  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2393da997eSAli Mashtizadeh  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2493da997eSAli Mashtizadeh  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2593da997eSAli Mashtizadeh  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2693da997eSAli Mashtizadeh  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2793da997eSAli Mashtizadeh  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2893da997eSAli Mashtizadeh  * SUCH DAMAGE.
2993da997eSAli Mashtizadeh  *
3093da997eSAli Mashtizadeh  */
3193da997eSAli Mashtizadeh 
3293da997eSAli Mashtizadeh #ifndef __HEADERS_HH__
3393da997eSAli Mashtizadeh #define __HEADERS_HH__
3493da997eSAli Mashtizadeh 
3593da997eSAli Mashtizadeh #define PMC_HEADER_MAGIC	0x504D434C
3693da997eSAli Mashtizadeh #define PMC_HEADER_VERSION	0x00
3793da997eSAli Mashtizadeh 
3893da997eSAli Mashtizadeh #define PMC_ARCH_AMD64		0x01
3993da997eSAli Mashtizadeh #define PMC_ARCH_ARM64		0x02
4093da997eSAli Mashtizadeh #define PMC_ARCH_PPC64		0x03
4193da997eSAli Mashtizadeh #define PMC_ARCH_RISCV64	0x04
42*a79a051eSAli Mashtizadeh #define PMC_ARCH_ARM		0x05
4393da997eSAli Mashtizadeh 
4493da997eSAli Mashtizadeh struct pmchdr_header
4593da997eSAli Mashtizadeh {
4693da997eSAli Mashtizadeh 	uint32_t	magic;
4793da997eSAli Mashtizadeh 	uint16_t	version;
4893da997eSAli Mashtizadeh 	uint16_t	arch;
4993da997eSAli Mashtizadeh };
5093da997eSAli Mashtizadeh 
5193da997eSAli Mashtizadeh #define INFOHDR_TYPE_DONE	0x00
5293da997eSAli Mashtizadeh #define INFOHDR_TYPE_SYSINFO	0x01
5393da997eSAli Mashtizadeh #define INFOHDR_TYPE_PMCINFO	0x02
5493da997eSAli Mashtizadeh #define INFOHDR_TYPE_CPUID	0x03
5593da997eSAli Mashtizadeh 
5693da997eSAli Mashtizadeh struct pmchdr_infohdr
5793da997eSAli Mashtizadeh {
5893da997eSAli Mashtizadeh 	uint8_t		type;
5993da997eSAli Mashtizadeh 	uint8_t		reserved0;
6093da997eSAli Mashtizadeh 	uint16_t	length;
6193da997eSAli Mashtizadeh 	uint32_t	_reserved1;
6293da997eSAli Mashtizadeh };
6393da997eSAli Mashtizadeh 
6493da997eSAli Mashtizadeh struct pmchdr_sysinfo
6593da997eSAli Mashtizadeh {
6693da997eSAli Mashtizadeh 	char		cpumodel[64];
6793da997eSAli Mashtizadeh 	char		osrelease[64];
6893da997eSAli Mashtizadeh 	char		buildid[64];
6993da997eSAli Mashtizadeh };
7093da997eSAli Mashtizadeh 
7193da997eSAli Mashtizadeh struct pmchdr_pmcinfo
7293da997eSAli Mashtizadeh {
7393da997eSAli Mashtizadeh 	uint64_t	rate;
7493da997eSAli Mashtizadeh 	char		pmc[];
7593da997eSAli Mashtizadeh };
7693da997eSAli Mashtizadeh 
7793da997eSAli Mashtizadeh struct pmchdr_cpuidinfo
7893da997eSAli Mashtizadeh {
7993da997eSAli Mashtizadeh 	uint32_t	cpuid[];
8093da997eSAli Mashtizadeh };
8193da997eSAli Mashtizadeh 
8293da997eSAli Mashtizadeh #endif
8393da997eSAli Mashtizadeh 
84