/* SPDX-License-Identifier: MIT */
#ifndef __XEN_PUBLIC_XENPMU_H__
#define __XEN_PUBLIC_XENPMU_H__
#include "xen.h"
#define XENPMU_VER_MAJ 0
#define XENPMU_VER_MIN 1
/*
* ` enum neg_errnoval
* ` HYPERVISOR_xenpmu_op ( enum xenpmu_op cmd , struct xenpmu_params * args ) ;
*
* @ cmd = = XENPMU_ * ( PMU operation )
* @ args = = struct xenpmu_params
*/
/* ` enum xenpmu_op { */
#define XENPMU_mode_get 0 /* Also used for getting PMU version */
#define XENPMU_mode_set 1
#define XENPMU_feature_get 2
#define XENPMU_feature_set 3
#define XENPMU_init 4
#define XENPMU_finish 5
#define XENPMU_lvtpc_set 6
#define XENPMU_flush 7
/* ` } */
/* Parameters structure for HYPERVISOR_xenpmu_op call */
struct xen_pmu_params {
/* IN/OUT parameters */
struct {
uint32_t maj;
uint32_t min;
} version;
uint64_t val;
/* IN parameters */
uint32_t vcpu;
uint32_t pad;
};
/* PMU modes:
* - XENPMU_MODE_OFF : No PMU virtualization
* - XENPMU_MODE_SELF : Guests can profile themselves
* - XENPMU_MODE_HV : Guests can profile themselves , dom0 profiles
* itself and Xen
* - XENPMU_MODE_ALL : Only dom0 has access to VPMU and it profiles
* everyone : itself , the hypervisor and the guests .
*/
#define XENPMU_MODE_OFF 0
#define XENPMU_MODE_SELF (1 <<0 )
#define XENPMU_MODE_HV (1 <<1 )
#define XENPMU_MODE_ALL (1 <<2 )
/*
* PMU features :
* - XENPMU_FEATURE_INTEL_BTS : Intel BTS support ( ignored on AMD )
*/
#define XENPMU_FEATURE_INTEL_BTS 1
/*
* Shared PMU data between hypervisor and PV ( H ) domains .
*
* The hypervisor fills out this structure during PMU interrupt and sends an
* interrupt to appropriate VCPU .
* Architecture - independent fields of xen_pmu_data are WO for the hypervisor
* and RO for the guest but some fields in xen_pmu_arch can be writable
* by both the hypervisor and the guest ( see arch - $ arch / pmu . h ) .
*/
struct xen_pmu_data {
/* Interrupted VCPU */
uint32_t vcpu_id;
/*
* Physical processor on which the interrupt occurred . On non - privileged
* guests set to vcpu_id ;
*/
uint32_t pcpu_id;
/*
* Domain that was interrupted . On non - privileged guests set to
* DOMID_SELF .
* On privileged guests can be DOMID_SELF , DOMID_XEN , or , when in
* XENPMU_MODE_ALL mode , domain ID of another domain .
*/
domid_t domain_id;
uint8_t pad[6 ];
/* Architecture-specific information */
struct xen_pmu_arch pmu;
};
#endif /* __XEN_PUBLIC_XENPMU_H__ */
Messung V0.5 in Prozent C=85 H=100 G=92
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland