/** * Copyright 2020 Huawei Technologies Co., Ltd * * 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 * * http://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. */ #ifndef GE_COMMON_DEBUG_MEMORY_DUMPER_H_ #define GE_COMMON_DEBUG_MEMORY_DUMPER_H_ #include #include "framework/common/types.h" #include "mmpa/mmpa_api.h" #include "framework/common/ge_inner_error_codes.h" namespace ge { // MemoryDumper:dump memory data for internal test // Output in one time: using DumpToFile // Open file at one time and output multiple times: create MemoryDumper object first, and using Open/Dump/Close class MemoryDumper { public: MemoryDumper(); ~MemoryDumper(); // Assignment/copy is not allowed to avoid repeated release MemoryDumper &operator=(const MemoryDumper &dumper) = delete; MemoryDumper(const MemoryDumper &dumper) = delete; /** @ingroup domi_common * @brief write memory data to file, if the filename is not exist, create it first * @param [in] filename the output file path, specific to filename * @param [in] data the memory data * @param [in] len length of data * @return SUCCESS output success * @return FAILED output failed * @author */ static Status DumpToFile(const char *filename, void *data, int64_t len); /** @ingroup domi_common * @brief open the dump file * @param [in] filename the output file path, specific to filename * @return SUCCESS open file success * @return FAILED open file failed * @author */ Status Open(const char *filename); /** @ingroup domi_common * @brief write the Memory data to file * @param [in] data the memory data * @param [in] len length of data * @return SUCCESS success * @return FAILED failed * @author */ Status Dump(void *data, uint32_t len) const; /** @ingroup domi_common * @brief close the Dump file * @return SUCCESS success * @return FAILED failed * @author */ void Close() noexcept; private: /** @ingroup domi_common * @brief open the dump file * @param [in] filename the output file path, specific to filename * @return int the file handle after file open, -1 means open file failed * @author */ static int OpenFile(const char *filename); int fd_; }; } // namespace ge #endif // GE_COMMON_DEBUG_MEMORY_DUMPER_H_