diff agent/src/os/solaris/dbx/proc_service_2.h @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children c18cbe5936b8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/os/solaris/dbx/proc_service_2.h	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2002 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+#ifndef _PROC_SERVICE_2_H
+#define _PROC_SERVICE_2_H
+
+/*
+ * Types, function definitions for the provider of services beyond
+ * proc_service.  This interface will be used by import modules like
+ * BAT/prex, NEO debugger etc.
+ */
+
+/*
+ CCR info
+
+ Version history:
+
+        1.0       - Initial CCR release
+
+        1.1       - Changes for GLUE/neo.
+                    New entry points ps_svnt_generic() and ps_svc_generic()
+                  - New entry point ps_getpid()
+
+ Release information for automatic CCR updates:
+ BEGIN RELEASE NOTES: (signifies what gets put into CCR release notes)
+        1.2       - Changes to support Solaris 2.7
+
+ END RELEASE NOTES: (signifies what gets put into CCR release notes)
+
+ Following is used for CCR version number:
+
+#define CCR_PROC_SERVICE_2_VERSION 1.2
+
+*/
+
+
+#include <proc_service.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ps_loadobj {
+        int     objfd;          /* fd of the load object or executable
+                                 * -1 implies its not available.
+                                 * This file decriptor is live only during the
+                                 * particular call to ps_iter_f().  If you
+                                 * need it beyond that you need to dup() it.
+                                 */
+        psaddr_t
+                text_base;      /* address where text of loadobj was mapped */
+        psaddr_t
+                data_base;      /* address where data of loadobj was mapped */
+        const char *objname;    /* loadobj name */
+};
+
+typedef int ps_iter_f(const struct ps_prochandle *, const struct ps_loadobj *,
+                        void *cd);
+
+/*
+ * Returns the ps_prochandle for the current process under focus.  Returns
+ * NULL if there is none.
+ */
+
+const struct ps_prochandle *
+ps_get_prochandle(void);
+
+/*
+ * Returns the ps_prochandle for the current process(allows core files to
+ * be specified) under focus.  Returns NULL if there is none.
+ */
+const struct ps_prochandle *
+ps_get_prochandle2(int cores_too);
+
+/*
+ * Returns the pid of the process referred to by the ps_prochandle.
+ *
+ * 0 is returned in case the ps_prochandle is not valid or refers to dead
+ * process.
+ *
+ */
+pid_t
+ps_getpid(const struct ps_prochandle *);
+
+/*
+ * Iteration function that iterates over all load objects *and the
+ *      executable*
+ *
+ *      If the callback routine returns:
+ *      0 - continue processing link objects
+ *      non zero - stop calling the callback function
+ *
+ */
+
+ps_err_e
+ps_loadobj_iter(const struct ps_prochandle *, ps_iter_f *, void *clnt_data);
+
+/*
+ * Address => function name mapping
+ *
+ * Given an address, returns a pointer to the function's
+ * linker name (null terminated).
+ */
+
+ps_err_e
+ps_find_fun_name(const struct ps_prochandle *, psaddr_t addr,
+                        const char **name);
+
+/*
+ * Interface to LD_PRELOAD.  LD_PRELOAD given library across the
+ * program 'exec'.
+ *
+ */
+
+/*
+ * Append/Prepend the 'lib' (has to be library name as understood by LD_PRELOAD)
+ * to the LD_PRELOAD variable setting to be used by the debugee
+ * Returns a cookie (in id).
+ */
+ps_err_e
+ps_ld_preload_append(const char *lib, int *id);
+ps_err_e
+ps_ld_preload_prepend(const char *lib, int *id);
+
+/*
+ * Remove the library associated with 'id' from the LD_PRELOAD setting.
+ *
+ */
+ps_err_e
+ps_ld_preload_remove(int id);
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+ * The following are C++ only interfaces
+ */
+#ifdef __cplusplus
+
+/*
+ * classes ServiceDbx and ServantDbx and defined in "gp_dbx_svc.h" which is
+ * accessed via CCR
+ */
+extern class ServantDbx *ps_svnt_generic();
+extern class ServiceDbx *ps_svc_generic();
+
+#endif
+
+#endif /* _PROC_SERVICE_2_H */