]>
Commit | Line | Data |
---|---|---|
0c530ab8 A |
1 | /* |
2 | * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. | |
3 | * | |
2d21ac55 A |
4 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ |
5 | * | |
6 | * This file contains Original Code and/or Modifications of Original Code | |
7 | * as defined in and that are subject to the Apple Public Source License | |
8 | * Version 2.0 (the 'License'). You may not use this file except in | |
9 | * compliance with the License. The rights granted to you under the License | |
10 | * may not be used to create, or enable the creation or redistribution of, | |
11 | * unlawful or unlicensed copies of an Apple operating system, or to | |
12 | * circumvent, violate, or enable the circumvention or violation of, any | |
13 | * terms of an Apple operating system software license agreement. | |
14 | * | |
15 | * Please obtain a copy of the License at | |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file. | |
17 | * | |
18 | * The Original Code and all software distributed under the License are | |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
0c530ab8 A |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
2d21ac55 A |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. |
23 | * Please see the License for the specific language governing rights and | |
24 | * limitations under the License. | |
25 | * | |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ | |
0c530ab8 A |
27 | */ |
28 | ||
29 | #ifndef _SYS_PROC_INFO_H | |
30 | #define _SYS_PROC_INFO_H | |
31 | ||
32 | #include <sys/cdefs.h> | |
33 | #include <sys/param.h> | |
34 | #include <sys/types.h> | |
35 | #include <sys/stat.h> | |
36 | #include <sys/mount.h> | |
37 | #include <sys/socket.h> | |
38 | #include <sys/un.h> | |
39 | #include <sys/kern_control.h> | |
40 | #include <net/if.h> | |
41 | #include <net/route.h> | |
42 | #include <netinet/in.h> | |
43 | #include <netinet/tcp.h> | |
44 | ||
45 | __BEGIN_DECLS | |
46 | ||
47 | ||
48 | #define PROC_ALL_PIDS 1 | |
49 | #define PROC_PGRP_ONLY 2 | |
50 | #define PROC_TTY_ONLY 3 | |
51 | #define PROC_UID_ONLY 4 | |
52 | #define PROC_RUID_ONLY 5 | |
53 | ||
54 | struct proc_bsdinfo { | |
55 | uint32_t pbi_flags; /* 64bit; emulated etc */ | |
56 | uint32_t pbi_status; | |
57 | uint32_t pbi_xstatus; | |
58 | uint32_t pbi_pid; | |
59 | uint32_t pbi_ppid; | |
60 | uid_t pbi_uid; | |
61 | gid_t pbi_gid; | |
62 | uid_t pbi_ruid; | |
63 | gid_t pbi_rgid; | |
64 | uid_t pbi_svuid; | |
65 | gid_t pbi_svgid; | |
66 | char pbi_comm[MAXCOMLEN + 1]; | |
67 | char pbi_name[2*MAXCOMLEN + 1]; /* empty if no name is registered */ | |
68 | uint32_t pbi_nfiles; | |
69 | uint32_t pbi_pgid; | |
70 | uint32_t pbi_pjobc; | |
71 | uint32_t e_tdev; /* controlling tty dev */ | |
72 | uint32_t e_tpgid; /* tty process group id */ | |
73 | struct timeval pbi_start; | |
74 | int32_t pbi_nice; | |
75 | }; | |
76 | ||
77 | ||
78 | ||
79 | /* pbi_flags values */ | |
80 | #define PROC_FLAG_SYSTEM 1 | |
81 | #define PROC_FLAG_TRACED 2 | |
82 | #define PROC_FLAG_INEXIT 4 | |
83 | #define PROC_FLAG_PPWAIT 8 | |
84 | #define PROC_FLAG_LP64 0x10 | |
85 | #define PROC_FLAG_SLEADER 0x20 | |
86 | #define PROC_FLAG_CTTY 0x40 | |
87 | #define PROC_FLAG_CONTROLT 0x80 | |
2d21ac55 | 88 | #define PROC_FLAG_THCWD 0x100 |
0c530ab8 A |
89 | |
90 | ||
91 | struct proc_taskinfo { | |
92 | uint64_t pti_virtual_size; /* virtual memory size (bytes) */ | |
93 | uint64_t pti_resident_size; /* resident memory size (bytes) */ | |
94 | uint64_t pti_total_user; /* total time */ | |
95 | uint64_t pti_total_system; | |
96 | uint64_t pti_threads_user; /* existing threads only */ | |
97 | uint64_t pti_threads_system; | |
98 | int32_t pti_policy; /* default policy for new threads */ | |
99 | int32_t pti_faults; /* number of page faults */ | |
100 | int32_t pti_pageins; /* number of actual pageins */ | |
101 | int32_t pti_cow_faults; /* number of copy-on-write faults */ | |
102 | int32_t pti_messages_sent; /* number of messages sent */ | |
103 | int32_t pti_messages_received; /* number of messages received */ | |
104 | int32_t pti_syscalls_mach; /* number of mach system calls */ | |
105 | int32_t pti_syscalls_unix; /* number of unix system calls */ | |
106 | int32_t pti_csw; /* number of context switches */ | |
107 | int32_t pti_threadnum; /* number of threads in the task */ | |
108 | int32_t pti_numrunning; /* number of running threads */ | |
109 | int32_t pti_priority; /* task priority*/ | |
110 | }; | |
111 | ||
112 | struct proc_taskallinfo { | |
113 | struct proc_bsdinfo pbsd; | |
114 | struct proc_taskinfo ptinfo; | |
115 | }; | |
116 | ||
117 | ||
118 | struct proc_threadinfo { | |
119 | uint64_t pth_user_time; /* user run time */ | |
120 | uint64_t pth_system_time; /* system run time */ | |
121 | int32_t pth_cpu_usage; /* scaled cpu usage percentage */ | |
122 | int32_t pth_policy; /* scheduling policy in effect */ | |
123 | int32_t pth_run_state; /* run state (see below) */ | |
124 | int32_t pth_flags; /* various flags (see below) */ | |
125 | int32_t pth_sleep_time; /* number of seconds that thread */ | |
126 | int32_t pth_curpri; /* cur priority*/ | |
127 | int32_t pth_priority; /* priority*/ | |
128 | int32_t pth_maxpriority; /* max priority*/ | |
2d21ac55 | 129 | char * pth_name[64]; /* thread name, if any */ |
0c530ab8 A |
130 | }; |
131 | ||
132 | struct proc_regioninfo { | |
133 | uint32_t pri_protection; | |
134 | uint32_t pri_max_protection; | |
135 | uint32_t pri_inheritance; | |
136 | uint32_t pri_flags; /* shared, external pager, is submap */ | |
137 | uint64_t pri_offset; | |
138 | uint32_t pri_behavior; | |
139 | uint32_t pri_user_wired_count; | |
140 | uint32_t pri_user_tag; | |
141 | uint32_t pri_pages_resident; | |
142 | uint32_t pri_pages_shared_now_private; | |
143 | uint32_t pri_pages_swapped_out; | |
144 | uint32_t pri_pages_dirtied; | |
145 | uint32_t pri_ref_count; | |
146 | uint32_t pri_shadow_depth; | |
147 | uint32_t pri_share_mode; | |
148 | uint32_t pri_private_pages_resident; | |
149 | uint32_t pri_shared_pages_resident; | |
150 | uint32_t pri_obj_id; | |
2d21ac55 | 151 | uint32_t pri_depth; |
0c530ab8 A |
152 | uint64_t pri_address; |
153 | uint64_t pri_size; | |
0c530ab8 A |
154 | }; |
155 | ||
156 | #define PROC_REGION_SUBMAP 1 | |
157 | #define PROC_REGION_SHARED 2 | |
158 | ||
159 | #define SM_COW 1 | |
160 | #define SM_PRIVATE 2 | |
161 | #define SM_EMPTY 3 | |
162 | #define SM_SHARED 4 | |
163 | #define SM_TRUESHARED 5 | |
164 | #define SM_PRIVATE_ALIASED 6 | |
165 | #define SM_SHARED_ALIASED 7 | |
166 | ||
167 | ||
168 | /* | |
169 | * Thread run states (state field). | |
170 | */ | |
171 | ||
172 | #define TH_STATE_RUNNING 1 /* thread is running normally */ | |
173 | #define TH_STATE_STOPPED 2 /* thread is stopped */ | |
174 | #define TH_STATE_WAITING 3 /* thread is waiting normally */ | |
175 | #define TH_STATE_UNINTERRUPTIBLE 4 /* thread is in an uninterruptible | |
176 | wait */ | |
177 | #define TH_STATE_HALTED 5 /* thread is halted at a | |
178 | clean point */ | |
179 | ||
180 | /* | |
181 | * Thread flags (flags field). | |
182 | */ | |
183 | #define TH_FLAGS_SWAPPED 0x1 /* thread is swapped out */ | |
184 | #define TH_FLAGS_IDLE 0x2 /* thread is an idle thread */ | |
185 | ||
186 | ||
187 | ||
188 | struct proc_fileinfo { | |
189 | uint32_t fi_openflags; | |
190 | uint32_t fi_status; | |
191 | off_t fi_offset; | |
192 | int32_t fi_type; | |
193 | }; | |
194 | ||
2d21ac55 A |
195 | /* stats flags in proc_fileinfo */ |
196 | #define PROC_FP_SHARED 1 /* shared by more than one fd */ | |
197 | #define PROC_FP_CLEXEC 2 /* close on exec */ | |
198 | ||
199 | /* | |
200 | * A copy of stat64 with static sized fields. | |
201 | */ | |
202 | struct vinfo_stat { | |
203 | uint32_t vst_dev; /* [XSI] ID of device containing file */ | |
204 | uint16_t vst_mode; /* [XSI] Mode of file (see below) */ | |
205 | uint16_t vst_nlink; /* [XSI] Number of hard links */ | |
206 | uint64_t vst_ino; /* [XSI] File serial number */ | |
207 | uid_t vst_uid; /* [XSI] User ID of the file */ | |
208 | gid_t vst_gid; /* [XSI] Group ID of the file */ | |
209 | int64_t vst_atime; /* [XSI] Time of last access */ | |
210 | int64_t vst_atimensec; /* nsec of last access */ | |
211 | int64_t vst_mtime; /* [XSI] Last data modification time */ | |
212 | int64_t vst_mtimensec; /* last data modification nsec */ | |
213 | int64_t vst_ctime; /* [XSI] Time of last status change */ | |
214 | int64_t vst_ctimensec; /* nsec of last status change */ | |
215 | int64_t vst_birthtime; /* File creation time(birth) */ | |
216 | int64_t vst_birthtimensec; /* nsec of File creation time */ | |
217 | off_t vst_size; /* [XSI] file size, in bytes */ | |
218 | int64_t vst_blocks; /* [XSI] blocks allocated for file */ | |
219 | int32_t vst_blksize; /* [XSI] optimal blocksize for I/O */ | |
220 | uint32_t vst_flags; /* user defined flags for file */ | |
221 | uint32_t vst_gen; /* file generation number */ | |
222 | uint32_t vst_rdev; /* [XSI] Device ID */ | |
223 | int64_t vst_qspare[2]; /* RESERVED: DO NOT USE! */ | |
224 | }; | |
0c530ab8 A |
225 | |
226 | struct vnode_info { | |
2d21ac55 A |
227 | struct vinfo_stat vi_stat; |
228 | int vi_type; | |
229 | fsid_t vi_fsid; | |
230 | int vi_pad; | |
0c530ab8 A |
231 | }; |
232 | ||
233 | struct vnode_info_path { | |
234 | struct vnode_info vip_vi; | |
235 | char vip_path[MAXPATHLEN]; /* tail end of it */ | |
236 | }; | |
237 | ||
238 | struct vnode_fdinfo { | |
2d21ac55 | 239 | struct proc_fileinfo pfi; |
0c530ab8 A |
240 | struct vnode_info pvi; |
241 | }; | |
242 | ||
243 | struct vnode_fdinfowithpath { | |
244 | struct proc_fileinfo pfi; | |
245 | struct vnode_info_path pvip; | |
0c530ab8 A |
246 | }; |
247 | ||
0c530ab8 A |
248 | struct proc_regionwithpathinfo { |
249 | struct proc_regioninfo prp_prinfo; | |
250 | struct vnode_info_path prp_vip; | |
251 | }; | |
252 | ||
253 | struct proc_vnodepathinfo { | |
254 | struct vnode_info_path pvi_cdir; | |
255 | struct vnode_info_path pvi_rdir; | |
256 | }; | |
257 | ||
2d21ac55 A |
258 | struct proc_threadwithpathinfo { |
259 | struct proc_threadinfo pt; | |
260 | struct vnode_info_path pvip; | |
261 | }; | |
0c530ab8 A |
262 | |
263 | /* | |
264 | * Socket | |
265 | */ | |
266 | ||
267 | ||
268 | /* | |
269 | * IPv4 and IPv6 Sockets | |
270 | */ | |
271 | ||
272 | #define INI_IPV4 0x1 | |
273 | #define INI_IPV6 0x2 | |
274 | ||
275 | struct in4in6_addr { | |
276 | u_int32_t i46a_pad32[3]; | |
277 | struct in_addr i46a_addr4; | |
278 | }; | |
279 | ||
280 | struct in_sockinfo { | |
281 | int insi_fport; /* foreign port */ | |
282 | int insi_lport; /* local port */ | |
283 | uint64_t insi_gencnt; /* generation count of this instance */ | |
284 | uint32_t insi_flags; /* generic IP/datagram flags */ | |
285 | uint32_t insi_flow; | |
286 | ||
287 | uint8_t insi_vflag; /* ini_IPV4 or ini_IPV6 */ | |
288 | uint8_t insi_ip_ttl; /* time to live proto */ | |
289 | /* protocol dependent part */ | |
290 | union { | |
291 | struct in4in6_addr ina_46; | |
292 | struct in6_addr ina_6; | |
293 | } insi_faddr; /* foreign host table entry */ | |
294 | union { | |
295 | struct in4in6_addr ina_46; | |
296 | struct in6_addr ina_6; | |
297 | } insi_laddr; /* local host table entry */ | |
298 | struct { | |
299 | u_char in4_tos; /* type of service */ | |
300 | } insi_v4; | |
301 | struct { | |
302 | uint8_t in6_hlim; | |
303 | int in6_cksum; | |
304 | u_short in6_ifindex; | |
305 | short in6_hops; | |
306 | } insi_v6; | |
307 | }; | |
308 | ||
309 | /* | |
310 | * TCP Sockets | |
311 | */ | |
312 | ||
313 | #define TSI_T_REXMT 0 /* retransmit */ | |
314 | #define TSI_T_PERSIST 1 /* retransmit persistence */ | |
315 | #define TSI_T_KEEP 2 /* keep alive */ | |
316 | #define TSI_T_2MSL 3 /* 2*msl quiet time timer */ | |
317 | #define TSI_T_NTIMERS 4 | |
318 | ||
319 | #define TSI_S_CLOSED 0 /* closed */ | |
320 | #define TSI_S_LISTEN 1 /* listening for connection */ | |
321 | #define TSI_S_SYN_SENT 2 /* active, have sent syn */ | |
322 | #define TSI_S_SYN_RECEIVED 3 /* have send and received syn */ | |
323 | #define TSI_S_ESTABLISHED 4 /* established */ | |
324 | #define TSI_S__CLOSE_WAIT 5 /* rcvd fin, waiting for close */ | |
325 | #define TSI_S_FIN_WAIT_1 6 /* have closed, sent fin */ | |
326 | #define TSI_S_CLOSING 7 /* closed xchd FIN; await FIN ACK */ | |
327 | #define TSI_S_LAST_ACK 8 /* had fin and close; await FIN ACK */ | |
328 | #define TSI_S_FIN_WAIT_2 9 /* have closed, fin is acked */ | |
329 | #define TSI_S_TIME_WAIT 10 /* in 2*msl quiet wait after close */ | |
330 | #define TSI_S_RESERVED 11 /* pseudo state: reserved */ | |
331 | ||
332 | struct tcp_sockinfo { | |
333 | struct in_sockinfo tcpsi_ini; | |
334 | int tcpsi_state; | |
335 | int tcpsi_timer[TSI_T_NTIMERS]; | |
336 | int tcpsi_mss; | |
337 | uint32_t tcpsi_flags; | |
338 | uint64_t tcpsi_tp; /* opaque handle of TCP protocol control block */ | |
339 | }; | |
340 | ||
341 | /* | |
342 | * Unix Domain Sockets | |
343 | */ | |
344 | ||
345 | ||
346 | struct un_sockinfo { | |
347 | uint64_t unsi_conn_so; /* opaque handle of connected socket */ | |
348 | uint64_t unsi_conn_pcb; /* opaque handle of connected protocol control block */ | |
349 | union { | |
350 | struct sockaddr_un ua_sun; | |
351 | char ua_dummy[SOCK_MAXADDRLEN]; | |
352 | } unsi_addr; /* bound address */ | |
353 | union { | |
354 | struct sockaddr_un ua_sun; | |
355 | char ua_dummy[SOCK_MAXADDRLEN]; | |
356 | } unsi_caddr; /* address of socket connected to */ | |
357 | }; | |
358 | ||
359 | /* | |
360 | * PF_NDRV Sockets | |
361 | */ | |
362 | ||
363 | struct ndrv_info { | |
364 | uint32_t ndrvsi_if_family; | |
365 | uint32_t ndrvsi_if_unit; | |
366 | char ndrvsi_if_name[IF_NAMESIZE]; | |
367 | }; | |
368 | ||
369 | /* | |
370 | * Kernel Event Sockets | |
371 | */ | |
372 | ||
373 | struct kern_event_info { | |
374 | uint32_t kesi_vendor_code_filter; | |
375 | uint32_t kesi_class_filter; | |
376 | uint32_t kesi_subclass_filter; | |
377 | }; | |
378 | ||
379 | /* | |
380 | * Kernel Control Sockets | |
381 | */ | |
382 | ||
383 | struct kern_ctl_info { | |
384 | uint32_t kcsi_id; | |
385 | uint32_t kcsi_reg_unit; | |
386 | uint32_t kcsi_flags; /* support flags */ | |
387 | uint32_t kcsi_recvbufsize; /* request more than the default buffer size */ | |
388 | uint32_t kcsi_sendbufsize; /* request more than the default buffer size */ | |
389 | uint32_t kcsi_unit; | |
390 | char kcsi_name[MAX_KCTL_NAME]; /* unique nke identifier, provided by DTS */ | |
391 | }; | |
392 | ||
393 | /* soi_state */ | |
394 | ||
395 | #define SOI_S_NOFDREF 0x0001 /* no file table ref any more */ | |
396 | #define SOI_S_ISCONNECTED 0x0002 /* socket connected to a peer */ | |
397 | #define SOI_S_ISCONNECTING 0x0004 /* in process of connecting to peer */ | |
398 | #define SOI_S_ISDISCONNECTING 0x0008 /* in process of disconnecting */ | |
399 | #define SOI_S_CANTSENDMORE 0x0010 /* can't send more data to peer */ | |
400 | #define SOI_S_CANTRCVMORE 0x0020 /* can't receive more data from peer */ | |
401 | #define SOI_S_RCVATMARK 0x0040 /* at mark on input */ | |
402 | #define SOI_S_PRIV 0x0080 /* privileged for broadcast, raw... */ | |
403 | #define SOI_S_NBIO 0x0100 /* non-blocking ops */ | |
404 | #define SOI_S_ASYNC 0x0200 /* async i/o notify */ | |
405 | #define SOI_S_INCOMP 0x0800 /* Unaccepted, incomplete connection */ | |
406 | #define SOI_S_COMP 0x1000 /* unaccepted, complete connection */ | |
407 | #define SOI_S_ISDISCONNECTED 0x2000 /* socket disconnected from peer */ | |
408 | #define SOI_S_DRAINING 0x4000 /* close waiting for blocked system calls to drain */ | |
409 | ||
410 | struct sockbuf_info { | |
411 | uint32_t sbi_cc; | |
412 | uint32_t sbi_hiwat; /* SO_RCVBUF, SO_SNDBUF */ | |
413 | uint32_t sbi_mbcnt; | |
414 | uint32_t sbi_mbmax; | |
415 | uint32_t sbi_lowat; | |
416 | short sbi_flags; | |
417 | short sbi_timeo; | |
418 | }; | |
419 | ||
420 | enum { | |
421 | SOCKINFO_GENERIC = 0, | |
422 | SOCKINFO_IN = 1, | |
423 | SOCKINFO_TCP = 2, | |
424 | SOCKINFO_UN = 3, | |
425 | SOCKINFO_NDRV = 4, | |
426 | SOCKINFO_KERN_EVENT = 5, | |
427 | SOCKINFO_KERN_CTL = 6 | |
428 | }; | |
429 | ||
430 | struct socket_info { | |
431 | struct stat soi_stat; | |
432 | uint64_t soi_so; /* opaque handle of socket */ | |
433 | uint64_t soi_pcb; /* opaque handle of protocol control block */ | |
434 | int soi_type; | |
435 | int soi_protocol; | |
436 | int soi_family; | |
437 | short soi_options; | |
438 | short soi_linger; | |
439 | short soi_state; | |
440 | short soi_qlen; | |
441 | short soi_incqlen; | |
442 | short soi_qlimit; | |
443 | short soi_timeo; | |
444 | u_short soi_error; | |
445 | uint32_t soi_oobmark; | |
446 | struct sockbuf_info soi_rcv; | |
447 | struct sockbuf_info soi_snd; | |
448 | int soi_kind; | |
449 | union { | |
450 | struct in_sockinfo pri_in; /* SOCKINFO_IN */ | |
451 | struct tcp_sockinfo pri_tcp; /* SOCKINFO_TCP */ | |
452 | struct un_sockinfo pri_un; /* SOCKINFO_UN */ | |
453 | struct ndrv_info pri_ndrv; /* SOCKINFO_NDRV */ | |
454 | struct kern_event_info pri_kern_event; /* SOCKINFO_KERN_EVENT */ | |
455 | struct kern_ctl_info pri_kern_ctl; /* SOCKINFO_KERN_CTL */ | |
456 | } soi_proto; | |
457 | }; | |
458 | ||
459 | struct socket_fdinfo { | |
460 | struct proc_fileinfo pfi; | |
461 | struct socket_info psi; | |
462 | }; | |
463 | ||
464 | ||
465 | ||
466 | struct psem_info { | |
2d21ac55 | 467 | struct vinfo_stat psem_stat; |
0c530ab8 A |
468 | char psem_name[MAXPATHLEN]; |
469 | }; | |
470 | ||
471 | struct psem_fdinfo { | |
472 | struct proc_fileinfo pfi; | |
473 | struct psem_info pseminfo; | |
474 | }; | |
475 | ||
476 | ||
477 | ||
478 | struct pshm_info { | |
2d21ac55 | 479 | struct vinfo_stat pshm_stat; |
0c530ab8 A |
480 | uint64_t pshm_mappaddr; |
481 | char pshm_name[MAXPATHLEN]; | |
482 | }; | |
483 | ||
484 | struct pshm_fdinfo { | |
485 | struct proc_fileinfo pfi; | |
486 | struct pshm_info pshminfo; | |
487 | }; | |
488 | ||
489 | ||
490 | struct pipe_info { | |
2d21ac55 | 491 | struct vinfo_stat pipe_stat; |
0c530ab8 A |
492 | uint64_t pipe_handle; |
493 | uint64_t pipe_peerhandle; | |
494 | int pipe_status; | |
495 | }; | |
496 | ||
497 | struct pipe_fdinfo { | |
498 | struct proc_fileinfo pfi; | |
499 | struct pipe_info pipeinfo; | |
500 | }; | |
501 | ||
502 | ||
503 | struct kqueue_info { | |
2d21ac55 | 504 | struct vinfo_stat kq_stat; |
0c530ab8 A |
505 | uint32_t kq_state; |
506 | }; | |
507 | #define PROC_KQUEUE_SELECT 1 | |
508 | #define PROC_KQUEUE_SLEEP 2 | |
509 | ||
510 | struct kqueue_fdinfo { | |
511 | struct proc_fileinfo pfi; | |
512 | struct kqueue_info kqueueinfo; | |
513 | }; | |
514 | ||
515 | struct appletalk_info { | |
2d21ac55 | 516 | struct vinfo_stat atalk_stat; |
0c530ab8 A |
517 | }; |
518 | ||
519 | struct appletalk_fdinfo { | |
520 | struct proc_fileinfo pfi; | |
521 | struct appletalk_info appletalkinfo; | |
522 | }; | |
523 | ||
524 | ||
525 | ||
526 | /* defns of process file desc type */ | |
527 | #define PROX_FDTYPE_ATALK 0 | |
528 | #define PROX_FDTYPE_VNODE 1 | |
529 | #define PROX_FDTYPE_SOCKET 2 | |
530 | #define PROX_FDTYPE_PSHM 3 | |
531 | #define PROX_FDTYPE_PSEM 4 | |
532 | #define PROX_FDTYPE_KQUEUE 5 | |
533 | #define PROX_FDTYPE_PIPE 6 | |
534 | #define PROX_FDTYPE_FSEVENTS 7 | |
535 | ||
536 | struct proc_fdinfo { | |
537 | int32_t proc_fd; | |
538 | uint32_t proc_fdtype; | |
539 | }; | |
540 | ||
541 | /* Falvors for proc_pidinfo() */ | |
542 | #define PROC_PIDLISTFDS 1 | |
543 | #define PROC_PIDLISTFD_SIZE (sizeof(struct proc_fdinfo)) | |
544 | ||
545 | #define PROC_PIDTASKALLINFO 2 | |
546 | #define PROC_PIDTASKALLINFO_SIZE (sizeof(struct proc_taskallinfo)) | |
547 | ||
548 | #define PROC_PIDTBSDINFO 3 | |
549 | #define PROC_PIDTBSDINFO_SIZE (sizeof(struct proc_bsdinfo)) | |
550 | ||
551 | #define PROC_PIDTASKINFO 4 | |
552 | #define PROC_PIDTASKINFO_SIZE (sizeof(struct proc_taskinfo)) | |
553 | ||
554 | #define PROC_PIDTHREADINFO 5 | |
555 | #define PROC_PIDTHREADINFO_SIZE (sizeof(struct proc_threadinfo)) | |
556 | ||
557 | #define PROC_PIDLISTTHREADS 6 | |
558 | #define PROC_PIDLISTTHREADS_SIZE (2* sizeof(uint32_t)) | |
559 | ||
560 | ||
561 | #define PROC_PIDREGIONINFO 7 | |
562 | #define PROC_PIDREGIONINFO_SIZE (sizeof(struct proc_regioninfo)) | |
563 | ||
564 | #define PROC_PIDREGIONPATHINFO 8 | |
565 | #define PROC_PIDREGIONPATHINFO_SIZE (sizeof(struct proc_regionwithpathinfo)) | |
566 | ||
567 | #define PROC_PIDVNODEPATHINFO 9 | |
568 | #define PROC_PIDVNODEPATHINFO_SIZE (sizeof(struct proc_vnodepathinfo)) | |
569 | ||
2d21ac55 A |
570 | #define PROC_PIDTHREADPATHINFO 10 |
571 | #define PROC_PIDTHREADPATHINFO_SIZE (sizeof(struct proc_threadwithpathinfo)) | |
572 | ||
573 | #define PROC_PIDPATHINFO 11 | |
574 | #define PROC_PIDPATHINFO_SIZE (MAXPATHLEN) | |
575 | #define PROC_PIDPATHINFO_MAXSIZE (4*MAXPATHLEN) | |
576 | ||
0c530ab8 A |
577 | /* Flavors for proc_pidfdinfo */ |
578 | ||
579 | #define PROC_PIDFDVNODEINFO 1 | |
580 | #define PROC_PIDFDVNODEINFO_SIZE (sizeof(struct vnode_fdinfo)) | |
581 | ||
582 | #define PROC_PIDFDVNODEPATHINFO 2 | |
583 | #define PROC_PIDFDVNODEPATHINFO_SIZE (sizeof(struct vnode_fdinfowithpath)) | |
584 | ||
585 | #define PROC_PIDFDSOCKETINFO 3 | |
586 | #define PROC_PIDFDSOCKETINFO_SIZE (sizeof(struct socket_fdinfo)) | |
587 | ||
588 | #define PROC_PIDFDPSEMINFO 4 | |
589 | #define PROC_PIDFDPSEMINFO_SIZE (sizeof(struct psem_fdinfo)) | |
590 | ||
591 | #define PROC_PIDFDPSHMINFO 5 | |
592 | #define PROC_PIDFDPSHMINFO_SIZE (sizeof(struct pshm_fdinfo)) | |
593 | ||
594 | #define PROC_PIDFDPIPEINFO 6 | |
595 | #define PROC_PIDFDPIPEINFO_SIZE (sizeof(struct pipe_fdinfo)) | |
596 | ||
597 | #define PROC_PIDFDKQUEUEINFO 7 | |
598 | #define PROC_PIDFDKQUEUEINFO_SIZE (sizeof(struct kqueue_fdinfo)) | |
599 | ||
600 | #define PROC_PIDFDATALKINFO 8 | |
601 | #define PROC_PIDFDATALKINFO_SIZE (sizeof(struct appletalk_fdinfo)) | |
602 | ||
603 | ||
604 | ||
605 | #ifdef XNU_KERNEL_PRIVATE | |
606 | extern int fill_socketinfo(socket_t so, struct socket_info *si); | |
607 | extern int fill_pshminfo(struct pshmnode * pshm, struct pshm_info * pinfo); | |
608 | extern int fill_pseminfo(struct psemnode * psem, struct psem_info * pinfo); | |
609 | extern int fill_pipeinfo(struct pipe * cpipe, struct pipe_info * pinfo); | |
610 | extern int fill_kqueueinfo(struct kqueue * kq, struct kqueue_info * kinfo); | |
611 | #endif /* XNU_KERNEL_PRIVATE */ | |
612 | ||
613 | ||
614 | __END_DECLS | |
615 | ||
616 | #endif /*_SYS_PROC_INFO_H */ |