1800b99b8Sopenharmony_ci/*
2800b99b8Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3800b99b8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4800b99b8Sopenharmony_ci * you may not use this file except in compliance with the License.
5800b99b8Sopenharmony_ci * You may obtain a copy of the License at
6800b99b8Sopenharmony_ci *
7800b99b8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8800b99b8Sopenharmony_ci *
9800b99b8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10800b99b8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11800b99b8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12800b99b8Sopenharmony_ci * See the License for the specific language governing permissions and
13800b99b8Sopenharmony_ci * limitations under the License.
14800b99b8Sopenharmony_ci */
15800b99b8Sopenharmony_ci
16800b99b8Sopenharmony_ci#include <csignal>
17800b99b8Sopenharmony_ci#include <cstdint>
18800b99b8Sopenharmony_ci#include <unistd.h>
19800b99b8Sopenharmony_ci#include "dfx_log.h"
20800b99b8Sopenharmony_ci#include "fault_logger_daemon.h"
21800b99b8Sopenharmony_ci#include "faultloggerd_client.h"
22800b99b8Sopenharmony_ci#include "securec.h"
23800b99b8Sopenharmony_ci
24800b99b8Sopenharmony_ci#if defined(DEBUG_CRASH_LOCAL_HANDLER)
25800b99b8Sopenharmony_ci#include "dfx_signal_local_handler.h"
26800b99b8Sopenharmony_ci#include "dfx_util.h"
27800b99b8Sopenharmony_ci
28800b99b8Sopenharmony_cistatic int DoGetCrashFd(void)
29800b99b8Sopenharmony_ci{
30800b99b8Sopenharmony_ci    OHOS::HiviewDFX::FaultLoggerDaemon daemon;
31800b99b8Sopenharmony_ci    int32_t type = (int32_t)FaultLoggerType::CPP_CRASH;
32800b99b8Sopenharmony_ci    int32_t pid = getpid();
33800b99b8Sopenharmony_ci    uint64_t time = OHOS::HiviewDFX::GetTimeMilliSeconds();
34800b99b8Sopenharmony_ci    int fd = daemon.CreateFileForRequest(type, pid, gettid(), time);
35800b99b8Sopenharmony_ci    return fd;
36800b99b8Sopenharmony_ci}
37800b99b8Sopenharmony_ci#endif
38800b99b8Sopenharmony_ci
39800b99b8Sopenharmony_ciint main(int argc, char *argv[])
40800b99b8Sopenharmony_ci{
41800b99b8Sopenharmony_ci#if defined(DEBUG_CRASH_LOCAL_HANDLER)
42800b99b8Sopenharmony_ci    DFX_GetCrashFdFunc(DoGetCrashFd);
43800b99b8Sopenharmony_ci    DFX_InstallLocalSignalHandler();
44800b99b8Sopenharmony_ci#endif
45800b99b8Sopenharmony_ci    OHOS::HiviewDFX::FaultLoggerDaemon daemon;
46800b99b8Sopenharmony_ci    daemon.StartServer();
47800b99b8Sopenharmony_ci    return 0;
48800b99b8Sopenharmony_ci}
49