Mercurial > hg > truffle
annotate agent/src/os/solaris/proc/salibproc.h @ 3011:f00918f35c7f
inlining and runtime interface related changes:
added codeSize() and compilerStorage() to RiMethod
HotSpotMethodResolved uses reflective methods instead of vmIds and survives compilations
HotSpotResolvedType.isInitialized not represented as field (can change)
inlining stores graphs into method objects and reuses them
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Thu, 16 Jun 2011 20:36:17 +0200 |
parents | c18cbe5936b8 |
children | 405c634f4aaa |
rev | line source |
---|---|
0 | 1 /* |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
2 * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. |
0 | 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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 #ifndef _SALIBPROC_H_ | |
25 #define _SALIBPROC_H_ | |
26 | |
27 /* | |
28 * The following definitions, prototypes are from Solaris libproc.h. | |
29 * We used to use the copy of it from Solaris 8.0. But there are | |
30 * problems with that approach in building this library across Solaris | |
31 * versions. Solaris 10 has libproc.h in /usr/include. And libproc.h | |
32 * varies slightly across Solaris versions. On Solaris 9, we get | |
33 * 'sysret_t multiply defined' error. This is common minimum subset we | |
34 * really need from libproc.h. The libproc.h in the current dir has | |
35 * been left for reference and not used in build. | |
36 */ | |
37 | |
38 #include <dlfcn.h> | |
39 #include <gelf.h> | |
40 #include <procfs.h> | |
41 #include <proc_service.h> | |
42 #include <fcntl.h> | |
43 #include <unistd.h> | |
44 | |
45 #ifdef __cplusplus | |
46 extern "C" { | |
47 #endif | |
48 | |
49 /* | |
50 * 'object_name' is the name of a load object obtained from an | |
51 * iteration over the process's address space mappings (Pmapping_iter), | |
52 * or an iteration over the process's mapped objects (Pobject_iter), | |
53 * or else it is one of the special PR_OBJ_* values above. | |
54 */ | |
55 | |
56 extern int Plookup_by_addr(struct ps_prochandle *, | |
57 uintptr_t, char *, size_t, GElf_Sym *); | |
58 | |
59 typedef int proc_map_f(void *, const prmap_t *, const char *); | |
60 extern int Pobject_iter(struct ps_prochandle *, proc_map_f *, void *); | |
61 | |
62 /* | |
63 * Utility functions for processing arguments which should be /proc files, | |
64 * pids, and/or core files. The returned error code can be passed to | |
65 * Pgrab_error() in order to convert it to an error string. | |
66 */ | |
67 #define PR_ARG_PIDS 0x1 /* Allow pid and /proc file arguments */ | |
68 #define PR_ARG_CORES 0x2 /* Allow core file arguments */ | |
69 #define PR_ARG_ANY (PR_ARG_PIDS | PR_ARG_CORES) | |
70 | |
71 /* Flags accepted by Pgrab() (partial) */ | |
72 #define PGRAB_FORCE 0x02 /* Open the process w/o O_EXCL */ | |
73 | |
74 /* Error codes from Pgrab(), Pfgrab_core(), and Pgrab_core() */ | |
75 #define G_STRANGE -1 /* Unanticipated error, errno is meaningful */ | |
76 #define G_NOPROC 1 /* No such process */ | |
77 #define G_NOCORE 2 /* No such core file */ | |
78 #define G_NOPROCORCORE 3 /* No such proc or core (for proc_arg_grab) */ | |
79 #define G_NOEXEC 4 /* Cannot locate executable file */ | |
80 #define G_ZOMB 5 /* Zombie process */ | |
81 #define G_PERM 6 /* No permission */ | |
82 #define G_BUSY 7 /* Another process has control */ | |
83 #define G_SYS 8 /* System process */ | |
84 #define G_SELF 9 /* Process is self */ | |
85 #define G_INTR 10 /* Interrupt received while grabbing */ | |
86 #define G_LP64 11 /* Process is _LP64, self is ILP32 */ | |
87 #define G_FORMAT 12 /* File is not an ELF format core file */ | |
88 #define G_ELF 13 /* Libelf error, elf_errno() is meaningful */ | |
89 #define G_NOTE 14 /* Required PT_NOTE Phdr not present in core */ | |
90 | |
91 extern struct ps_prochandle *proc_arg_grab(const char *, int, int, int *); | |
92 extern const pstatus_t *Pstatus(struct ps_prochandle *); | |
93 | |
94 /* Flags accepted by Prelease (partial) */ | |
95 #define PRELEASE_CLEAR 0x10 /* Clear all tracing flags */ | |
96 | |
97 extern void Prelease(struct ps_prochandle *, int); | |
98 extern int Psetrun(struct ps_prochandle *, int, int); | |
99 extern int Pstop(struct ps_prochandle *, uint_t); | |
100 | |
101 /* | |
102 * Stack frame iteration interface. | |
103 */ | |
104 typedef int proc_stack_f(void *, const prgregset_t, uint_t, const long *); | |
105 extern int Pstack_iter(struct ps_prochandle *, | |
106 const prgregset_t, proc_stack_f *, void *); | |
107 | |
108 #define PR_OBJ_EVERY ((const char *)-1) /* search every load object */ | |
109 | |
110 | |
111 #ifdef __cplusplus | |
112 } | |
113 #endif | |
114 | |
115 #endif /* _SALIBPROC_H_ */ |