src/cpu/mips/vm/vm_version_ext_mips.cpp

Sat, 24 Oct 2020 14:55:37 +0800

author
aoqi
date
Sat, 24 Oct 2020 14:55:37 +0800
changeset 9933
0672fc1cf811
permissions
-rw-r--r--

#15190 MIPS port of 8243823: JFR Backport - vm_version_ext_mips.(h|c)pp support

     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  */
    26 #include "memory/allocation.inline.hpp"
    27 #include "vm_version_ext_mips.hpp"
    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};
    37 void VM_Version_Ext::initialize_cpu_information(void) {
    38   // do nothing if cpu info has been initialized
    39   if (_initialized) {
    40     return;
    41   }
    43   int core_id = -1;
    44   int chip_id = -1;
    45   int len = 0;
    46   char* src_string = NULL;
    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 }
    59 int VM_Version_Ext::number_of_threads(void) {
    60   initialize_cpu_information();
    61   return _no_of_threads;
    62 }
    64 int VM_Version_Ext::number_of_cores(void) {
    65   initialize_cpu_information();
    66   return _no_of_cores;
    67 }
    69 int VM_Version_Ext::number_of_sockets(void) {
    70   initialize_cpu_information();
    71   return _no_of_sockets;
    72 }
    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 }
    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