1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Structures for hypfs interface 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright IBM Corp. 2013 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author: Martin Schwidefsky <schwidefsky@de.ibm.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef _ASM_HYPFS_H 11*4882a593Smuzhiyun #define _ASM_HYPFS_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/types.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* 16*4882a593Smuzhiyun * IOCTL for binary interface /sys/kernel/debug/diag_304 17*4882a593Smuzhiyun */ 18*4882a593Smuzhiyun struct hypfs_diag304 { 19*4882a593Smuzhiyun __u32 args[2]; 20*4882a593Smuzhiyun __u64 data; 21*4882a593Smuzhiyun __u64 rc; 22*4882a593Smuzhiyun } __attribute__((packed)); 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define HYPFS_IOCTL_MAGIC 0x10 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #define HYPFS_DIAG304 \ 27*4882a593Smuzhiyun _IOWR(HYPFS_IOCTL_MAGIC, 0x20, struct hypfs_diag304) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* 30*4882a593Smuzhiyun * Structures for binary interface /sys/kernel/debug/diag_0c 31*4882a593Smuzhiyun */ 32*4882a593Smuzhiyun struct hypfs_diag0c_hdr { 33*4882a593Smuzhiyun __u64 len; /* Length of diag0c buffer without header */ 34*4882a593Smuzhiyun __u16 version; /* Version of header */ 35*4882a593Smuzhiyun char reserved1[6]; /* Reserved */ 36*4882a593Smuzhiyun char tod_ext[16]; /* TOD clock for diag0c */ 37*4882a593Smuzhiyun __u64 count; /* Number of entries (CPUs) in diag0c array */ 38*4882a593Smuzhiyun char reserved2[24]; /* Reserved */ 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun struct hypfs_diag0c_entry { 42*4882a593Smuzhiyun char date[8]; /* MM/DD/YY in EBCDIC */ 43*4882a593Smuzhiyun char time[8]; /* HH:MM:SS in EBCDIC */ 44*4882a593Smuzhiyun __u64 virtcpu; /* Virtual time consumed by the virt CPU (us) */ 45*4882a593Smuzhiyun __u64 totalproc; /* Total of virtual and simulation time (us) */ 46*4882a593Smuzhiyun __u32 cpu; /* Linux logical CPU number */ 47*4882a593Smuzhiyun __u32 reserved; /* Align to 8 byte */ 48*4882a593Smuzhiyun }; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun struct hypfs_diag0c_data { 51*4882a593Smuzhiyun struct hypfs_diag0c_hdr hdr; /* 64 byte header */ 52*4882a593Smuzhiyun struct hypfs_diag0c_entry entry[]; /* diag0c entry array */ 53*4882a593Smuzhiyun }; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #endif 56