This source file includes following definitions.
- Proot
- Pcurproc
- Pself
- Pproc
- Pfile
- Pmem
- Pregs
- Pfpregs
- Pctl
- Pstatus
- Pnote
- Pnotepg
- Pcmdline
- Pmeminfo
- Pcpuinfo
- pfstype
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 typedef enum {
43 Proot,
44 Pcurproc,
45 Pself,
46 Pproc,
47 Pfile,
48 Pmem,
49 Pregs,
50 Pfpregs,
51 Pctl,
52 Pstatus,
53 Pnote,
54 Pnotepg,
55 Pcmdline,
56 Pmeminfo,
57 Pcpuinfo
58 } pfstype;
59
60
61
62
63 struct pfsnode {
64 TAILQ_ENTRY(pfsnode) list;
65 struct vnode *pfs_vnode;
66 pfstype pfs_type;
67 pid_t pfs_pid;
68 mode_t pfs_mode;
69 u_long pfs_flags;
70 u_long pfs_fileno;
71 };
72
73 #define PROCFS_NOTELEN 64
74 #define PROCFS_CTLLEN 8
75
76
77
78
79 #ifdef _KERNEL
80 #define CNEQ(cnp, s, len) \
81 ((cnp)->cn_namelen == (len) && \
82 (bcmp((s), (cnp)->cn_nameptr, (len)) == 0))
83
84 #define UIO_MX 32
85
86 #define PROCFS_FILENO(pid, type) \
87 (((type) < Pproc) ? \
88 ((type) + 4) : \
89 ((((pid)+1) << 5) + ((int) (type))))
90
91 struct procfsmount {
92 void *pmnt_exechook;
93 int pmnt_flags;
94 };
95
96 #define VFSTOPROC(mp) ((struct procfsmount *)(mp)->mnt_data)
97
98
99
100
101 #define VTOPFS(vp) ((struct pfsnode *)(vp)->v_data)
102 #define PFSTOV(pfs) ((pfs)->pfs_vnode)
103
104 typedef struct vfs_namemap vfs_namemap_t;
105 struct vfs_namemap {
106 const char *nm_name;
107 int nm_val;
108 };
109
110 int vfs_getuserstr(struct uio *, char *, int *);
111 const vfs_namemap_t *vfs_findname(const vfs_namemap_t *, char *, int);
112
113 int procfs_allocvp(struct mount *, struct vnode **, pid_t, pfstype);
114 int procfs_doctl(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
115 int procfs_dofpregs(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
116 int procfs_donote(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
117 int procfs_doregs(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
118 int procfs_dostatus(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
119 int procfs_docmdline(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
120 int procfs_domeminfo(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
121 int procfs_docpuinfo(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio);
122 int procfs_domap(struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio, int);
123 int procfs_freevp(struct vnode *);
124 int procfs_getcpuinfstr(char *, int *);
125 int procfs_poll(void *);
126
127
128 int procfs_validfile(struct proc *, struct mount *);
129 int procfs_validfpregs(struct proc *, struct mount *);
130 int procfs_validregs(struct proc *, struct mount *);
131 int procfs_validmap(struct proc *, struct mount *);
132
133 int procfs_rw(void *);
134
135 #define PROCFS_LOCKED 0x01
136 #define PROCFS_WANT 0x02
137
138 extern int (**procfs_vnodeop_p)(void *);
139 extern const struct vfsops procfs_vfsops;
140
141 struct vfsconf;
142
143 int procfs_init(struct vfsconf *);
144 int procfs_root(struct mount *, struct vnode **);
145
146 #endif