Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/jcl/common/mgmtinit.h
6000 views
1
/*******************************************************************************
2
* Copyright (c) 1998, 2018 IBM Corp. and others
3
*
4
* This program and the accompanying materials are made available under
5
* the terms of the Eclipse Public License 2.0 which accompanies this
6
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
7
* or the Apache License, Version 2.0 which accompanies this distribution and
8
* is available at https://www.apache.org/licenses/LICENSE-2.0.
9
*
10
* This Source Code may also be made available under the following
11
* Secondary Licenses when the conditions for such availability set
12
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
13
* General Public License, version 2 with the GNU Classpath
14
* Exception [1] and GNU General Public License, version 2 with the
15
* OpenJDK Assembly Exception [2].
16
*
17
* [1] https://www.gnu.org/software/classpath/license.html
18
* [2] http://openjdk.java.net/legal/assembly-exception.html
19
*
20
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
21
*******************************************************************************/
22
#ifndef mgmtinit_h
23
#define mgmtinit_h
24
25
#include "omrgcconsts.h"
26
#include "j9modron.h"
27
28
#define THRESHOLD_EXCEEDED 1
29
#define COLLECTION_THRESHOLD_EXCEEDED 2
30
#define END_OF_GARBAGE_COLLECTION 3
31
#define NOTIFIER_SHUTDOWN_REQUEST 4
32
33
/* these constants have to match the logic in com.ibm.lang.management.OperatingSystemNotificationThread */
34
#define DLPAR_NOTIFIER_SHUTDOWN_REQUEST 0
35
#define DLPAR_NUMBER_OF_CPUS_CHANGE 1
36
#define DLPAR_PROCESSING_CAPACITY_CHANGE 2
37
#define DLPAR_TOTAL_PHYSICAL_MEMORY_CHANGE 3
38
39
#define NOTIFICATION_QUEUE_MAX 10
40
41
#define J9VM_MANAGEMENT_POOL_NONHEAP 0
42
#define J9VM_MANAGEMENT_POOL_NONHEAP_SEG 2
43
#define J9VM_MANAGEMENT_POOL_NONHEAP_SEG_CLASSES J9VM_MANAGEMENT_POOL_NONHEAP_SEG
44
#define J9VM_MANAGEMENT_POOL_NONHEAP_SEG_MISC (J9VM_MANAGEMENT_POOL_NONHEAP_SEG_CLASSES + 1)
45
#define J9VM_MANAGEMENT_POOL_NONHEAP_SEG_JIT_CODE (J9VM_MANAGEMENT_POOL_NONHEAP_SEG_MISC + 1)
46
#define J9VM_MANAGEMENT_POOL_NONHEAP_SEG_JIT_DATA (J9VM_MANAGEMENT_POOL_NONHEAP_SEG_JIT_CODE + 1)
47
48
#define J9VM_MANAGEMENT_POOL_HEAP 0x10000
49
#define J9VM_MANAGEMENT_POOL_HEAP_ID_MASK 0xffff
50
51
#define J9VM_MANAGEMENT_POOL_HEAP_JAVAHEAP (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_JAVAHEAP)
52
53
#define J9VM_MANAGEMENT_POOL_HEAP_TENURED (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_TENURED)
54
#define J9VM_MANAGEMENT_POOL_HEAP_TENURED_SOA (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_TENURED_SOA)
55
#define J9VM_MANAGEMENT_POOL_HEAP_TENURED_LOA (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_TENURED_LOA)
56
#define J9VM_MANAGEMENT_POOL_HEAP_NURSERY_ALLOCATE (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_NURSERY_ALLOCATE)
57
#define J9VM_MANAGEMENT_POOL_HEAP_NURSERY_SURVIVOR (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_NURSERY_SURVIVOR)
58
59
#define J9VM_MANAGEMENT_POOL_HEAP_REGION_OLD (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_REGION_OLD)
60
#define J9VM_MANAGEMENT_POOL_HEAP_REGION_EDEN (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_REGION_EDEN)
61
#define J9VM_MANAGEMENT_POOL_HEAP_REGION_SURVIVOR (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_REGION_SURVIVOR)
62
#define J9VM_MANAGEMENT_POOL_HEAP_REGION_RESERVED (J9VM_MANAGEMENT_POOL_HEAP + J9_GC_MANAGEMENT_POOL_REGION_RESERVED)
63
64
#define J9VM_MANAGEMENT_GC_HEAP 0x10000
65
#define J9VM_MANAGEMENT_GC_LOCAL 0x100
66
#define J9VM_MANAGEMENT_GC_HEAP_ID_MASK 0xff
67
68
#define J9VM_MANAGEMENT_GC_ID_GLOBAL (J9VM_MANAGEMENT_GC_HEAP + J9_GC_MANAGEMENT_COLLECTOR_GLOBAL)
69
#define J9VM_MANAGEMENT_GC_ID_SCAVENGE (J9VM_MANAGEMENT_GC_HEAP + J9VM_MANAGEMENT_GC_LOCAL + J9_GC_MANAGEMENT_COLLECTOR_SCAVENGE)
70
#define J9VM_MANAGEMENT_GC_ID_PGC (J9VM_MANAGEMENT_GC_HEAP + J9VM_MANAGEMENT_GC_LOCAL + J9_GC_MANAGEMENT_COLLECTOR_PGC)
71
#define J9VM_MANAGEMENT_GC_ID_GGC (J9VM_MANAGEMENT_GC_HEAP + J9_GC_MANAGEMENT_COLLECTOR_GGC)
72
#define J9VM_MANAGEMENT_GC_ID_EPSILON (J9VM_MANAGEMENT_GC_HEAP + J9_GC_MANAGEMENT_COLLECTOR_EPSILON)
73
74
#define J9VM_MANAGEMENT_NONHEAPPOOL_NAME_CLASSES "class storage"
75
#define J9VM_MANAGEMENT_NONHEAPPOOL_NAME_MISC "miscellaneous non-heap storage"
76
#define J9VM_MANAGEMENT_NONHEAPPOOL_NAME_JITCODE "JIT code cache"
77
#define J9VM_MANAGEMENT_NONHEAPPOOL_NAME_JITDATA "JIT data cache"
78
79
typedef struct memoryPoolUsageThreshold {
80
U_32 poolID;
81
U_64 usedSize;
82
U_64 totalSize;
83
U_64 maxSize;
84
U_64 thresholdCrossingCount;
85
} memoryPoolUsageThreshold;
86
87
typedef struct J9MemoryNotification {
88
UDATA type;
89
U_64 sequenceNumber;
90
struct J9MemoryNotification *next;
91
memoryPoolUsageThreshold *usageThreshold;
92
J9GarbageCollectionInfo *gcInfo;
93
} J9MemoryNotification;
94
95
96
97
typedef struct J9DLPARNotification {
98
UDATA type;
99
struct J9DLPARNotification *next;
100
U_64 data;
101
U_64 sequenceNumber;
102
} J9DLPARNotification;
103
jint managementInit(J9JavaVM *vm);
104
void managementTerminate(J9JavaVM *vm);
105
106
107
#define MEMORY_SEGMENT_LIST_DO(segmentList, imageSegment) {\
108
J9MemorySegment *imageSegment, *i2; \
109
imageSegment = segmentList->nextSegment; \
110
while(imageSegment) { \
111
i2 = (J9MemorySegment *)(imageSegment->nextSegment);
112
#define END_MEMORY_SEGMENT_LIST_DO(imageSegment) \
113
imageSegment = i2; }}
114
115
#endif /* mgmtinit_h */
116
117
118
119