src/cpu/mips/vm/vm_version_ext_mips.cpp

changeset 9933
0672fc1cf811
equal deleted inserted replaced
9932:86ea9a02a717 9933:0672fc1cf811
1 /*
2 * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2018, 2020, Loongson Technology. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
24 */
25
26 #include "memory/allocation.inline.hpp"
27 #include "vm_version_ext_mips.hpp"
28
29 // VM_Version_Ext statics
30 int VM_Version_Ext::_no_of_threads = 0;
31 int VM_Version_Ext::_no_of_cores = 0;
32 int VM_Version_Ext::_no_of_sockets = 0;
33 bool VM_Version_Ext::_initialized = false;
34 char VM_Version_Ext::_cpu_name[CPU_TYPE_DESC_BUF_SIZE] = {0};
35 char VM_Version_Ext::_cpu_desc[CPU_DETAILED_DESC_BUF_SIZE] = {0};
36
37 void VM_Version_Ext::initialize_cpu_information(void) {
38 // do nothing if cpu info has been initialized
39 if (_initialized) {
40 return;
41 }
42
43 int core_id = -1;
44 int chip_id = -1;
45 int len = 0;
46 char* src_string = NULL;
47
48 _no_of_cores = os::processor_count();
49 _no_of_threads = _no_of_cores;
50 _no_of_sockets = _no_of_cores;
51 if (is_loongson())
52 snprintf(_cpu_name, CPU_TYPE_DESC_BUF_SIZE - 1, "Loongson");
53 else
54 snprintf(_cpu_name, CPU_TYPE_DESC_BUF_SIZE - 1, "MIPS");
55 snprintf(_cpu_desc, CPU_DETAILED_DESC_BUF_SIZE, "%s", cpu_features());
56 _initialized = true;
57 }
58
59 int VM_Version_Ext::number_of_threads(void) {
60 initialize_cpu_information();
61 return _no_of_threads;
62 }
63
64 int VM_Version_Ext::number_of_cores(void) {
65 initialize_cpu_information();
66 return _no_of_cores;
67 }
68
69 int VM_Version_Ext::number_of_sockets(void) {
70 initialize_cpu_information();
71 return _no_of_sockets;
72 }
73
74 const char* VM_Version_Ext::cpu_name(void) {
75 initialize_cpu_information();
76 char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_TYPE_DESC_BUF_SIZE, mtTracing);
77 if (NULL == tmp) {
78 return NULL;
79 }
80 strncpy(tmp, _cpu_name, CPU_TYPE_DESC_BUF_SIZE);
81 return tmp;
82 }
83
84 const char* VM_Version_Ext::cpu_description(void) {
85 initialize_cpu_information();
86 char* tmp = NEW_C_HEAP_ARRAY_RETURN_NULL(char, CPU_DETAILED_DESC_BUF_SIZE, mtTracing);
87 if (NULL == tmp) {
88 return NULL;
89 }
90 strncpy(tmp, _cpu_desc, CPU_DETAILED_DESC_BUF_SIZE);
91 return tmp;
92 }

mercurial