| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ML_BENCHMARK_SHARED_LIBRARY_BENCHMARK_FUNCTIONS_H_ |
| #define ML_BENCHMARK_SHARED_LIBRARY_BENCHMARK_FUNCTIONS_H_ |
| |
| #include <base/files/file_path.h> |
| #include <base/macros.h> |
| #include <base/scoped_native_library.h> |
| |
| #include "ml_benchmark/benchmark_functions.h" |
| |
| namespace ml_benchmark { |
| |
| typedef int32_t (*benchmark_function)(const void* config_bytes, |
| int32_t config_bytes_size, |
| void** results_bytes, |
| int32_t* results_bytes_size); |
| |
| typedef void (*free_benchmark_results_function)(void* results_bytes); |
| |
| class SharedLibraryBenchmarkFunctions : public BenchmarkFunctions { |
| public: |
| explicit SharedLibraryBenchmarkFunctions(const base::FilePath& path); |
| SharedLibraryBenchmarkFunctions(const SharedLibraryBenchmarkFunctions&) = |
| delete; |
| SharedLibraryBenchmarkFunctions& operator=( |
| const SharedLibraryBenchmarkFunctions&) = delete; |
| |
| bool valid() const { return valid_; } |
| |
| int32_t BenchmarkFunction(const void* config_bytes, |
| int32_t config_bytes_size, |
| void** results_bytes, |
| int32_t* results_bytes_size) final; |
| void FreeBenchmarkResults(void* results_bytes) final; |
| |
| private: |
| base::ScopedNativeLibrary library_; |
| benchmark_function benchmark_function_; |
| free_benchmark_results_function free_benchmark_results_function_; |
| bool valid_ = false; |
| }; |
| |
| } // namespace ml_benchmark |
| |
| #endif // ML_BENCHMARK_SHARED_LIBRARY_BENCHMARK_FUNCTIONS_H_ |