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