2  * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   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. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  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 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  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. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  29 #ifndef _SYS_PROC_INFO_H 
  30 #define _SYS_PROC_INFO_H 
  32 #include <sys/cdefs.h> 
  33 #include <sys/param.h> 
  34 #include <sys/types.h> 
  36 #include <sys/mount.h> 
  37 #include <sys/socket.h> 
  39 #include <sys/kern_control.h> 
  41 #include <net/route.h> 
  42 #include <netinet/in.h> 
  43 #include <netinet/tcp.h> 
  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 #define PROC_PPID_ONLY          6 
  56         uint32_t                pbi_flags
;              /* 64bit; emulated etc */ 
  67         uint32_t                rfu_1
;                  /* reserved */ 
  68         char                    pbi_comm
[MAXCOMLEN
]; 
  69         char                    pbi_name
[2*MAXCOMLEN
];  /* empty if no name is registered */ 
  73         uint32_t                e_tdev
;                 /* controlling tty dev */ 
  74         uint32_t                e_tpgid
;                /* tty process group id */ 
  76         uint64_t                pbi_start_tvsec
; 
  77         uint64_t                pbi_start_tvusec
; 
  81 struct proc_bsdshortinfo 
{ 
  82         uint32_t                pbsi_pid
;               /* process id */ 
  83         uint32_t                pbsi_ppid
;              /* process parent id */ 
  84         uint32_t                pbsi_pgid
;              /* process perp id */ 
  85         uint32_t                pbsi_status
;            /* p_stat value, SZOMB, SRUN, etc */ 
  86         char                    pbsi_comm
[MAXCOMLEN
];   /* upto 16 characters of process name */ 
  87         uint32_t                pbsi_flags
;              /* 64bit; emulated etc */ 
  88         uid_t                   pbsi_uid
;               /* current uid on process */ 
  89         gid_t                   pbsi_gid
;               /* current gid on process */ 
  90         uid_t                   pbsi_ruid
;              /* current ruid on process */ 
  91         gid_t                   pbsi_rgid
;              /* current tgid on process */ 
  92         uid_t                   pbsi_svuid
;             /* current svuid on process */ 
  93         gid_t                   pbsi_svgid
;             /* current svgid on process */ 
  94         uint32_t                pbsi_rfu
;               /* reserved for future use*/ 
  98 /* pbi_flags values */ 
  99 #define PROC_FLAG_SYSTEM        1       /*  System process */ 
 100 #define PROC_FLAG_TRACED        2       /* process currently being traced, possibly by gdb */ 
 101 #define PROC_FLAG_INEXIT        4       /* process is working its way in exit() */ 
 102 #define PROC_FLAG_PPWAIT        8 
 103 #define PROC_FLAG_LP64          0x10    /* 64bit process */ 
 104 #define PROC_FLAG_SLEADER       0x20    /* The process is the session leader */ 
 105 #define PROC_FLAG_CTTY          0x40    /* process has a control tty */ 
 106 #define PROC_FLAG_CONTROLT      0x80    /* Has a controlling terminal */ 
 107 #define PROC_FLAG_THCWD         0x100   /* process has a thread with cwd */ 
 108 /* process control bits for resource starvation */ 
 109 #define PROC_FLAG_PC_THROTTLE   0x200   /* In resource starvation situations, this process is to be throttled */ 
 110 #define PROC_FLAG_PC_SUSP       0x400   /* In resource starvation situations, this process is to be suspended */ 
 111 #define PROC_FLAG_PC_KILL       0x600   /* In resource starvation situations, this process is to be terminated */ 
 112 #define PROC_FLAG_PC_MASK       0x600 
 113 /* process action bits for resource starvation */ 
 114 #define PROC_FLAG_PA_THROTTLE   0x800   /* The process is currently throttled due to resource starvation */ 
 115 #define PROC_FLAG_PA_SUSP       0x1000  /* The process is currently suspended due to resource starvation */ 
 116 #define PROC_FLAG_PSUGID        0x2000   /* process has set privileges since last exec */ 
 117 #define PROC_FLAG_EXEC          0x4000   /* process has called exec  */ 
 119 #define PROC_FLAG_DARWINBG      0x8000  /* process in darwin background */ 
 120 #define PROC_FLAG_EXT_DARWINBG  0x10000 /* process in darwin background - external enforcement */ 
 124 struct proc_taskinfo 
{ 
 125         uint64_t                pti_virtual_size
;       /* virtual memory size (bytes) */ 
 126         uint64_t                pti_resident_size
;      /* resident memory size (bytes) */ 
 127         uint64_t                pti_total_user
;         /* total time */ 
 128         uint64_t                pti_total_system
; 
 129         uint64_t                pti_threads_user
;       /* existing threads only */ 
 130         uint64_t                pti_threads_system
; 
 131         int32_t                 pti_policy
;             /* default policy for new threads */ 
 132         int32_t                 pti_faults
;             /* number of page faults */ 
 133         int32_t                 pti_pageins
;            /* number of actual pageins */ 
 134         int32_t                 pti_cow_faults
;         /* number of copy-on-write faults */ 
 135         int32_t                 pti_messages_sent
;      /* number of messages sent */ 
 136         int32_t                 pti_messages_received
;  /* number of messages received */ 
 137         int32_t                 pti_syscalls_mach
;      /* number of mach system calls */ 
 138         int32_t                 pti_syscalls_unix
;      /* number of unix system calls */ 
 139         int32_t                 pti_csw
;                /* number of context switches */ 
 140         int32_t                 pti_threadnum
;          /* number of threads in the task */ 
 141         int32_t                 pti_numrunning
;         /* number of running threads */ 
 142         int32_t                 pti_priority
;           /* task priority*/ 
 145 struct proc_taskallinfo 
{ 
 146         struct proc_bsdinfo     pbsd
; 
 147         struct proc_taskinfo    ptinfo
; 
 150 #define MAXTHREADNAMESIZE 64 
 152 struct proc_threadinfo 
{ 
 153         uint64_t                pth_user_time
;          /* user run time */ 
 154         uint64_t                pth_system_time
;        /* system run time */ 
 155         int32_t                 pth_cpu_usage
;          /* scaled cpu usage percentage */ 
 156         int32_t                 pth_policy
;             /* scheduling policy in effect */ 
 157         int32_t                 pth_run_state
;          /* run state (see below) */ 
 158         int32_t                 pth_flags
;              /* various flags (see below) */ 
 159         int32_t                 pth_sleep_time
;         /* number of seconds that thread */ 
 160         int32_t                 pth_curpri
;             /* cur priority*/ 
 161         int32_t                 pth_priority
;           /*  priority*/ 
 162         int32_t                 pth_maxpriority
;        /* max priority*/ 
 163         char                    pth_name
[MAXTHREADNAMESIZE
];    /* thread name, if any */ 
 166 struct proc_regioninfo 
{ 
 167         uint32_t                pri_protection
; 
 168         uint32_t                pri_max_protection
; 
 169         uint32_t                pri_inheritance
; 
 170         uint32_t                pri_flags
;              /* shared, external pager, is submap */ 
 172         uint32_t                pri_behavior
; 
 173         uint32_t                pri_user_wired_count
; 
 174         uint32_t                pri_user_tag
; 
 175         uint32_t                pri_pages_resident
; 
 176         uint32_t                pri_pages_shared_now_private
; 
 177         uint32_t                pri_pages_swapped_out
; 
 178         uint32_t                pri_pages_dirtied
; 
 179         uint32_t                pri_ref_count
; 
 180         uint32_t                pri_shadow_depth
; 
 181         uint32_t                pri_share_mode
; 
 182         uint32_t                pri_private_pages_resident
; 
 183         uint32_t                pri_shared_pages_resident
; 
 186         uint64_t                pri_address
; 
 190 #define PROC_REGION_SUBMAP      1 
 191 #define PROC_REGION_SHARED      2 
 197 #define SM_TRUESHARED      5 
 198 #define SM_PRIVATE_ALIASED 6 
 199 #define SM_SHARED_ALIASED  7 
 200 #define SM_LARGE_PAGE      8 
 204  *      Thread run states (state field). 
 207 #define TH_STATE_RUNNING        1       /* thread is running normally */ 
 208 #define TH_STATE_STOPPED        2       /* thread is stopped */ 
 209 #define TH_STATE_WAITING        3       /* thread is waiting normally */ 
 210 #define TH_STATE_UNINTERRUPTIBLE 4      /* thread is in an uninterruptible 
 212 #define TH_STATE_HALTED         5       /* thread is halted at a 
 216  *      Thread flags (flags field). 
 218 #define TH_FLAGS_SWAPPED        0x1     /* thread is swapped out */ 
 219 #define TH_FLAGS_IDLE           0x2     /* thread is an idle thread */ 
 222 struct proc_workqueueinfo 
{ 
 223         uint32_t        pwq_nthreads
;           /* total number of workqueue threads */ 
 224         uint32_t        pwq_runthreads
;         /* total number of running workqueue threads */ 
 225         uint32_t        pwq_blockedthreads
;     /* total number of blocked workqueue threads */ 
 230  *      workqueue state (pwq_state field) 
 232 #define WQ_EXCEEDED_CONSTRAINED_THREAD_LIMIT    0x1 
 233 #define WQ_EXCEEDED_TOTAL_THREAD_LIMIT          0x2 
 236 struct proc_fileinfo 
{ 
 237         uint32_t                fi_openflags
; 
 241         int32_t                 rfu_1
;  /* reserved */ 
 244 /* stats flags in proc_fileinfo */ 
 245 #define PROC_FP_SHARED  1       /* shared by more than one fd */ 
 246 #define PROC_FP_CLEXEC  2       /* close on exec */ 
 249  * A copy of stat64 with static sized fields. 
 252         uint32_t        vst_dev
;        /* [XSI] ID of device containing file */ 
 253         uint16_t        vst_mode
;       /* [XSI] Mode of file (see below) */ 
 254         uint16_t        vst_nlink
;      /* [XSI] Number of hard links */ 
 255         uint64_t        vst_ino
;        /* [XSI] File serial number */ 
 256         uid_t           vst_uid
;        /* [XSI] User ID of the file */ 
 257         gid_t           vst_gid
;        /* [XSI] Group ID of the file */ 
 258         int64_t         vst_atime
;      /* [XSI] Time of last access */ 
 259         int64_t         vst_atimensec
;  /* nsec of last access */ 
 260         int64_t         vst_mtime
;      /* [XSI] Last data modification time */ 
 261         int64_t         vst_mtimensec
;  /* last data modification nsec */ 
 262         int64_t         vst_ctime
;      /* [XSI] Time of last status change */ 
 263         int64_t         vst_ctimensec
;  /* nsec of last status change */ 
 264         int64_t         vst_birthtime
;  /*  File creation time(birth)  */ 
 265         int64_t         vst_birthtimensec
;      /* nsec of File creation time */ 
 266         off_t           vst_size
;       /* [XSI] file size, in bytes */ 
 267         int64_t         vst_blocks
;     /* [XSI] blocks allocated for file */ 
 268         int32_t         vst_blksize
;    /* [XSI] optimal blocksize for I/O */ 
 269         uint32_t        vst_flags
;      /* user defined flags for file */ 
 270         uint32_t        vst_gen
;        /* file generation number */ 
 271         uint32_t        vst_rdev
;       /* [XSI] Device ID */ 
 272         int64_t         vst_qspare
[2];  /* RESERVED: DO NOT USE! */ 
 276         struct vinfo_stat       vi_stat
; 
 282 struct vnode_info_path 
{ 
 283         struct vnode_info       vip_vi
; 
 284         char                    vip_path
[MAXPATHLEN
];   /* tail end of it  */ 
 287 struct vnode_fdinfo 
{ 
 288         struct proc_fileinfo    pfi
; 
 289         struct vnode_info       pvi
; 
 292 struct vnode_fdinfowithpath 
{ 
 293         struct proc_fileinfo    pfi
; 
 294         struct vnode_info_path  pvip
; 
 297 struct proc_regionwithpathinfo 
{ 
 298         struct proc_regioninfo  prp_prinfo
; 
 299         struct vnode_info_path  prp_vip
; 
 302 struct proc_vnodepathinfo 
{ 
 303         struct vnode_info_path  pvi_cdir
; 
 304         struct vnode_info_path  pvi_rdir
; 
 307 struct proc_threadwithpathinfo 
{ 
 308         struct proc_threadinfo  pt
; 
 309         struct vnode_info_path  pvip
; 
 318  * IPv4 and IPv6 Sockets 
 325         u_int32_t               i46a_pad32
[3]; 
 326         struct in_addr          i46a_addr4
; 
 330         int                                     insi_fport
;             /* foreign port */ 
 331         int                                     insi_lport
;             /* local port */ 
 332         uint64_t                                insi_gencnt
;            /* generation count of this instance */ 
 333         uint32_t                                insi_flags
;             /* generic IP/datagram flags */ 
 336         uint8_t                                 insi_vflag
;             /* ini_IPV4 or ini_IPV6 */ 
 337         uint8_t                                 insi_ip_ttl
;            /* time to live proto */ 
 338         uint32_t                                rfu_1
;                  /* reserved */ 
 339         /* protocol dependent part */ 
 341                 struct in4in6_addr      ina_46
; 
 342                 struct in6_addr         ina_6
; 
 343         }                                       insi_faddr
;             /* foreign host table entry */ 
 345                 struct in4in6_addr      ina_46
; 
 346                 struct in6_addr         ina_6
; 
 347         }                                       insi_laddr
;             /* local host table entry */ 
 349                 u_char                  in4_tos
;                        /* type of service */ 
 363 #define TSI_T_REXMT             0       /* retransmit */ 
 364 #define TSI_T_PERSIST           1       /* retransmit persistence */ 
 365 #define TSI_T_KEEP              2       /* keep alive */ 
 366 #define TSI_T_2MSL              3       /* 2*msl quiet time timer */ 
 367 #define TSI_T_NTIMERS           4 
 369 #define TSI_S_CLOSED            0       /* closed */ 
 370 #define TSI_S_LISTEN            1       /* listening for connection */ 
 371 #define TSI_S_SYN_SENT          2       /* active, have sent syn */ 
 372 #define TSI_S_SYN_RECEIVED      3       /* have send and received syn */ 
 373 #define TSI_S_ESTABLISHED       4       /* established */ 
 374 #define TSI_S__CLOSE_WAIT       5       /* rcvd fin, waiting for close */ 
 375 #define TSI_S_FIN_WAIT_1        6       /* have closed, sent fin */ 
 376 #define TSI_S_CLOSING           7       /* closed xchd FIN; await FIN ACK */ 
 377 #define TSI_S_LAST_ACK          8       /* had fin and close; await FIN ACK */ 
 378 #define TSI_S_FIN_WAIT_2        9       /* have closed, fin is acked */ 
 379 #define TSI_S_TIME_WAIT         10      /* in 2*msl quiet wait after close */ 
 380 #define TSI_S_RESERVED          11      /* pseudo state: reserved */ 
 382 struct tcp_sockinfo 
{ 
 383         struct in_sockinfo              tcpsi_ini
; 
 385         int                             tcpsi_timer
[TSI_T_NTIMERS
]; 
 387         uint32_t                        tcpsi_flags
; 
 388         uint32_t                        rfu_1
;          /* reserved */ 
 389         uint64_t                        tcpsi_tp
;       /* opaque handle of TCP protocol control block */ 
 393  * Unix Domain Sockets 
 398         uint64_t                                unsi_conn_so
;   /* opaque handle of connected socket */ 
 399         uint64_t                                unsi_conn_pcb
;  /* opaque handle of connected protocol control block */ 
 401                 struct sockaddr_un      ua_sun
; 
 402                 char                    ua_dummy
[SOCK_MAXADDRLEN
]; 
 403         }                                       unsi_addr
;      /* bound address */ 
 405                 struct sockaddr_un      ua_sun
; 
 406                 char                    ua_dummy
[SOCK_MAXADDRLEN
]; 
 407         }                                       unsi_caddr
;     /* address of socket connected to */ 
 415         uint32_t        ndrvsi_if_family
; 
 416         uint32_t        ndrvsi_if_unit
; 
 417         char            ndrvsi_if_name
[IF_NAMESIZE
]; 
 421  * Kernel Event Sockets 
 424 struct kern_event_info 
{ 
 425         uint32_t        kesi_vendor_code_filter
; 
 426         uint32_t        kesi_class_filter
; 
 427         uint32_t        kesi_subclass_filter
; 
 431  * Kernel Control Sockets 
 434 struct kern_ctl_info 
{ 
 436         uint32_t        kcsi_reg_unit
; 
 437         uint32_t        kcsi_flags
;                     /* support flags */ 
 438         uint32_t        kcsi_recvbufsize
;               /* request more than the default buffer size */ 
 439         uint32_t        kcsi_sendbufsize
;               /* request more than the default buffer size */ 
 441         char            kcsi_name
[MAX_KCTL_NAME
];       /* unique nke identifier, provided by DTS */ 
 446 #define SOI_S_NOFDREF           0x0001  /* no file table ref any more */ 
 447 #define SOI_S_ISCONNECTED       0x0002  /* socket connected to a peer */ 
 448 #define SOI_S_ISCONNECTING      0x0004  /* in process of connecting to peer */ 
 449 #define SOI_S_ISDISCONNECTING   0x0008  /* in process of disconnecting */ 
 450 #define SOI_S_CANTSENDMORE      0x0010  /* can't send more data to peer */ 
 451 #define SOI_S_CANTRCVMORE       0x0020  /* can't receive more data from peer */ 
 452 #define SOI_S_RCVATMARK         0x0040  /* at mark on input */ 
 453 #define SOI_S_PRIV              0x0080  /* privileged for broadcast, raw... */ 
 454 #define SOI_S_NBIO              0x0100  /* non-blocking ops */ 
 455 #define SOI_S_ASYNC             0x0200  /* async i/o notify */ 
 456 #define SOI_S_INCOMP            0x0800  /* Unaccepted, incomplete connection */ 
 457 #define SOI_S_COMP              0x1000  /* unaccepted, complete connection */ 
 458 #define SOI_S_ISDISCONNECTED    0x2000  /* socket disconnected from peer */ 
 459 #define SOI_S_DRAINING          0x4000  /* close waiting for blocked system calls to drain */ 
 461 struct sockbuf_info 
{ 
 463         uint32_t                sbi_hiwat
;                      /* SO_RCVBUF, SO_SNDBUF */ 
 472         SOCKINFO_GENERIC        
= 0, 
 477         SOCKINFO_KERN_EVENT     
= 5, 
 478         SOCKINFO_KERN_CTL       
= 6 
 482         struct vinfo_stat                       soi_stat
; 
 483         uint64_t                                soi_so
;         /* opaque handle of socket */ 
 484         uint64_t                                soi_pcb
;        /* opaque handle of protocol control block */ 
 496         uint32_t                                soi_oobmark
; 
 497         struct sockbuf_info                     soi_rcv
; 
 498         struct sockbuf_info                     soi_snd
; 
 500         uint32_t                                rfu_1
;          /* reserved */ 
 502                 struct in_sockinfo      pri_in
;                 /* SOCKINFO_IN */ 
 503                 struct tcp_sockinfo     pri_tcp
;                /* SOCKINFO_TCP */ 
 504                 struct un_sockinfo      pri_un
;                 /* SOCKINFO_UN */ 
 505                 struct ndrv_info        pri_ndrv
;               /* SOCKINFO_NDRV */ 
 506                 struct kern_event_info  pri_kern_event
;         /* SOCKINFO_KERN_EVENT */ 
 507                 struct kern_ctl_info    pri_kern_ctl
;           /* SOCKINFO_KERN_CTL */ 
 511 struct socket_fdinfo 
{ 
 512         struct proc_fileinfo    pfi
; 
 513         struct socket_info      psi
; 
 519         struct vinfo_stat       psem_stat
; 
 520         char                    psem_name
[MAXPATHLEN
]; 
 524         struct proc_fileinfo    pfi
; 
 525         struct psem_info        pseminfo
; 
 531         struct vinfo_stat       pshm_stat
; 
 532         uint64_t                pshm_mappaddr
; 
 533         char                    pshm_name
[MAXPATHLEN
]; 
 537         struct proc_fileinfo    pfi
; 
 538         struct pshm_info        pshminfo
; 
 543         struct vinfo_stat       pipe_stat
; 
 544         uint64_t                pipe_handle
; 
 545         uint64_t                pipe_peerhandle
; 
 547         int                     rfu_1
;  /* reserved */ 
 551         struct proc_fileinfo    pfi
; 
 552         struct pipe_info        pipeinfo
; 
 557         struct vinfo_stat       kq_stat
; 
 559         uint32_t                rfu_1
;  /* reserved */ 
 561 #define PROC_KQUEUE_SELECT      1 
 562 #define PROC_KQUEUE_SLEEP       2 
 564 struct kqueue_fdinfo 
{ 
 565         struct proc_fileinfo    pfi
; 
 566         struct kqueue_info      kqueueinfo
; 
 569 struct appletalk_info 
{ 
 570         struct vinfo_stat       atalk_stat
; 
 573 struct appletalk_fdinfo 
{ 
 574         struct proc_fileinfo    pfi
; 
 575         struct appletalk_info   appletalkinfo
; 
 580 /* defns of process file desc type */ 
 581 #define PROX_FDTYPE_ATALK       0 
 582 #define PROX_FDTYPE_VNODE       1 
 583 #define PROX_FDTYPE_SOCKET      2 
 584 #define PROX_FDTYPE_PSHM        3 
 585 #define PROX_FDTYPE_PSEM        4 
 586 #define PROX_FDTYPE_KQUEUE      5 
 587 #define PROX_FDTYPE_PIPE        6 
 588 #define PROX_FDTYPE_FSEVENTS    7 
 592         uint32_t                proc_fdtype
;     
 595 struct proc_fileportinfo 
{ 
 596         uint32_t                proc_fileport
; 
 597         uint32_t                proc_fdtype
; 
 600 /* Flavors for proc_pidinfo() */ 
 601 #define PROC_PIDLISTFDS                 1 
 602 #define PROC_PIDLISTFD_SIZE             (sizeof(struct proc_fdinfo)) 
 604 #define PROC_PIDTASKALLINFO             2 
 605 #define PROC_PIDTASKALLINFO_SIZE        (sizeof(struct proc_taskallinfo)) 
 607 #define PROC_PIDTBSDINFO                3 
 608 #define PROC_PIDTBSDINFO_SIZE           (sizeof(struct proc_bsdinfo)) 
 610 #define PROC_PIDTASKINFO                4 
 611 #define PROC_PIDTASKINFO_SIZE           (sizeof(struct proc_taskinfo)) 
 613 #define PROC_PIDTHREADINFO              5 
 614 #define PROC_PIDTHREADINFO_SIZE         (sizeof(struct proc_threadinfo)) 
 616 #define PROC_PIDLISTTHREADS             6 
 617 #define PROC_PIDLISTTHREADS_SIZE        (2* sizeof(uint32_t)) 
 620 #define PROC_PIDREGIONINFO              7 
 621 #define PROC_PIDREGIONINFO_SIZE         (sizeof(struct proc_regioninfo)) 
 623 #define PROC_PIDREGIONPATHINFO          8 
 624 #define PROC_PIDREGIONPATHINFO_SIZE     (sizeof(struct proc_regionwithpathinfo)) 
 626 #define PROC_PIDVNODEPATHINFO           9 
 627 #define PROC_PIDVNODEPATHINFO_SIZE      (sizeof(struct proc_vnodepathinfo)) 
 629 #define PROC_PIDTHREADPATHINFO          10 
 630 #define PROC_PIDTHREADPATHINFO_SIZE     (sizeof(struct proc_threadwithpathinfo)) 
 632 #define PROC_PIDPATHINFO                11 
 633 #define PROC_PIDPATHINFO_SIZE           (MAXPATHLEN) 
 634 #define PROC_PIDPATHINFO_MAXSIZE        (4*MAXPATHLEN) 
 636 #define PROC_PIDWORKQUEUEINFO           12 
 637 #define PROC_PIDWORKQUEUEINFO_SIZE      (sizeof(struct proc_workqueueinfo)) 
 639 #define PROC_PIDT_SHORTBSDINFO          13 
 640 #define PROC_PIDT_SHORTBSDINFO_SIZE     (sizeof(struct proc_bsdshortinfo)) 
 642 #define PROC_PIDLISTFILEPORTS           14 
 643 #define PROC_PIDLISTFILEPORTS_SIZE      (sizeof(struct proc_fileportinfo)) 
 645 /* Flavors for proc_pidfdinfo */ 
 647 #define PROC_PIDFDVNODEINFO             1 
 648 #define PROC_PIDFDVNODEINFO_SIZE        (sizeof(struct vnode_fdinfo)) 
 650 #define PROC_PIDFDVNODEPATHINFO         2 
 651 #define PROC_PIDFDVNODEPATHINFO_SIZE    (sizeof(struct vnode_fdinfowithpath)) 
 653 #define PROC_PIDFDSOCKETINFO            3 
 654 #define PROC_PIDFDSOCKETINFO_SIZE       (sizeof(struct socket_fdinfo)) 
 656 #define PROC_PIDFDPSEMINFO              4 
 657 #define PROC_PIDFDPSEMINFO_SIZE         (sizeof(struct psem_fdinfo)) 
 659 #define PROC_PIDFDPSHMINFO              5 
 660 #define PROC_PIDFDPSHMINFO_SIZE         (sizeof(struct pshm_fdinfo)) 
 662 #define PROC_PIDFDPIPEINFO              6 
 663 #define PROC_PIDFDPIPEINFO_SIZE         (sizeof(struct pipe_fdinfo)) 
 665 #define PROC_PIDFDKQUEUEINFO            7 
 666 #define PROC_PIDFDKQUEUEINFO_SIZE       (sizeof(struct kqueue_fdinfo)) 
 668 #define PROC_PIDFDATALKINFO             8 
 669 #define PROC_PIDFDATALKINFO_SIZE        (sizeof(struct appletalk_fdinfo)) 
 671 /* Flavors for proc_pidfileportinfo */ 
 673 #define PROC_PIDFILEPORTVNODEPATHINFO   2       /* out: vnode_fdinfowithpath */ 
 674 #define PROC_PIDFILEPORTVNODEPATHINFO_SIZE      \ 
 675                                         PROC_PIDFDVNODEPATHINFO_SIZE 
 677 #define PROC_PIDFILEPORTSOCKETINFO      3       /* out: socket_fdinfo */ 
 678 #define PROC_PIDFILEPORTSOCKETINFO_SIZE PROC_PIDFDSOCKETINFO_SIZE 
 680 #define PROC_PIDFILEPORTPSHMINFO        5       /* out: pshm_fdinfo */ 
 681 #define PROC_PIDFILEPORTPSHMINFO_SIZE   PROC_PIDFDPSHMINFO_SIZE 
 683 #define PROC_PIDFILEPORTPIPEINFO        6       /* out: pipe_fdinfo */ 
 684 #define PROC_PIDFILEPORTPIPEINFO_SIZE   PROC_PIDFDPIPEINFO_SIZE 
 686 /* used for proc_setcontrol */ 
 687 #define PROC_SELFSET_PCONTROL           1 
 689 #define PROC_SELFSET_THREADNAME         2 
 690 #define PROC_SELFSET_THREADNAME_SIZE    (MAXTHREADNAMESIZE -1) 
 692 #define PROC_SELFSET_VMRSRCOWNER        3 
 694 #ifdef XNU_KERNEL_PRIVATE 
 707 extern int fill_socketinfo(socket_t so
, struct socket_info 
*si
); 
 708 extern int fill_pshminfo(struct pshmnode 
* pshm
, struct pshm_info 
* pinfo
); 
 709 extern int fill_pseminfo(struct psemnode 
* psem
, struct psem_info 
* pinfo
); 
 710 extern int fill_pipeinfo(struct pipe 
* cpipe
, struct pipe_info 
* pinfo
); 
 711 extern int fill_kqueueinfo(struct kqueue 
* kq
, struct kqueue_info 
* kinfo
); 
 712 extern int fill_procworkqueue(proc_t
, struct proc_workqueueinfo 
*); 
 713 #endif /* XNU_KERNEL_PRIVATE */ 
 717 #endif /*_SYS_PROC_INFO_H */