/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ #include "kwsysPrivate.h" #include KWSYS_HEADER(SystemInformation.hxx) // Work-around CMake dependency scanning limitation. This must // duplicate the above list of headers. #if 0 #include "SystemInformation.hxx.in" #endif #include #if defined(KWSYS_USE_LONG_LONG) #if defined(KWSYS_IOS_HAS_OSTREAM_LONG_LONG) #define iostreamLongLong(x) (x) #else #define iostreamLongLong(x) ((long)x) #endif #elif defined(KWSYS_USE___INT64) #if defined(KWSYS_IOS_HAS_OSTREAM___INT64) #define iostreamLongLong(x) (x) #else #define iostreamLongLong(x) ((long)x) #endif #else #error "No Long Long" #endif #define printMethod(info, m) std::cout << #m << ": " << info.m() << "\n" #define printMethod2(info, m, unit) \ std::cout << #m << ": " << info.m() << " " << unit << "\n" #define printMethod3(info, m, unit) \ std::cout << #m << ": " << iostreamLongLong(info.m) << " " << unit << "\n" int testSystemInformation(int, char* []) { std::cout << "CTEST_FULL_OUTPUT\n"; // avoid truncation kwsys::SystemInformation info; info.RunCPUCheck(); info.RunOSCheck(); info.RunMemoryCheck(); printMethod(info, GetOSName); printMethod(info, GetOSIsLinux); printMethod(info, GetOSIsApple); printMethod(info, GetOSIsWindows); printMethod(info, GetHostname); printMethod(info, GetFullyQualifiedDomainName); printMethod(info, GetOSRelease); printMethod(info, GetOSVersion); printMethod(info, GetOSPlatform); printMethod(info, GetVendorString); printMethod(info, GetVendorID); printMethod(info, GetTypeID); printMethod(info, GetFamilyID); printMethod(info, GetModelID); printMethod(info, GetExtendedProcessorName); printMethod(info, GetSteppingCode); printMethod(info, GetProcessorSerialNumber); printMethod2(info, GetProcessorCacheSize, "KB"); printMethod(info, GetLogicalProcessorsPerPhysical); printMethod2(info, GetProcessorClockFrequency, "MHz"); printMethod(info, Is64Bits); printMethod(info, GetNumberOfLogicalCPU); printMethod(info, GetNumberOfPhysicalCPU); printMethod(info, DoesCPUSupportCPUID); printMethod(info, GetProcessorAPICID); printMethod2(info, GetTotalVirtualMemory, "MB"); printMethod2(info, GetAvailableVirtualMemory, "MB"); printMethod2(info, GetTotalPhysicalMemory, "MB"); printMethod2(info, GetAvailablePhysicalMemory, "MB"); printMethod3(info, GetHostMemoryTotal(), "KiB"); printMethod3(info, GetHostMemoryAvailable("KWSHL"), "KiB"); printMethod3(info, GetProcMemoryAvailable("KWSHL", "KWSPL"), "KiB"); printMethod3(info, GetHostMemoryUsed(), "KiB"); printMethod3(info, GetProcMemoryUsed(), "KiB"); printMethod(info, GetLoadAverage); for (long int i = 0; i <= 31; i++) { if (info.DoesCPUSupportFeature(static_cast(1) << i)) { std::cout << "CPU feature " << i << "\n"; } } /* test stack trace */ std::cout << "Program Stack:" << std::endl << kwsys::SystemInformation::GetProgramStack(0, 0) << std::endl << std::endl; /* test segv handler info.SetStackTraceOnError(1); double *d = (double*)100; *d=0; */ /* test abort handler info.SetStackTraceOnError(1); abort(); */ return 0; }