From 966c3b04a297a41a9ce35ee94513f360a06539cb Mon Sep 17 00:00:00 2001 From: yeqinglong Date: Fri, 11 Aug 2023 14:09:33 +0800 Subject: [PATCH] add sw_64 support --- .../CIM_ProcessorAllocationSettingData.mof | 1 + mak/SDKMakefile | 15 +++ mak/platform_LINUX_SW_64_GNU.mak | 36 ++++++ src/Pegasus/Common/Config.h | 2 + src/Pegasus/Common/Platform_LINUX_SW_64_GNU.h | 108 ++++++++++++++++++ .../samples/mak/platform_LINUX_SW_64_GNU.mak | 33 ++++++ 6 files changed, 195 insertions(+) create mode 100644 mak/platform_LINUX_SW_64_GNU.mak create mode 100644 src/Pegasus/Common/Platform_LINUX_SW_64_GNU.h create mode 100644 src/SDK/samples/mak/platform_LINUX_SW_64_GNU.mak diff --git a/Schemas/CIM236/DMTF/Core/CIM_ProcessorAllocationSettingData.mof b/Schemas/CIM236/DMTF/Core/CIM_ProcessorAllocationSettingData.mof index c956b63..3891d6d 100644 --- a/Schemas/CIM236/DMTF/Core/CIM_ProcessorAllocationSettingData.mof +++ b/Schemas/CIM236/DMTF/Core/CIM_ProcessorAllocationSettingData.mof @@ -132,6 +132,7 @@ class CIM_ProcessorAllocationSettingData : CIM_ResourceAllocationSettingData { "IBM z/Architecture 2 (ARCHLVL 3, 64-bit)", "PA-RISC 1.0 (64-bit)", "PA-RISC 2.0 (64-bit)", "ARM A32 (AArch32, 32-bit)", "ARM A64 (AArch64, 64-bit)", + "SW_64 sw_64 (Sw_64, 64-bit)", "MIPS I (32-bit)", "MIPS II (32-bit)", "MIPS III (32-bit)", "MIPS IV (32-bit)", "MIPS V (32-bit)", "MIPS32 (32-bit)", "MIPS64 (64-bit)", diff --git a/mak/SDKMakefile b/mak/SDKMakefile index 4d141f6..fd13abf 100644 --- a/mak/SDKMakefile +++ b/mak/SDKMakefile @@ -68,6 +68,7 @@ endif ifeq ($(OS),linux) PACKAGED_PLATFORM_FILES = \ LINUX_AARCH64_GNU \ + LINUX_SW_64_GNU \ LINUX_IA64_GNU \ LINUX_IX86_GNU \ LINUX_IX86_CLANG \ @@ -445,6 +446,13 @@ ifeq ($(RUNTIME_PLATFORM_TEST_NEEDED), true) @$(ECHO-E) " endif" \ >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) " ifeq (\044(shell uname -i),sw_64)" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) " PEGASUS_PLATFORM = LINUX_SW_64_GNU" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) " endif" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) " ifeq (\044(shell uname -i),ia64)" \ >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak @$(ECHO-E) " PEGASUS_PLATFORM = LINUX_IA64_GNU" \ @@ -531,6 +539,13 @@ ifeq ($(RUNTIME_PLATFORM_TEST_NEEDED), true) @$(ECHO-E) "endif" \ >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) "ifeq (\044(PEGASUS_PLATFORM),LINUX_SW_64_GNU)" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) " PEGASUS_ARCH_LIB = lib" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) "endif" \ + >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak + @$(ECHO-E) "ifeq (\044(PEGASUS_PLATFORM),LINUX_IA64_GNU)" \ >> $(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/mak/config.mak @$(ECHO-E) " PEGASUS_ARCH_LIB = lib" \ diff --git a/mak/platform_LINUX_SW_64_GNU.mak b/mak/platform_LINUX_SW_64_GNU.mak new file mode 100644 index 0000000..30dfd3b --- /dev/null +++ b/mak/platform_LINUX_SW_64_GNU.mak @@ -0,0 +1,36 @@ +#//%LICENSE//////////////////////////////////////////////////////////////// +#// +#// Licensed to The Open Group (TOG) under one or more contributor license +#// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with +#// this work for additional information regarding copyright ownership. +#// Each contributor licenses this file to you under the OpenPegasus Open +#// Source License; you may not use this file except in compliance with the +#// License. +#// +#// Permission is hereby granted, free of charge, to any person obtaining a +#// copy of this software and associated documentation files (the "Software"), +#// to deal in the Software without restriction, including without limitation +#// the rights to use, copy, modify, merge, publish, distribute, sublicense, +#// and/or sell copies of the Software, and to permit persons to whom the +#// Software is furnished to do so, subject to the following conditions: +#// +#// The above copyright notice and this permission notice shall be included +#// in all copies or substantial portions of the Software. +#// +#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +#// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +#// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +#// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +#// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +#// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +#// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#// +#////////////////////////////////////////////////////////////////////////// +# Platform Configuration for Linux on SW_64 +# If you have generic Linux config options, please place them in config-linux.mak + +include $(ROOT)/mak/config-linux.mak + +ARCHITECTURE = SW_64 +CXX_MACHINE_OPTIONS = +LINK_MACHINE_OPTIONS = diff --git a/src/Pegasus/Common/Config.h b/src/Pegasus/Common/Config.h index afe1224..0b2db35 100644 --- a/src/Pegasus/Common/Config.h +++ b/src/Pegasus/Common/Config.h @@ -102,6 +102,8 @@ # include #elif defined (PEGASUS_PLATFORM_LINUX_X86_64_CLANG) # include +#elif defined (PEGASUS_PLATFORM_LINUX_SW_64_GNU) +# include #elif defined (PEGASUS_PLATFORM_LINUX_IX86_CLANG) # include #elif defined (PEGASUS_PLATFORM_LINUX_SH4_GNU) diff --git a/src/Pegasus/Common/Platform_LINUX_SW_64_GNU.h b/src/Pegasus/Common/Platform_LINUX_SW_64_GNU.h new file mode 100644 index 0000000..ffccae1 --- /dev/null +++ b/src/Pegasus/Common/Platform_LINUX_SW_64_GNU.h @@ -0,0 +1,108 @@ +//%LICENSE//////////////////////////////////////////////////////////////// +// +// Licensed to The Open Group (TOG) under one or more contributor license +// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with +// this work for additional information regarding copyright ownership. +// Each contributor licenses this file to you under the OpenPegasus Open +// Source License; you may not use this file except in compliance with the +// License. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +////////////////////////////////////////////////////////////////////////// +// +//%///////////////////////////////////////////////////////////////////////////// + +/***************************************************************************** + The platform configuration files in pegasus/src/Pegasus/Common/Platform_*.h + are intended to normalize platform/compiler differences so that Pegasus code + can be written to work on all platforms without requiring platform ifdefs. + Since these files are part of the Pegasus SDK, their contents should be + the minimum that achieves the stated purpose. + + Examples of differences that are normalized here are support for C++ + namespaces, 64-bit integer type, support for C++ template specialization. + + Examples of things that are not appropriate in these files are the enablement + of Pegasus features for a specific platform and other build configuration. +******************************************************************************/ + +#ifndef Pegasus_Platform_LINUX_SW_64_GNU_h +#define Pegasus_Platform_LINUX_SW_64_GNU_h + +#include + +#define PEGASUS_OS_TYPE_UNIX + +#ifndef PEGASUS_PLATFORM_LINUX_GENERIC_GNU +#define PEGASUS_PLATFORM_LINUX_GENERIC_GNU +#endif + +#define PEGASUS_OS_LINUX + +#define PEGASUS_POINTER_64BIT + +#define PEGASUS_COMPILER_GNU + +#define PEGASUS_UINT64 unsigned long long + +#define PEGASUS_SINT64 long long + +#define PEGASUS_HAVE_NAMESPACES + +#define PEGASUS_HAVE_FOR_SCOPE + +#define PEGASUS_HAVE_TEMPLATE_SPECIALIZATION + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#ifndef _REENTRANT +#define _REENTRANT +#endif +#define _THREAD_SAFE +#include +#include +#include +#include /* For MAXHOSTNAMELEN */ +#include /* _POSIX_HOST_NAME_MAX */ + +#if (__GNUC__ >= 4) +# define PEGASUS_EXPORT __attribute__ ((visibility("default"))) +# define PEGASUS_IMPORT __attribute__ ((visibility("default"))) +# define PEGASUS_HIDDEN_LINKAGE __attribute__((visibility("hidden"))) +#endif + +#define PEGASUS_HAVE_PTHREADS + +#define PEGASUS_HAVE_NANOSLEEP + +#define PEGASUS_HAS_SIGNALS + +#define PEGASUS_INTEGERS_BOUNDARY_ALIGNED + +/* getifaddrs() avilable in gcc version >= 3.4 */ +#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)) +# define PEGASUS_HAS_GETIFADDRS +#endif + +/* use POSIX read-write locks on this platform */ +#define PEGASUS_USE_POSIX_RWLOCK + +#endif /* Pegasus_Platform_LINUX_SW_64_GNU_h */ diff --git a/src/SDK/samples/mak/platform_LINUX_SW_64_GNU.mak b/src/SDK/samples/mak/platform_LINUX_SW_64_GNU.mak new file mode 100644 index 0000000..eee4887 --- /dev/null +++ b/src/SDK/samples/mak/platform_LINUX_SW_64_GNU.mak @@ -0,0 +1,33 @@ +#//%LICENSE//////////////////////////////////////////////////////////////// +#// +#// Licensed to The Open Group (TOG) under one or more contributor license +#// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with +#// this work for additional information regarding copyright ownership. +#// Each contributor licenses this file to you under the OpenPegasus Open +#// Source License; you may not use this file except in compliance with the +#// License. +#// +#// Permission is hereby granted, free of charge, to any person obtaining a +#// copy of this software and associated documentation files (the "Software"), +#// to deal in the Software without restriction, including without limitation +#// the rights to use, copy, modify, merge, publish, distribute, sublicense, +#// and/or sell copies of the Software, and to permit persons to whom the +#// Software is furnished to do so, subject to the following conditions: +#// +#// The above copyright notice and this permission notice shall be included +#// in all copies or substantial portions of the Software. +#// +#// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +#// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +#// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +#// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +#// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +#// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +#// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#// +#////////////////////////////////////////////////////////////////////////// + +CXX_MACHINE_OPTIONS = +LINK_MACHINE_OPTIONS = + +include $(ROOT)/mak/platform_LINUX_GNU.mak -- 2.33.0