1/* 2 * Copyright (c) 2021-2023 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#ifndef DFX_DEFINE_H 16#define DFX_DEFINE_H 17 18#include <inttypes.h> 19#include <stdbool.h> 20 21#define SIGDUMP 35 22#define SIGLOCAL_DUMP 38 23#define SIGLEAK_STACK 42 24#define SIGLEAK_STACK_FDSAN 1 // When sig = 42, use si_code = 1 mark the event as fdsan 25#define SIGLEAK_STACK_JEMALLOC 2 // When sig = 42, use si_code = 2 mark the event as jemalloc 26#define SIGLEAK_STACK_BADFD 0xbadfd // When sig = 42, use si_code = 0xbadfd mark the event as badfd 27#define PROCESSDUMP_TIMEOUT 8 28#define DUMPCATCHER_TIMEOUT 15 29 30#ifndef NAME_MAX 31#define NAME_MAX 255 32#endif 33#ifndef PATH_MAX 34#define PATH_MAX 1024 35#endif 36#define NAME_BUF_LEN 128 37#define PATH_LEN 512 38#define LINE_BUF_SIZE 1024 39#define MAX_FATAL_MSG_SIZE 1024 40#define MAX_PIPE_SIZE (1024 * 1024) 41#define MAX_FUNC_NAME_LEN 256 42#define MAX_APP_RUNNING_UNIQUE_ID_LEN 64 43static const int NUMBER_ONE_THOUSAND = 1000; 44static const int NUMBER_ONE_MILLION = 1000000; 45 46static const int PTRACE_ATTATCH_KEY_THREAD_TIMEOUT = 1000; 47static const int PTRACE_ATTATCH_OTHER_THREAD_TIMEOUT = 50; 48 49static const int INVALID_FD = -1; 50static const int DUMP_TYPE_REMOTE = -1; 51static const int DUMP_TYPE_NATIVE = -1; 52static const int DUMP_TYPE_MIX = -2; 53static const int DUMP_TYPE_KERNEL = -3; 54static const int DUMP_TYPE_LOCAL = -4; 55 56static const int DEFAULT_MAX_FRAME_NUM = 256; 57static const int DEFAULT_MAX_LOCAL_FRAME_NUM = 32; 58static const int PIPE_NUM_SZ = 2; 59static const int PIPE_READ = 0; 60static const int PIPE_WRITE = 1; 61static const int SOCKET_BUFFER_SIZE = 256; 62static const char FAULTLOGGER_DAEMON_RESP[] = "RESP:COMPLETE"; 63static const char FAULTLOGGERD_SOCK_BASE_PATH[] = "/dev/unix/socket/"; 64static const char SERVER_SOCKET_NAME[] = "faultloggerd.server"; 65static const char SERVER_CRASH_SOCKET_NAME[] = "faultloggerd.crash.server"; 66static const char SERVER_SDKDUMP_SOCKET_NAME[] = "faultloggerd.sdkdump.server"; 67 68static const char PROC_SELF_STATUS_PATH[] = "/proc/self/status"; 69static const char PROC_SELF_TASK_PATH[] = "/proc/self/task"; 70static const char PROC_SELF_CMDLINE_PATH[] = "/proc/self/cmdline"; 71static const char PROC_SELF_COMM_PATH[] = "/proc/self/comm"; 72static const char PROC_SELF_MAPS_PATH[] = "/proc/self/maps"; 73static const char PROC_SELF_EXE_PATH[] = "/proc/self/exe"; 74 75#ifndef LIKELY 76#define LIKELY(exp) (__builtin_expect(!!(exp), true)) 77#endif 78#ifndef UNLIKELY 79#define UNLIKELY(exp) (__builtin_expect(!!(exp), false)) 80#endif 81 82#define AT_SYMBOL_DEFAULT __attribute__ ((visibility("default"))) 83#define AT_SYMBOL_HIDDEN __attribute__ ((visibility("hidden"))) 84#define AT_ALWAYS_INLINE __attribute__((always_inline)) 85#define AT_WARN_UNUSED __attribute__((warn_unused_result)) 86#define AT_UNUSED __attribute__((unused)) 87#define MAYBE_UNUSED [[maybe_unused]] 88#define NO_SANITIZE __attribute__((no_sanitize("address"), no_sanitize("hwaddress"))) 89 90#ifndef FALLTHROUGH_INTENDED 91#define FALLTHROUGH_INTENDED [[clang::fallthrough]] // NOLINT 92#endif 93 94#define OHOS_TEMP_FAILURE_RETRY(exp) \ 95 ({ \ 96 long int _rc; \ 97 do { \ 98 _rc = (long int)(exp); \ 99 } while ((_rc == -1) && (errno == EINTR)); \ 100 _rc; \ 101 }) 102 103#if defined(__LP64__) 104#define PRIX64_ADDR "#018" PRIx64 105#else 106#define PRIX64_ADDR "#010" PRIx64 107#endif 108 109#endif 110