1/**
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef LIBPANDABASE_OS_NATIVE_STACK_H
17#define LIBPANDABASE_OS_NATIVE_STACK_H
18
19#include <set>
20#include <csignal>
21#include <string>
22
23#if defined(PANDA_TARGET_UNIX)
24#include "platforms/unix/libpandabase/native_stack.h"
25#endif  // PANDA_TARGET_UNIX
26#include "os/thread.h"
27
28namespace panda::os::native_stack {
29
30#if defined(PANDA_TARGET_UNIX)
31const auto g_PandaThreadSigmask = pthread_sigmask;  // NOLINT(readability-identifier-naming)
32const auto ReadOsFile = panda::os::unix::native_stack::ReadOsFile;      // NOLINT(readability-identifier-naming)
33const auto WriterOsFile = panda::os::unix::native_stack::WriterOsFile;  // NOLINT(readability-identifier-naming)
34#else
35using FUNC_UNWINDSTACK = bool (*)(pid_t, std::ostream &, int);
36bool ReadOsFile(const std::string &file_name, std::string *result);
37bool WriterOsFile(const void *buffer, size_t count, int fd);
38#endif  // PANDA_TARGET_UNIX
39
40}  // namespace panda::os::native_stack
41
42#endif  // LIBPANDABASE_OS_NATIVE_STACK_H
43