scoutos / prex-0.9.0 / include / sys / sysinfo.h @ 03e9c04a
History | View | Annotate | Download (4.57 KB)
1 | 03e9c04a | Brad Neuman | /*
|
---|---|---|---|
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 */ |