Class PsInfo


  • @ThreadSafe
    public final class PsInfo
    extends java.lang.Object
    Utility to query /proc/psinfo
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static AixLibc LIBC  
      private static org.slf4j.Logger LOG  
      private static long PAGE_SIZE  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private PsInfo()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      private static long conditionallyReadBufferFromStartOfPage​(int fd, com.sun.jna.Memory buffer, com.sun.jna.platform.unix.LibCAPI.size_t bufSize, long bufStart, long addr)
      Reads the page containing addr into buffer, unless the buffer already contains that page (as indicated by the bufStart address), in which case nothing is changed.
      private static long getOffsetFromBuffer​(com.sun.jna.Memory buffer, long offset, long increment)  
      static Pair<java.util.List<java.lang.String>,​java.util.Map<java.lang.String,​java.lang.String>> queryArgsEnv​(int pid, AixLibc.AixPsInfo psinfo)
      Read the argument and environment strings from process address space
      static Triplet<java.lang.Integer,​java.lang.Long,​java.lang.Long> queryArgsEnvAddrs​(int pid, AixLibc.AixPsInfo psinfo)
      Reads the pr_argc, pr_argv, and pr_envp fields from /proc/pid/psinfo
      static AixLibc.AixLwpsInfo queryLwpsInfo​(int pid, int tid)
      Reads /proc/pid/lwp/tid/lwpsinfo and returns data in a structure
      static AixLibc.AixPsInfo queryPsInfo​(int pid)
      Reads /proc/pid/psinfo and returns data in a structure
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • LIBC

        private static final AixLibc LIBC
    • Constructor Detail

      • PsInfo

        private PsInfo()
    • Method Detail

      • queryPsInfo

        public static AixLibc.AixPsInfo queryPsInfo​(int pid)
        Reads /proc/pid/psinfo and returns data in a structure
        Parameters:
        pid - The process ID
        Returns:
        A structure containing information for the requested process
      • queryLwpsInfo

        public static AixLibc.AixLwpsInfo queryLwpsInfo​(int pid,
                                                        int tid)
        Reads /proc/pid/lwp/tid/lwpsinfo and returns data in a structure
        Parameters:
        pid - The process ID
        tid - The thread ID (lwpid)
        Returns:
        A structure containing information for the requested thread
      • queryArgsEnvAddrs

        public static Triplet<java.lang.Integer,​java.lang.Long,​java.lang.Long> queryArgsEnvAddrs​(int pid,
                                                                                                             AixLibc.AixPsInfo psinfo)
        Reads the pr_argc, pr_argv, and pr_envp fields from /proc/pid/psinfo
        Parameters:
        pid - The process ID
        psinfo - A populated AixLibc.AixPsInfo structure containing the offset pointers for these fields
        Returns:
        A triplet containing the argc, argv, and envp values, or null if unable to read
      • queryArgsEnv

        public static Pair<java.util.List<java.lang.String>,​java.util.Map<java.lang.String,​java.lang.String>> queryArgsEnv​(int pid,
                                                                                                                                       AixLibc.AixPsInfo psinfo)
        Read the argument and environment strings from process address space
        Parameters:
        pid - the process id
        psinfo - A populated AixLibc.AixPsInfo structure containing the offset pointers for these fields
        Returns:
        A pair containing a list of the arguments and a map of environment variables
      • conditionallyReadBufferFromStartOfPage

        private static long conditionallyReadBufferFromStartOfPage​(int fd,
                                                                   com.sun.jna.Memory buffer,
                                                                   com.sun.jna.platform.unix.LibCAPI.size_t bufSize,
                                                                   long bufStart,
                                                                   long addr)
        Reads the page containing addr into buffer, unless the buffer already contains that page (as indicated by the bufStart address), in which case nothing is changed.
        Parameters:
        fd - The file descriptor for the address space
        buffer - An allocated buffer, possibly with data reread from bufStart
        bufSize - The size of the buffer
        bufStart - The start of data currently in bufStart, or 0 if uninitialized
        addr - THe address whose page to read into the buffer
        Returns:
        The new starting pointer for the buffer
      • getOffsetFromBuffer

        private static long getOffsetFromBuffer​(com.sun.jna.Memory buffer,
                                                long offset,
                                                long increment)