[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/kinfo.h

Version: -  FREEBSD  -  FREEBSD9  -  FREEBSD91  -  FREEBSD90  -  FREEBSD8  -  FREEBSD82  -  FREEBSD81  -  FREEBSD80  -  FREEBSD7  -  FREEBSD74  -  FREEBSD73  -  FREEBSD72  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  xnu-1699.24.8  -  xnu-2050.18.24  -  OPENSOLARIS  -  minix-3-1-1  -  FREEBSD-LIBC  -  FREEBSD8-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  3  -  10 

    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.13 2007/02/18 16:17:09 corecode Exp $
   35  */
   36 
   37 #ifndef _SYS_KINFO_H_
   38 #define _SYS_KINFO_H_
   39 
   40 #ifndef _KERNEL_STRUCTURES
   41 #define _KERNEL_STRUCTURES
   42 #endif
   43 
   44 #ifndef _SYS_TYPES_H_
   45 #include <sys/types.h>
   46 #endif
   47 #ifndef _SYS_PARAM_H_
   48 #include <sys/param.h>
   49 #endif
   50 #include <sys/resource.h>
   51 #include <sys/rtprio.h>
   52 #include <sys/proc.h>
   53 
   54 struct kinfo_file {
   55         size_t   f_size;        /* size of struct kinfo_file */
   56         pid_t    f_pid;         /* owning process */
   57         uid_t    f_uid;         /* effective uid of owning process */
   58         int      f_fd;          /* descriptor number */
   59         void    *f_file;        /* address of struct file */
   60         short    f_type;        /* descriptor type */
   61         int      f_count;       /* reference count */
   62         int      f_msgcount;    /* references from message queue */
   63         off_t    f_offset;      /* file offset */
   64         void    *f_data;        /* file descriptor specific data */
   65         u_int    f_flag;        /* flags (see fcntl.h) */
   66 };
   67 
   68 /*
   69  * CPU time statistics
   70  */
   71 struct kinfo_cputime {
   72         uint64_t        cp_user;
   73         uint64_t        cp_nice;
   74         uint64_t        cp_sys;
   75         uint64_t        cp_intr;
   76         uint64_t        cp_idle;
   77         uint64_t        cp_unused01;
   78         uint64_t        cp_unused02;
   79         uint64_t        cp_unused03;
   80         uint64_t        cp_stallpc;     /* code stall address */
   81         char            cp_msg[32];     /* code stall token or mplock */
   82 };
   83 
   84 /*
   85  * CPU system/interrupt program counter sampler
   86  */
   87 #define PCTRACK_ARYSIZE 32      /* must be a power of 2 */
   88 #define PCTRACK_ARYMASK (PCTRACK_ARYSIZE - 1)
   89 
   90 struct kinfo_pcheader {
   91         int             pc_ntrack;      /* number of tracks per cpu (2) */
   92         int             pc_arysize;     /* size of storage array (32) */
   93 };
   94 
   95 struct kinfo_pctrack {
   96         int             pc_index;
   97         void            *pc_array[PCTRACK_ARYSIZE];
   98 };
   99 
  100 #define PCTRACK_SYS     0
  101 #define PCTRACK_INT     1
  102 #define PCTRACK_SIZE    2
  103 
  104 struct kinfo_clockinfo {
  105         int     ci_hz;          /* clock frequency */
  106         int     ci_tick;        /* micro-seconds per hz tick */
  107         int     ci_tickadj;     /* clock skew rate for adjtime() */
  108         int     ci_stathz;      /* statistics clock frequency */
  109         int     ci_profhz;      /* profiling clock frequency */
  110 };
  111 
  112 /*
  113  * Structure definition for the lwp-specific data in struct kinfo_proc.
  114  */
  115 struct kinfo_lwp {
  116         pid_t           kl_pid;         /* PID of our associated proc */
  117         lwpid_t         kl_tid;         /* thread id */
  118 
  119         int             kl_flags;       /* LWP_ flags */
  120         enum lwpstat    kl_stat;        /* LS* lwp status */
  121         int             kl_lock;        /* lwp lock (prevent destruct) count */
  122         int             kl_tdflags;     /* thread flags */
  123         int             kl_mpcount;     /* MP lock held count */
  124         int             kl_prio;        /* scheduling priority */
  125         int             kl_tdprio;      /* lwkt sched priority */
  126         struct rtprio   kl_rtprio;      /* real-time scheduling prio */
  127 
  128         /* accounting */
  129         uint64_t        kl_uticks;      /* time accounting */
  130         uint64_t        kl_sticks;
  131         uint64_t        kl_iticks;
  132         uint64_t        kl_cpticks;     /* sched quantums used */
  133         u_int           kl_pctcpu;      /* percentage cputime */
  134         u_int           kl_slptime;     /* time since last blocked */
  135         int             kl_origcpu;     /* originally scheduled on cpu */
  136         int             kl_estcpu;
  137         int             kl_cpuid;       /* CPU this lwp was last scheduled on */
  138 
  139         struct rusage   kl_ru;          /* resource usage stats */
  140 
  141         sigset_t        kl_siglist;     /* pending signals */
  142         sigset_t        kl_sigmask;     /* masked signals */
  143 #define WMESGLEN 7
  144         uintptr_t       kl_wchan;       /* waiting channel */
  145         char            kl_wmesg[WMESGLEN+1];   /* waiting message */
  146 };
  147 
  148 /*
  149  * KERN_PROC subtype ops return arrays of normalized proc structures:
  150  */
  151 struct kinfo_proc {
  152         uintptr_t       kp_paddr;       /* address of this proc */
  153 
  154         /* proc information */
  155         int             kp_flags;
  156         enum procstat   kp_stat;
  157         int             kp_lock;
  158         int             kp_acflag;      /* accounting flags */
  159         int             kp_traceflag;
  160 
  161         uintptr_t       kp_fd;          /* address of the proc's files */
  162 
  163         sigset_t        kp_siglist;
  164         sigset_t        kp_sigignore;
  165         sigset_t        kp_sigcatch;
  166         int             kp_sigflag;     /* from ps_flag */
  167         struct timeval  kp_start;
  168 
  169         char            kp_comm[MAXCOMLEN+1];
  170 
  171         /* cred information */
  172         uid_t           kp_uid;
  173         short           kp_ngroups;
  174         gid_t           kp_groups[NGROUPS];
  175         uid_t           kp_ruid;
  176         uid_t           kp_svuid;
  177         gid_t           kp_rgid;
  178         gid_t           kp_svgid;
  179 
  180         pid_t           kp_pid; /* process id */
  181         pid_t           kp_ppid;        /* parent process id */
  182         pid_t           kp_pgid;        /* process group id */
  183         int             kp_jobc;        /* job control counter */
  184         pid_t           kp_sid; /* session id */
  185         char            kp_login[roundup(MAXLOGNAME, sizeof(long))];    /* setlogin() name */
  186         dev_t           kp_tdev;        /* controlling tty dev */
  187         pid_t           kp_tpgid;       /* tty process group id */
  188         pid_t           kp_tsid;        /* tty session id */
  189 
  190         u_short         kp_exitstat;    /* exit status information */
  191         int             kp_nthreads;
  192         int             kp_nice;
  193         unsigned int    kp_swtime;
  194 
  195         vm_size_t       kp_vm_map_size; /* vmmap virtual size in bytes */
  196         segsz_t         kp_vm_rssize;           /* resident set size in pages */
  197         segsz_t         kp_vm_swrss;            /* rss before last swap in pages */
  198         segsz_t         kp_vm_tsize;            /* text size in pages */
  199         segsz_t         kp_vm_dsize;            /* data size in pages */
  200         segsz_t         kp_vm_ssize;            /* stack size in pages */
  201         u_int           kp_vm_prssize;          /* proportional rss in pages */
  202 
  203         int             kp_jailid;
  204 
  205         struct rusage   kp_ru;
  206         struct rusage   kp_cru;
  207 
  208         int             kp_auxflags;    /* generated flags */
  209 #define KI_CTTY 1
  210 #define KI_SLEADER      2
  211 
  212         struct kinfo_lwp kp_lwp;
  213 
  214         int             kp_spare[4];
  215 };
  216 
  217 struct proc;
  218 struct lwp;
  219 struct thread;
  220 
  221 void fill_kinfo_proc(struct proc *, struct kinfo_proc *);
  222 void fill_kinfo_lwp(struct lwp *, struct kinfo_lwp *);
  223 void fill_kinfo_proc_kthread(struct thread *, struct kinfo_proc *);
  224 
  225 #define KINFO_NEXT(kp)  ((union kinfo *)((uintptr_t)kp + kp->gen.len))
  226 #define KINFO_END(kp)   (kp->gen.type == KINFO_TYPE_END)
  227 
  228 #if defined(_KERNEL)
  229 #ifdef SMP
  230 #define cpu_time        cputime_percpu[mycpuid]
  231 #else
  232 #define cpu_time        cputime_percpu[0]
  233 #endif
  234 #endif
  235 
  236 #if defined(_KERNEL)
  237 extern struct kinfo_cputime cputime_percpu[MAXCPU];
  238 #endif
  239 
  240 #endif /* !_SYS_KINFO_H_ */

Cache object: b26133dd42a0d34837b9ae83385a07ed


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.