1 // SPDX-License-Identifier: Apache-2.0
3 * Copyright (C) 2022 Jiho Chu <jiho.chu@samsung.com>
7 * @see https://github.com/nnstreamer/nntrainer
8 * @author Jiho Chu <jiho.chu@samsung.com>
9 * @bug No known bugs except for NYI items
10 * @brief MemoryData class
14 #ifndef __MEMORY_DATA_H__
15 #define __MEMORY_DATA_H__
21 using MemoryDataValidateCallback = std::function<void(unsigned int)>;
24 * @brief MemoryData Class
29 * @brief Constructor of Memory Data
30 * @param[in] addr Memory data
32 explicit MemoryData(void *addr) :
36 validate_cb([](unsigned int) {}),
37 invalidate_cb([](unsigned int) {}) {}
40 * @brief Constructor of Memory Data
41 * @param[in] mem_id validate callback.
42 * @param[in] v_cb validate callback.
43 * @param[in] i_cb invalidate callback.
45 explicit MemoryData(unsigned int mem_id, MemoryDataValidateCallback v_cb,
46 MemoryDataValidateCallback i_cb) :
51 invalidate_cb(i_cb) {}
54 * @brief Deleted constructor of Memory Data
56 explicit MemoryData() = delete;
59 * @brief Constructor of MemoryData
61 explicit MemoryData(MemoryDataValidateCallback v_cb,
62 MemoryDataValidateCallback i_cb) = delete;
64 * @brief Constructor of MemoryData
66 explicit MemoryData(void *addr, MemoryDataValidateCallback v_cb,
67 MemoryDataValidateCallback i_cb) = delete;
70 * @brief Destructor of Memory Data
72 virtual ~MemoryData() = default;
77 void setAddr(void *addr) { address = addr; }
82 template <typename T = float> T *getAddr() const {
83 return static_cast<T *>(address);
87 * @brief Validate memory data
96 * @brief Invalidate memory data
107 void setValid(bool v) { valid = v; }
113 MemoryDataValidateCallback validate_cb;
114 MemoryDataValidateCallback invalidate_cb;
117 } // namespace nntrainer
119 #endif /* __MEMORY_DATA_H__ */