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