// SPDX-FileCopyrightText: 2017 Google Inc. // SPDX-License-Identifier: Apache-2.0 #include "internal/filesystem.h" #include #include #include #include #include #if defined(CPU_FEATURES_MOCK_FILESYSTEM) // Implementation will be provided by test/filesystem_for_testing.cc. #elif defined(_MSC_VER) #include int CpuFeatures_OpenFile(const char* filename) { int fd = -1; _sopen_s(&fd, filename, _O_RDONLY, _SH_DENYWR, _S_IREAD); return fd; } void CpuFeatures_CloseFile(int file_descriptor) { _close(file_descriptor); } int CpuFeatures_ReadFile(int file_descriptor, void* buffer, size_t buffer_size) { return _read(file_descriptor, buffer, (unsigned int)buffer_size); } #else #include int CpuFeatures_OpenFile(const char* filename) { int result; do { result = open(filename, O_RDONLY); } while (result == -1L && errno == EINTR); return result; } void CpuFeatures_CloseFile(int file_descriptor) { close(file_descriptor); } int CpuFeatures_ReadFile(int file_descriptor, void* buffer, size_t buffer_size) { int result; do { result = read(file_descriptor, buffer, buffer_size); } while (result == -1L && errno == EINTR); return result; } #endif