Project

General

Profile

Statistics
| Revision:

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 */