Prex Home / Browse Source - Prex Version: 0.9.0

root/include/sys/sysinfo.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2007-2009, Kohsuke Ohtani
   3  * All rights reserved.
   4  *
   5  * Redistribution and use in source and binary forms, with or without
   6  * modification, are permitted provided that the following conditions
   7  * are met:
   8  * 1. Redistributions of source code must retain the above copyright
   9  *    notice, this list of conditions and the following disclaimer.
  10  * 2. Redistributions in binary form must reproduce the above copyright
  11  *    notice, this list of conditions and the following disclaimer in the
  12  *    documentation and/or other materials provided with the distribution.
  13  * 3. Neither the name of the author nor the names of any co-contributors
  14  *    may be used to endorse or promote products derived from this software
  15  *    without specific prior written permission.
  16  *
  17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27  * SUCH DAMAGE.
  28  */
  29 
  30 #ifndef _SYS_SYSINFO_H
  31 #define _SYS_SYSINFO_H
  32 
  33 #include <sys/param.h>
  34 #include <sys/utsname.h>
  35 #include <sys/capability.h>
  36 #include <sys/device.h>
  37 
  38 /*
  39  * Max size of info buffer.
  40  *
  41  * Please make sure MAXINFOSZ is still correct if you change
  42  * the information structure below.
  43  */
  44 #define MAXINFOSZ       sizeof(struct kerninfo)
  45 
  46 /*
  47  * Data type for sys_info()
  48  */
  49 #define INFO_KERNEL     1
  50 #define INFO_MEMORY     2
  51 #define INFO_TIMER      3
  52 #define INFO_THREAD     4
  53 #define INFO_TASK       5
  54 #define INFO_VM         6
  55 #define INFO_DEVICE     7
  56 #define INFO_IRQ        8
  57 
  58 /*
  59  * Kernel information
  60  * Note: must be same with struct utsname.
  61  */
  62 struct kerninfo {
  63         char    sysname[_SYS_NMLN];     /* name of this OS. */
  64         char    nodename[_SYS_NMLN];    /* name of this network node. */
  65         char    release[_SYS_NMLN];     /* release level. */
  66         char    version[_SYS_NMLN];     /* version level. */
  67         char    machine[_SYS_NMLN];     /* hardware type. */
  68 };
  69 
  70 /*
  71  * Memory information
  72  */
  73 struct meminfo {
  74         psize_t         total;          /* total memory size in bytes */
  75         psize_t         free;           /* current free memory in bytes */
  76         psize_t         bootdisk;       /* total size of boot disk */
  77 };
  78 
  79 /*
  80  * Thread information
  81  */
  82 struct threadinfo {
  83         u_long          cookie;         /* index cookie */
  84         thread_t        id;             /* thread id */
  85         int             state;          /* thread state */
  86         int             policy;         /* scheduling policy */
  87         int             priority;       /* current priority */
  88         int             basepri;        /* base priority */
  89         u_int           time;           /* total running time */
  90         int             suscnt;         /* suspend count */
  91         task_t          task;           /* task id */
  92         int             active;         /* true if active thread */
  93         char            taskname[MAXTASKNAME];  /* task name */
  94         char            slpevt[MAXEVTNAME];     /* sleep event */
  95 };
  96 
  97 /*
  98  * Task information
  99  */
 100 struct taskinfo {
 101         u_long          cookie;         /* index cookie */
 102         task_t          id;             /* task id */
 103         int             flags;          /* task flags */
 104         int             suscnt;         /* suspend count */
 105         cap_t           capability;     /* security permission flag */
 106         size_t          vmsize;         /* used memory size */
 107         int             nthreads;       /* number of threads */
 108         int             active;         /* true if active task */
 109         char            taskname[MAXTASKNAME];  /* task name */
 110 };
 111 
 112 /*
 113  * VM information
 114  */
 115 struct vminfo {
 116         u_long          cookie;         /* index cookie */
 117         task_t          task;           /* task id */
 118         vaddr_t         virt;           /* virtual address */
 119         size_t          size;           /* size */
 120         int             flags;          /* region flag */
 121         paddr_t         phys;           /* physical address */
 122 };
 123 
 124 /* Flags for vm */
 125 #define VF_READ         0x00000001
 126 #define VF_WRITE        0x00000002
 127 #define VF_EXEC         0x00000004
 128 #define VF_SHARED       0x00000008
 129 #define VF_MAPPED       0x00000010
 130 #define VF_FREE         0x00000080
 131 
 132 /*
 133  * Device information
 134  */
 135 struct devinfo {
 136         u_long          cookie;         /* index cookie */
 137         device_t        id;             /* device id */
 138         int             flags;          /* device characteristics flags */
 139         char            name[MAXDEVNAME]; /* device name */
 140 };
 141 
 142 /*
 143  * Timer informations
 144  */
 145 struct timerinfo {
 146         int             hz;             /* clock frequency */
 147         u_long          cputicks;       /* total cpu ticks since boot */
 148         u_long          idleticks;      /* total idle ticks */
 149 };
 150 
 151 /*
 152  * IRQ information
 153  */
 154 struct irqinfo {
 155         int             cookie;         /* index cookie */
 156         int             vector;         /* vector number */
 157         u_int           count;          /* interrupt count */
 158         int             priority;       /* interrupt priority */
 159         int             istreq;         /* pending ist request */
 160         thread_t        thread;         /* thread id of ist */
 161 };
 162 
 163 #endif /* !_SYS_SYSINFO_H */

/* [<][>][^][v][top][bottom][index][help] */