root / lab4 / .minix-src / include / minix / sysctl.h @ 14
History | View | Annotate | Download (2.97 KB)
1 | 13 | up20180614 | #ifndef _MINIX_SYSCTL_H
|
---|---|---|---|
2 | #define _MINIX_SYSCTL_H
|
||
3 | |||
4 | /* MINIX3-specific sysctl(2) extensions. */
|
||
5 | |||
6 | #include <sys/sysctl.h> |
||
7 | #include <minix/endpoint.h> |
||
8 | |||
9 | /* Special values. */
|
||
10 | #define SYSCTL_NODE_FN ((sysctlfn)0x1) /* node is function-driven */ |
||
11 | |||
12 | /*
|
||
13 | * The top-level MINIX3 identifier is quite a bit beyond the last top-level
|
||
14 | * identifier in use by NetBSD, because NetBSD may add more later, and we do
|
||
15 | * not want conflicts: this definition is part of the MINIX3 ABI.
|
||
16 | */
|
||
17 | #define CTL_MINIX 32 |
||
18 | |||
19 | #if CTL_MAXID > CTL_MINIX
|
||
20 | #error "CTL_MAXID has grown too large!" |
||
21 | #endif
|
||
22 | |||
23 | /*
|
||
24 | * The identifiers below follow the standard sysctl naming scheme, which means
|
||
25 | * care should be taken not to introduce clashes with other definitions
|
||
26 | * elsewhere. On the upside, not many places need to include this header file.
|
||
27 | */
|
||
28 | #define MINIX_TEST 0 |
||
29 | #define MINIX_MIB 1 |
||
30 | #define MINIX_PROC 2 |
||
31 | #define MINIX_LWIP 3 |
||
32 | |||
33 | /*
|
||
34 | * These identifiers, under MINIX_TEST, are used by test87 to test the MIB
|
||
35 | * service.
|
||
36 | */
|
||
37 | #define TEST_INT 0 |
||
38 | #define TEST_BOOL 1 |
||
39 | #define TEST_QUAD 2 |
||
40 | #define TEST_STRING 3 |
||
41 | #define TEST_STRUCT 4 |
||
42 | #define TEST_PRIVATE 5 |
||
43 | #define TEST_ANYWRITE 6 |
||
44 | #define TEST_DYNAMIC 7 |
||
45 | #define TEST_SECRET 8 |
||
46 | #define TEST_PERM 9 |
||
47 | #define TEST_DESTROY1 10 |
||
48 | #define TEST_DESTROY2 11 |
||
49 | |||
50 | #define SECRET_VALUE 0 |
||
51 | |||
52 | /* Identifiers for subnodes of MINIX_MIB. */
|
||
53 | #define MIB_NODES 1 |
||
54 | #define MIB_OBJECTS 2 |
||
55 | #define MIB_REMOTES 3 |
||
56 | |||
57 | /* Identifiers for subnodes of MINIX_PROC. */
|
||
58 | #define PROC_LIST 1 |
||
59 | #define PROC_DATA 2 |
||
60 | |||
61 | /* Structure used for PROC_LIST. Not part of the ABI. Used by ProcFS only. */
|
||
62 | struct minix_proc_list {
|
||
63 | uint32_t mpl_flags; /* process flags (MPLF_) */
|
||
64 | pid_t mpl_pid; /* process PID */
|
||
65 | uid_t mpl_uid; /* effective user ID */
|
||
66 | gid_t mpl_gid; /* effective group ID */
|
||
67 | }; |
||
68 | #define MPLF_IN_USE 0x01 /* process slot is in use */ |
||
69 | #define MPLF_ZOMBIE 0x02 /* process is a zombie */ |
||
70 | |||
71 | /* Structure used for PROC_DATA. Not part of the ABI. Used by ProcFS only. */
|
||
72 | struct minix_proc_data {
|
||
73 | endpoint_t mpd_endpoint; /* process endpoint */
|
||
74 | uint32_t mpd_flags; /* procses flags (MPDF_) */
|
||
75 | endpoint_t mpd_blocked_on; /* blocked on other process, or NONE */
|
||
76 | uint32_t mpd_priority; /* current process priority */
|
||
77 | uint32_t mpd_user_time; /* user time, in clock ticks */
|
||
78 | uint32_t mpd_sys_time; /* system time, in clock ticks */
|
||
79 | uint64_t mpd_cycles; /* cycles spent by the process */
|
||
80 | uint64_t mpd_kipc_cycles; /* cycles spent on kernel IPC */
|
||
81 | uint64_t mpd_kcall_cycles; /* cycles spent on kernel calls */
|
||
82 | uint32_t mpd_nice; /* nice value */
|
||
83 | char mpd_name[16]; /* short process name */ |
||
84 | }; |
||
85 | #define MPDF_SYSTEM 0x01 /* process is a system service */ |
||
86 | #define MPDF_ZOMBIE 0x02 /* process is a zombie */ |
||
87 | #define MPDF_RUNNABLE 0x04 /* process is runnable */ |
||
88 | #define MPDF_STOPPED 0x08 /* process is stopped */ |
||
89 | |||
90 | /*
|
||
91 | * Expose sysctl(2) to system services (ProcFS in particular), so as to avoid
|
||
92 | * including the CTL_USER subtree handling of sysctl(3) as well.
|
||
93 | */
|
||
94 | int __sysctl(const int *, unsigned int, void *, size_t *, const void *, |
||
95 | size_t); |
||
96 | |||
97 | #endif /* !_MINIX_SYSCTL_H */ |