Print this page
12046 Provide /proc/<PID>/fdinfo/

*** 864,873 **** --- 864,1006 ---- other than its read/write open modes in the controlled process. If an entry refers to a directory, it can be accessed with the same semantics as /proc/pid/cwd. An attempt to open any other type of entry fails with EACCES. + fdinfo + A directory containing information about each of the process's open + files. Each entry is a decimal number corresponding to an open file + descriptor in the process. Each file contains a prfdinfov2_t structure + as follows: + + typedef struct prfdinfov2 { + int pr_fd; /* file descriptor number */ + mode_t pr_mode; /* (see st_mode in stat(2)) */ + uint64_t pr_ino; /* inode number */ + uint64_t pr_size; /* file size */ + int64_t pr_offset; /* current offset of file descriptor */ + uid_t pr_uid; /* owner's user id */ + gid_t pr_gid; /* owner's group id */ + major_t pr_major; /* major number of device containing file */ + minor_t pr_minor; /* minor number of device containing file */ + major_t pr_rmajor; /* major number (if special file) */ + minor_t pr_rminor; /* minor number (if special file) */ + int pr_fileflags; /* (see F_GETXFL in fcntl(2)) */ + int pr_fdflags; /* (see F_GETFD in fcntl(2)) */ + short pr_locktype; /* (see F_GETLK in fcntl(2)) */ + pid_t pr_lockpid; /* process holding file lock (see F_GETLK) */ + int pr_locksysid; /* sysid of locking process (see F_GETLK) */ + pid_t pr_peerpid; /* peer process (socket, door) */ + int pr_filler[25]; /* reserved for future use */ + char pr_peername[PRFNSZ]; /* peer process name */ + #if __STDC_VERSION__ >= 199901L + char pr_misc[]; /* self describing structures */ + #else + char pr_misc[1]; + #endif + } prfdinfov2_t; + + The pr_misc element points to a list of additional miscellaneous data + items, each of which has a header of type pr_misc_header_t specifying the + size and type, and some data which immediately follow the header. + + typedef struct pr_misc_header { + uint_t pr_misc_size; + uint_t pr_misc_type; + } pr_misc_header_t; + + The pr_misc_size field is the sum of the sizes of the header and the + associated data. The end of the list is indicated by a header with a + zero size. + + The following miscellaneous data types can be present: + + PR_PATHNAME The file descriptor's path in the + filesystem. This is a sequence of + characters of the length indicated by + pr_misc_size and it not guaranteed to be + null-terminated. + + PR_SOCKETNAME A sockaddr structure representing the + local socket name for this file + descriptor, as would be returned by + calling getsockname() within the process. + + PR_PEERSOCKNAME A sockaddr structure representing the peer + socket name for this file desciptor, as + would be returned by calling getpeername() + within the process. + + PR_SOCKOPTS_BOOL_OPTS An unsigned integer which has bits set + corresponding to options which are set on + the underlying socket. The following bits + may be set: + + PR_SO_DEBUG + + PR_SO_REUSEADDR + + PR_SO_REUSEPORT + + PR_SO_KEEPALIVE + + PR_SO_DONTROUTE + + PR_SO_BROADCAST + + PR_SO_OOBINLINE + + PR_SO_DGRAM_ERRIND + + PR_SO_ALLZONES + + PR_SO_MAC_EXEMPT + + PR_SO_EXCLBIND + + PR_SO_PASSIVE_CONNECT + + PR_SO_ACCEPTCONN + + PR_UDP_NAT_T_ENDPOINT + + PR_SO_VRRP + + PR_SO_MAC_IMPLICIT + + PR_SOCKOPT_LINGER A struct linger as would be returned by + calling getsockopt(SO_LINGER) within the + process. + + PR_SOCKOPT_SNDBUF The data that would be returned by calling + getsockopt(SO_SNDBUF) within the process. + + PR_SOCKOPT_RCVBUF The data that would be returned by calling + getsockopt(SO_RCVBUF) within the process. + + PR_SOCKOPT_IP_NEXTHOP The data that would be returned by calling + getsockopt(IPPROTO_IP, IP_NEXTHOP) within + the process. + + PR_SOCKOPT_IPV6_NEXTHOP The data that would be returned by calling + getsockopt(IPPROTO_IPV6, IPV6_NEXTHOP) + within the process. + + PR_SOCKOPT_TYPE The data that would be returned by calling + getsockopt(SO_TYPE) within the process. + + PR_SOCKOPT_TCP_CONGESTION For TCP sockets, the data that would be + returned by calling + getsockopt(IPPROTO_TCP, TCP_CONGESTION) + within the process. This is a character + array containing the name of the + congestion algorithm in use for the + socket. + + PR_SOCKFILTERS_PRIV Private data relating to any socket + filters pushed on this descriptor. + object A directory containing read-only files with names corresponding to the pr_mapname entries in the map and pagedata files. Opening such a file yields a file descriptor for the underlying mapped file associated with an address-space mapping in the process. The file name a.out appears in
*** 1894,1899 **** On SPARC based machines, the types gregset_t and fpregset_t defined in <sys/regset.h> are similar to but not the same as the types prgregset_t and prfpregset_t defined in <procfs.h>. ! illumos January 11, 2019 illumos --- 2027,2032 ---- On SPARC based machines, the types gregset_t and fpregset_t defined in <sys/regset.h> are similar to but not the same as the types prgregset_t and prfpregset_t defined in <procfs.h>. ! illumos December 3, 2019 illumos