dsh-remote 0.8.50 → 0.8.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +8 -0
- package/README.md +22 -0
- package/lib/client.js +15 -3
- package/lib/index.js +269 -8
- package/lib/instructions.js +288 -0
- package/lib/openssh.js +10 -1
- package/lib/pool.js +29 -1
- package/lib/remote-fs.js +26 -1
- package/lib/sftp-surface.js +46 -3
- package/lib/sshconfig.js +13 -3
- package/node_modules/buildcheck/.eslintrc.js +5 -0
- package/node_modules/buildcheck/.github/workflows/ci.yml +88 -0
- package/node_modules/buildcheck/.github/workflows/lint.yml +27 -0
- package/node_modules/buildcheck/.npmignore +3 -0
- package/node_modules/buildcheck/LICENSE +19 -0
- package/node_modules/buildcheck/README.md +106 -0
- package/node_modules/buildcheck/deps/Find-VisualStudio.cs +250 -0
- package/node_modules/buildcheck/lib/findvs.js +361 -0
- package/node_modules/buildcheck/lib/index.js +738 -0
- package/node_modules/buildcheck/package.json +36 -0
- package/node_modules/buildcheck/test/test.js +8 -0
- package/node_modules/cpu-features/.eslintrc.js +5 -0
- package/node_modules/cpu-features/.github/workflows/ci.yml +74 -0
- package/node_modules/cpu-features/.github/workflows/lint.yml +27 -0
- package/node_modules/cpu-features/LICENSE +19 -0
- package/node_modules/cpu-features/README.md +59 -0
- package/node_modules/cpu-features/binding.gyp +16 -0
- package/node_modules/cpu-features/buildcheck.js +32 -0
- package/node_modules/cpu-features/deps/cpu_features/.clang-format +4 -0
- package/node_modules/cpu-features/deps/cpu_features/.dockerignore +31 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/Dockerfile +5 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/aarch64_linux_cmake.yml +30 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_freebsd_cmake.yml +22 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_linux_bazel.yml +26 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_linux_cmake.yml +31 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_macos_cmake.yml +43 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_windows_cmake.yml +25 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/arm_linux_cmake.yml +31 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/clang_format.yml +24 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/mips_linux_cmake.yml +30 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/power_linux_cmake.yml +29 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/riscv_linux_cmake.yml +28 -0
- package/node_modules/cpu-features/deps/cpu_features/.github/workflows/s390x_linux_cmake.yml +27 -0
- package/node_modules/cpu-features/deps/cpu_features/.grenrc.yml +21 -0
- package/node_modules/cpu-features/deps/cpu_features/BUILD.bazel +329 -0
- package/node_modules/cpu-features/deps/cpu_features/CMakeLists.txt +261 -0
- package/node_modules/cpu-features/deps/cpu_features/CONTRIBUTING.md +23 -0
- package/node_modules/cpu-features/deps/cpu_features/LICENSE +230 -0
- package/node_modules/cpu-features/deps/cpu_features/README.md +272 -0
- package/node_modules/cpu-features/deps/cpu_features/WORKSPACE +19 -0
- package/node_modules/cpu-features/deps/cpu_features/bazel/ci/README.md +5 -0
- package/node_modules/cpu-features/deps/cpu_features/bazel/platforms.bzl +11 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/CpuFeaturesConfig.cmake.in +3 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/CpuFeaturesNdkCompatConfig.cmake.in +3 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/README.md +30 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/Makefile +252 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/README.md +40 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/docker.dot +64 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/docker.svg +312 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/generate_image.sh +7 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/docker/amd64/Dockerfile +48 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/docker/toolchain/Dockerfile +34 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/sample/CMakeLists.txt +22 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/sample/main.cpp +11 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/ci/vagrant/freebsd/Vagrantfile +107 -0
- package/node_modules/cpu-features/deps/cpu_features/cmake/googletest.CMakeLists.txt.in +15 -0
- package/node_modules/cpu-features/deps/cpu_features/cpu_features.gyp +105 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpu_features_cache_info.h +54 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpu_features_macros.h +384 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_aarch64.h +259 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_arm.h +121 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_mips.h +74 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_ppc.h +149 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_riscv.h +72 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_s390x.h +108 -0
- package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_x86.h +288 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/bit_utils.h +40 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/cpuid_x86.h +37 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/filesystem.h +39 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/hwcaps.h +240 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/stack_line_reader.h +49 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/string_view.h +110 -0
- package/node_modules/cpu-features/deps/cpu_features/include/internal/windows_utils.h +70 -0
- package/node_modules/cpu-features/deps/cpu_features/ndk_compat/CMakeLists.txt +60 -0
- package/node_modules/cpu-features/deps/cpu_features/ndk_compat/README.md +4 -0
- package/node_modules/cpu-features/deps/cpu_features/ndk_compat/cpu-features.c +205 -0
- package/node_modules/cpu-features/deps/cpu_features/ndk_compat/cpu-features.h +320 -0
- package/node_modules/cpu-features/deps/cpu_features/ndk_compat/ndk-compat-test.c +12 -0
- package/node_modules/cpu-features/deps/cpu_features/patches/0001-Add-Apple-Silicon-Support.patch +456 -0
- package/node_modules/cpu-features/deps/cpu_features/scripts/generate_badges.d +165 -0
- package/node_modules/cpu-features/deps/cpu_features/scripts/make_release.sh +75 -0
- package/node_modules/cpu-features/deps/cpu_features/scripts/run_integration.sh +490 -0
- package/node_modules/cpu-features/deps/cpu_features/scripts/test_integration.sh +79 -0
- package/node_modules/cpu-features/deps/cpu_features/src/copy.inl +19 -0
- package/node_modules/cpu-features/deps/cpu_features/src/define_introspection.inl +86 -0
- package/node_modules/cpu-features/deps/cpu_features/src/define_introspection_and_hwcaps.inl +26 -0
- package/node_modules/cpu-features/deps/cpu_features/src/equals.inl +22 -0
- package/node_modules/cpu-features/deps/cpu_features/src/filesystem.c +62 -0
- package/node_modules/cpu-features/deps/cpu_features/src/hwcaps.c +169 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64__base_implementation.inl +88 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_linux_or_android.c +79 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_macos_or_iphone.c +82 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_windows.c +138 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_arm_linux_or_android.c +212 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_mips_linux_or_android.c +93 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_ppc_linux.c +163 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_riscv_linux.c +111 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_s390x_linux.c +120 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_x86__base_implementation.inl +2055 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_freebsd.c +68 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_linux_or_android.c +58 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_macos.c +57 -0
- package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_windows.c +58 -0
- package/node_modules/cpu-features/deps/cpu_features/src/stack_line_reader.c +132 -0
- package/node_modules/cpu-features/deps/cpu_features/src/string_view.c +192 -0
- package/node_modules/cpu-features/deps/cpu_features/src/utils/list_cpu_features.c +461 -0
- package/node_modules/cpu-features/deps/cpu_features/test/CMakeLists.txt +114 -0
- package/node_modules/cpu-features/deps/cpu_features/test/bit_utils_test.cc +53 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_aarch64_test.cc +396 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_arm_test.cc +384 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_mips_test.cc +176 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_ppc_test.cc +131 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_riscv_test.cc +180 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_s390x_test.cc +82 -0
- package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_x86_test.cc +1729 -0
- package/node_modules/cpu-features/deps/cpu_features/test/filesystem_for_testing.cc +103 -0
- package/node_modules/cpu-features/deps/cpu_features/test/filesystem_for_testing.h +61 -0
- package/node_modules/cpu-features/deps/cpu_features/test/hwcaps_for_testing.cc +52 -0
- package/node_modules/cpu-features/deps/cpu_features/test/hwcaps_for_testing.h +31 -0
- package/node_modules/cpu-features/deps/cpu_features/test/stack_line_reader_test.cc +132 -0
- package/node_modules/cpu-features/deps/cpu_features/test/string_view_test.cc +202 -0
- package/node_modules/cpu-features/lib/index.js +5 -0
- package/node_modules/cpu-features/package.json +40 -0
- package/node_modules/cpu-features/src/binding.cc +151 -0
- package/node_modules/cpu-features/test/test.js +12 -0
- package/package.json +1 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Copyright 2022 Google LLC
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "cpu_features_macros.h"
|
|
16
|
+
|
|
17
|
+
#ifdef CPU_FEATURES_ARCH_RISCV
|
|
18
|
+
#if defined(CPU_FEATURES_OS_LINUX)
|
|
19
|
+
|
|
20
|
+
#include "cpuinfo_riscv.h"
|
|
21
|
+
|
|
22
|
+
// According to
|
|
23
|
+
// https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/riscv/cpus.yaml
|
|
24
|
+
// isa string should match the following regex
|
|
25
|
+
// ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:_[hsxz](?:[a-z])+)*$
|
|
26
|
+
//
|
|
27
|
+
// This means we can test for features in this exact order except for Z
|
|
28
|
+
// extensions.
|
|
29
|
+
|
|
30
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
31
|
+
// Definitions for introspection.
|
|
32
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
33
|
+
#define INTROSPECTION_TABLE \
|
|
34
|
+
LINE(RISCV_RV32I, RV32I, "rv32i", RISCV_HWCAP_32, 0) \
|
|
35
|
+
LINE(RISCV_RV64I, RV64I, "rv64i", RISCV_HWCAP_64, 0) \
|
|
36
|
+
LINE(RISCV_M, M, "m", RISCV_HWCAP_M, 0) \
|
|
37
|
+
LINE(RISCV_A, A, "a", RISCV_HWCAP_A, 0) \
|
|
38
|
+
LINE(RISCV_F, F, "f", RISCV_HWCAP_F, 0) \
|
|
39
|
+
LINE(RISCV_D, D, "d", RISCV_HWCAP_D, 0) \
|
|
40
|
+
LINE(RISCV_Q, Q, "q", RISCV_HWCAP_Q, 0) \
|
|
41
|
+
LINE(RISCV_C, C, "c", RISCV_HWCAP_C, 0) \
|
|
42
|
+
LINE(RISCV_V, V, "v", RISCV_HWCAP_V, 0) \
|
|
43
|
+
LINE(RISCV_Zicsr, Zicsr, "_zicsr", 0, 0) \
|
|
44
|
+
LINE(RISCV_Zifencei, Zifencei, "_zifencei", 0, 0)
|
|
45
|
+
#define INTROSPECTION_PREFIX Riscv
|
|
46
|
+
#define INTROSPECTION_ENUM_PREFIX RISCV
|
|
47
|
+
#include "define_introspection_and_hwcaps.inl"
|
|
48
|
+
|
|
49
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
50
|
+
// Implementation.
|
|
51
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
52
|
+
|
|
53
|
+
#include <stdbool.h>
|
|
54
|
+
#include <stdio.h>
|
|
55
|
+
|
|
56
|
+
#include "internal/filesystem.h"
|
|
57
|
+
#include "internal/stack_line_reader.h"
|
|
58
|
+
|
|
59
|
+
static const RiscvInfo kEmptyRiscvInfo;
|
|
60
|
+
|
|
61
|
+
static void HandleRiscVIsaLine(StringView line, RiscvFeatures* const features) {
|
|
62
|
+
for (size_t i = 0; i < RISCV_LAST_; ++i) {
|
|
63
|
+
StringView flag = str(kCpuInfoFlags[i]);
|
|
64
|
+
int index_of_flag = CpuFeatures_StringView_IndexOf(line, flag);
|
|
65
|
+
bool is_set = index_of_flag != -1;
|
|
66
|
+
kSetters[i](features, is_set);
|
|
67
|
+
if (is_set)
|
|
68
|
+
line = CpuFeatures_StringView_PopFront(line, index_of_flag + flag.size);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static bool HandleRiscVLine(const LineResult result, RiscvInfo* const info) {
|
|
73
|
+
StringView line = result.line;
|
|
74
|
+
StringView key, value;
|
|
75
|
+
if (CpuFeatures_StringView_GetAttributeKeyValue(line, &key, &value)) {
|
|
76
|
+
if (CpuFeatures_StringView_IsEquals(key, str("isa"))) {
|
|
77
|
+
HandleRiscVIsaLine(value, &info->features);
|
|
78
|
+
} else if (CpuFeatures_StringView_IsEquals(key, str("uarch"))) {
|
|
79
|
+
int index = CpuFeatures_StringView_IndexOfChar(value, ',');
|
|
80
|
+
if (index == -1) return true;
|
|
81
|
+
StringView vendor = CpuFeatures_StringView_KeepFront(value, index);
|
|
82
|
+
StringView uarch = CpuFeatures_StringView_PopFront(value, index + 1);
|
|
83
|
+
CpuFeatures_StringView_CopyString(vendor, info->vendor,
|
|
84
|
+
sizeof(info->vendor));
|
|
85
|
+
CpuFeatures_StringView_CopyString(uarch, info->uarch,
|
|
86
|
+
sizeof(info->uarch));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return !result.eof;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static void FillProcCpuInfoData(RiscvInfo* const info) {
|
|
93
|
+
const int fd = CpuFeatures_OpenFile("/proc/cpuinfo");
|
|
94
|
+
if (fd >= 0) {
|
|
95
|
+
StackLineReader reader;
|
|
96
|
+
StackLineReader_Initialize(&reader, fd);
|
|
97
|
+
for (;;) {
|
|
98
|
+
if (!HandleRiscVLine(StackLineReader_NextLine(&reader), info)) break;
|
|
99
|
+
}
|
|
100
|
+
CpuFeatures_CloseFile(fd);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
RiscvInfo GetRiscvInfo(void) {
|
|
105
|
+
RiscvInfo info = kEmptyRiscvInfo;
|
|
106
|
+
FillProcCpuInfoData(&info);
|
|
107
|
+
return info;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
#endif // defined(CPU_FEATURES_OS_LINUX) || defined(CPU_FEATURES_OS_ANDROID)
|
|
111
|
+
#endif // CPU_FEATURES_ARCH_RISCV
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Copyright 2022 IBM.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "cpu_features_macros.h"
|
|
16
|
+
|
|
17
|
+
#ifdef CPU_FEATURES_ARCH_S390X
|
|
18
|
+
#ifdef CPU_FEATURES_OS_LINUX
|
|
19
|
+
|
|
20
|
+
#include "cpuinfo_s390x.h"
|
|
21
|
+
|
|
22
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
23
|
+
// Definitions for introspection.
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
#define INTROSPECTION_TABLE \
|
|
26
|
+
LINE(S390_ESAN3, esan3, "esan3", HWCAP_S390_ESAN3, 0) \
|
|
27
|
+
LINE(S390_ZARCH, zarch, "zarch", HWCAP_S390_ZARCH, 0) \
|
|
28
|
+
LINE(S390_STFLE, stfle, "stfle", HWCAP_S390_STFLE, 0) \
|
|
29
|
+
LINE(S390_MSA, msa, "msa", HWCAP_S390_MSA, 0) \
|
|
30
|
+
LINE(S390_LDISP, ldisp, "ldisp", HWCAP_S390_LDISP, 0) \
|
|
31
|
+
LINE(S390_EIMM, eimm, "eimm", HWCAP_S390_EIMM, 0) \
|
|
32
|
+
LINE(S390_DFP, dfp, "dfp", HWCAP_S390_DFP, 0) \
|
|
33
|
+
LINE(S390_EDAT, edat, "edat", HWCAP_S390_HPAGE, 0) \
|
|
34
|
+
LINE(S390_ETF3EH, etf3eh, "etf3eh", HWCAP_S390_ETF3EH, 0) \
|
|
35
|
+
LINE(S390_HIGHGPRS, highgprs, "highgprs", HWCAP_S390_HIGH_GPRS, 0) \
|
|
36
|
+
LINE(S390_TE, te, "te", HWCAP_S390_TE, 0) \
|
|
37
|
+
LINE(S390_VX, vx, "vx", HWCAP_S390_VXRS, 0) \
|
|
38
|
+
LINE(S390_VXD, vxd, "vxd", HWCAP_S390_VXRS_BCD, 0) \
|
|
39
|
+
LINE(S390_VXE, vxe, "vxe", HWCAP_S390_VXRS_EXT, 0) \
|
|
40
|
+
LINE(S390_GS, gs, "gs", HWCAP_S390_GS, 0) \
|
|
41
|
+
LINE(S390_VXE2, vxe2, "vxe2", HWCAP_S390_VXRS_EXT2, 0) \
|
|
42
|
+
LINE(S390_VXP, vxp, "vxp", HWCAP_S390_VXRS_PDE, 0) \
|
|
43
|
+
LINE(S390_SORT, sort, "sort", HWCAP_S390_SORT, 0) \
|
|
44
|
+
LINE(S390_DFLT, dflt, "dflt", HWCAP_S390_DFLT, 0) \
|
|
45
|
+
LINE(S390_VXP2, vxp2, "vxp2", HWCAP_S390_VXRS_PDE2, 0) \
|
|
46
|
+
LINE(S390_NNPA, nnpa, "nnpa", HWCAP_S390_NNPA, 0) \
|
|
47
|
+
LINE(S390_PCIMIO, pcimio, "pcimio", HWCAP_S390_PCI_MIO, 0) \
|
|
48
|
+
LINE(S390_SIE, sie, "sie", HWCAP_S390_SIE, 0)
|
|
49
|
+
#define INTROSPECTION_PREFIX S390X
|
|
50
|
+
#define INTROSPECTION_ENUM_PREFIX S390X
|
|
51
|
+
#include "define_introspection_and_hwcaps.inl"
|
|
52
|
+
|
|
53
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
54
|
+
// Implementation.
|
|
55
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
56
|
+
|
|
57
|
+
#include <stdbool.h>
|
|
58
|
+
|
|
59
|
+
#include "internal/bit_utils.h"
|
|
60
|
+
#include "internal/filesystem.h"
|
|
61
|
+
#include "internal/hwcaps.h"
|
|
62
|
+
#include "internal/stack_line_reader.h"
|
|
63
|
+
#include "internal/string_view.h"
|
|
64
|
+
|
|
65
|
+
static bool HandleS390XLine(const LineResult result,
|
|
66
|
+
S390XPlatformStrings* const strings) {
|
|
67
|
+
StringView line = result.line;
|
|
68
|
+
StringView key, value;
|
|
69
|
+
if (CpuFeatures_StringView_GetAttributeKeyValue(line, &key, &value)) {
|
|
70
|
+
if (CpuFeatures_StringView_IsEquals(key, str("# processors"))) {
|
|
71
|
+
strings->num_processors = CpuFeatures_StringView_ParsePositiveNumber(value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return !result.eof;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static void FillProcCpuInfoData(S390XPlatformStrings* const strings) {
|
|
78
|
+
const int fd = CpuFeatures_OpenFile("/proc/cpuinfo");
|
|
79
|
+
if (fd >= 0) {
|
|
80
|
+
StackLineReader reader;
|
|
81
|
+
StackLineReader_Initialize(&reader, fd);
|
|
82
|
+
for (;;) {
|
|
83
|
+
if (!HandleS390XLine(StackLineReader_NextLine(&reader), strings)) {
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
CpuFeatures_CloseFile(fd);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static const S390XInfo kEmptyS390XInfo;
|
|
92
|
+
|
|
93
|
+
S390XInfo GetS390XInfo(void) {
|
|
94
|
+
S390XInfo info = kEmptyS390XInfo;
|
|
95
|
+
const HardwareCapabilities hwcaps = CpuFeatures_GetHardwareCapabilities();
|
|
96
|
+
for (size_t i = 0; i < S390X_LAST_; ++i) {
|
|
97
|
+
if (CpuFeatures_IsHwCapsSet(kHardwareCapabilities[i], hwcaps)) {
|
|
98
|
+
kSetters[i](&info.features, true);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return info;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static const S390XPlatformStrings kEmptyS390XPlatformStrings;
|
|
105
|
+
|
|
106
|
+
S390XPlatformStrings GetS390XPlatformStrings(void) {
|
|
107
|
+
S390XPlatformStrings strings = kEmptyS390XPlatformStrings;
|
|
108
|
+
const char* platform = CpuFeatures_GetPlatformPointer();
|
|
109
|
+
|
|
110
|
+
FillProcCpuInfoData(&strings);
|
|
111
|
+
|
|
112
|
+
if (platform != NULL)
|
|
113
|
+
CpuFeatures_StringView_CopyString(str(platform), strings.type.platform,
|
|
114
|
+
sizeof(strings.type.platform));
|
|
115
|
+
|
|
116
|
+
return strings;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#endif // CPU_FEATURES_OS_LINUX
|
|
120
|
+
#endif // CPU_FEATURES_ARCH_S390X
|