1 /* 2 * Copyright (c) 2004 The DragonFly Project. All rights reserved. 3 * 4 * This code is derived from software contributed to The DragonFly Project 5 * by Joerg Sonnenberger <joerg@bec.de>. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * 3. Neither the name of The DragonFly Project nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific, prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * $DragonFly: src/sys/sys/kinfo.h,v 1.7 2006/06/08 18:25:48 dillon Exp $ 35 */ 36 37 #ifndef _SYS_KINFO_H_ 38 #define _SYS_KINFO_H_ 39 40 #ifndef _SYS_TYPES_H_ 41 #include <sys/types.h> 42 #endif 43 #ifndef _SYS_PARAM_H_ 44 #include <sys/param.h> 45 #endif 46 47 struct kinfo_file { 48 size_t f_size; /* size of struct kinfo_file */ 49 pid_t f_pid; /* owning process */ 50 uid_t f_uid; /* effective uid of owning process */ 51 int f_fd; /* descriptor number */ 52 void *f_file; /* address of struct file */ 53 short f_type; /* descriptor type */ 54 int f_count; /* reference count */ 55 int f_msgcount; /* references from message queue */ 56 off_t f_offset; /* file offset */ 57 void *f_data; /* file descriptor specific data */ 58 u_int f_flag; /* flags (see fcntl.h) */ 59 }; 60 61 /* 62 * CPU time statistics 63 */ 64 struct kinfo_cputime { 65 uint64_t cp_user; 66 uint64_t cp_nice; 67 uint64_t cp_sys; 68 uint64_t cp_intr; 69 uint64_t cp_idle; 70 }; 71 72 /* 73 * CPU system/interrupt program counter sampler 74 */ 75 #define PCTRACK_ARYSIZE 32 /* must be a power of 2 */ 76 #define PCTRACK_ARYMASK (PCTRACK_ARYSIZE - 1) 77 78 struct kinfo_pcheader { 79 int pc_ntrack; /* number of tracks per cpu (2) */ 80 int pc_arysize; /* size of storage array (32) */ 81 }; 82 83 struct kinfo_pctrack { 84 int pc_index; 85 void *pc_array[PCTRACK_ARYSIZE]; 86 }; 87 88 #define PCTRACK_SYS 0 89 #define PCTRACK_INT 1 90 #define PCTRACK_SIZE 2 91 92 struct kinfo_clockinfo { 93 int ci_hz; /* clock frequency */ 94 int ci_tick; /* micro-seconds per hz tick */ 95 int ci_tickadj; /* clock skew rate for adjtime() */ 96 int ci_stathz; /* statistics clock frequency */ 97 int ci_profhz; /* profiling clock frequency */ 98 }; 99 100 struct kinfo_prison { 101 int pr_version; 102 int pr_id; 103 char pr_path[MAXPATHLEN]; 104 char pr_host[MAXHOSTNAMELEN]; 105 uint32_t pr_ip; 106 }; 107 #define KINFO_PRISON_VERSION 1 108 109 #if defined(_KERNEL) 110 #ifdef SMP 111 #define cpu_time cputime_percpu[mycpuid] 112 #else 113 #define cpu_time cputime_percpu[0] 114 #endif 115 #endif 116 117 #if defined(_KERNEL) 118 extern struct kinfo_cputime cputime_percpu[MAXCPU]; 119 #endif 120 121 #endif /* !_SYS_KINFO_H_ */ 122