| /* |
| * Copyright (c) 2019-2020 Arm Limited. All rights reserved. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed under the Apache License, Version 2.0 (the License); you may |
| * not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #pragma once |
| |
| #include <queue> |
| #include <stdlib.h> |
| #include <string> |
| |
| namespace InferenceProcess { |
| struct DataPtr { |
| void *data; |
| size_t size; |
| |
| DataPtr(void *data = nullptr, size_t size = 0); |
| }; |
| |
| struct InferenceJob { |
| std::string name; |
| DataPtr networkModel; |
| DataPtr input; |
| DataPtr output; |
| DataPtr expectedOutput; |
| size_t numBytesToPrint; |
| |
| InferenceJob(); |
| InferenceJob(const std::string &name, |
| const DataPtr &networkModel, |
| const DataPtr &input, |
| const DataPtr &output, |
| const DataPtr &expectedOutput, |
| size_t numBytesToPrint); |
| }; |
| |
| class InferenceProcess { |
| public: |
| InferenceProcess(); |
| |
| bool push(const InferenceJob &job); |
| bool runJob(InferenceJob &job); |
| bool run(bool exitOnEmpty = true); |
| |
| private: |
| volatile uint32_t lock; |
| std::queue<InferenceJob> inferenceJobQueue; |
| |
| void getLock(); |
| void freeLock(); |
| }; |
| } // namespace InferenceProcess |