hotspot/agent/src/os/solaris/dbx/proc_service_2.h
changeset 10864 17307b96ae38
parent 10779 5037da29fa26
parent 10762 cc1f5ce8e504
child 10865 7f8dd1713604
equal deleted inserted replaced
10779:5037da29fa26 10864:17307b96ae38
     1 /*
       
     2  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  *
       
    23  */
       
    24 
       
    25 #ifndef _PROC_SERVICE_2_H
       
    26 #define _PROC_SERVICE_2_H
       
    27 
       
    28 /*
       
    29  * Types, function definitions for the provider of services beyond
       
    30  * proc_service.  This interface will be used by import modules like
       
    31  * BAT/prex, NEO debugger etc.
       
    32  */
       
    33 
       
    34 /*
       
    35  CCR info
       
    36 
       
    37  Version history:
       
    38 
       
    39         1.0       - Initial CCR release
       
    40 
       
    41         1.1       - Changes for GLUE/neo.
       
    42                     New entry points ps_svnt_generic() and ps_svc_generic()
       
    43                   - New entry point ps_getpid()
       
    44 
       
    45  Release information for automatic CCR updates:
       
    46  BEGIN RELEASE NOTES: (signifies what gets put into CCR release notes)
       
    47         1.2       - Changes to support Solaris 2.7
       
    48 
       
    49  END RELEASE NOTES: (signifies what gets put into CCR release notes)
       
    50 
       
    51  Following is used for CCR version number:
       
    52 
       
    53 #define CCR_PROC_SERVICE_2_VERSION 1.2
       
    54 
       
    55 */
       
    56 
       
    57 
       
    58 #include <proc_service.h>
       
    59 #include <sys/types.h>
       
    60 
       
    61 #ifdef __cplusplus
       
    62 extern "C" {
       
    63 #endif
       
    64 
       
    65 struct ps_loadobj {
       
    66         int     objfd;          /* fd of the load object or executable
       
    67                                  * -1 implies its not available.
       
    68                                  * This file decriptor is live only during the
       
    69                                  * particular call to ps_iter_f().  If you
       
    70                                  * need it beyond that you need to dup() it.
       
    71                                  */
       
    72         psaddr_t
       
    73                 text_base;      /* address where text of loadobj was mapped */
       
    74         psaddr_t
       
    75                 data_base;      /* address where data of loadobj was mapped */
       
    76         const char *objname;    /* loadobj name */
       
    77 };
       
    78 
       
    79 typedef int ps_iter_f(const struct ps_prochandle *, const struct ps_loadobj *,
       
    80                         void *cd);
       
    81 
       
    82 /*
       
    83  * Returns the ps_prochandle for the current process under focus.  Returns
       
    84  * NULL if there is none.
       
    85  */
       
    86 
       
    87 const struct ps_prochandle *
       
    88 ps_get_prochandle(void);
       
    89 
       
    90 /*
       
    91  * Returns the ps_prochandle for the current process(allows core files to
       
    92  * be specified) under focus.  Returns NULL if there is none.
       
    93  */
       
    94 const struct ps_prochandle *
       
    95 ps_get_prochandle2(int cores_too);
       
    96 
       
    97 /*
       
    98  * Returns the pid of the process referred to by the ps_prochandle.
       
    99  *
       
   100  * 0 is returned in case the ps_prochandle is not valid or refers to dead
       
   101  * process.
       
   102  *
       
   103  */
       
   104 pid_t
       
   105 ps_getpid(const struct ps_prochandle *);
       
   106 
       
   107 /*
       
   108  * Iteration function that iterates over all load objects *and the
       
   109  *      executable*
       
   110  *
       
   111  *      If the callback routine returns:
       
   112  *      0 - continue processing link objects
       
   113  *      non zero - stop calling the callback function
       
   114  *
       
   115  */
       
   116 
       
   117 ps_err_e
       
   118 ps_loadobj_iter(const struct ps_prochandle *, ps_iter_f *, void *clnt_data);
       
   119 
       
   120 /*
       
   121  * Address => function name mapping
       
   122  *
       
   123  * Given an address, returns a pointer to the function's
       
   124  * linker name (null terminated).
       
   125  */
       
   126 
       
   127 ps_err_e
       
   128 ps_find_fun_name(const struct ps_prochandle *, psaddr_t addr,
       
   129                         const char **name);
       
   130 
       
   131 /*
       
   132  * Interface to LD_PRELOAD.  LD_PRELOAD given library across the
       
   133  * program 'exec'.
       
   134  *
       
   135  */
       
   136 
       
   137 /*
       
   138  * Append/Prepend the 'lib' (has to be library name as understood by LD_PRELOAD)
       
   139  * to the LD_PRELOAD variable setting to be used by the debugee
       
   140  * Returns a cookie (in id).
       
   141  */
       
   142 ps_err_e
       
   143 ps_ld_preload_append(const char *lib, int *id);
       
   144 ps_err_e
       
   145 ps_ld_preload_prepend(const char *lib, int *id);
       
   146 
       
   147 /*
       
   148  * Remove the library associated with 'id' from the LD_PRELOAD setting.
       
   149  *
       
   150  */
       
   151 ps_err_e
       
   152 ps_ld_preload_remove(int id);
       
   153 
       
   154 #ifdef __cplusplus
       
   155 }
       
   156 #endif
       
   157 
       
   158 /*
       
   159  * The following are C++ only interfaces
       
   160  */
       
   161 #ifdef __cplusplus
       
   162 
       
   163 /*
       
   164  * classes ServiceDbx and ServantDbx and defined in "gp_dbx_svc.h" which is
       
   165  * accessed via CCR
       
   166  */
       
   167 extern class ServantDbx *ps_svnt_generic();
       
   168 extern class ServiceDbx *ps_svc_generic();
       
   169 
       
   170 #endif
       
   171 
       
   172 #endif /* _PROC_SERVICE_2_H */