1 /*
2 * Copyright (c) 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 #ifdef FFRT_SEND_EVENT
16 #include "sysevent.h"
17 #include "hisysevent.h"
18 #include "tm/task_base.h"
19 #include "dfx/log/ffrt_log_api.h"
20
21 namespace ffrt {
TaskTimeoutReport(std::stringstream & ss,const std::string & processNameStr,const std::string & senarioName)22 void TaskTimeoutReport(std::stringstream& ss, const std::string& processNameStr, const std::string& senarioName)
23 {
24 std::string msg = ss.str();
25 std::string eventName = "TASK_TIMEOUT";
26 time_t cur_time = time(nullptr);
27 std::string sendMsg = std::string((ctime(&cur_time) == nullptr) ? "" : ctime(&cur_time)) + "\n" + msg + "\n";
28 HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::FFRT, eventName,
29 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, "SENARIO", senarioName,
30 "PROCESS_NAME", processNameStr, "MSG", sendMsg);
31 }
32
WorkerEscapeReport(const std::string & processName,int qos,size_t totalNum)33 void WorkerEscapeReport(const std::string& processName, int qos, size_t totalNum)
34 {
35 time_t cur_time = time(nullptr);
36 size_t near_gid = s_gid.load(std::memory_order_acquire);
37 std::string msg = "report time: " + std::string((ctime(&cur_time) == nullptr) ? "" : ctime(&cur_time)) + "\n"
38 + ", qos: " + std::to_string(qos)
39 + ", worker num: " + std::to_string(totalNum)
40 + ", near gid:" + std::to_string((near_gid > 0) ? near_gid - 1 : 0);
41 std::string eventName = "WORKER_ESCAPE";
42 HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::FFRT, eventName,
43 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, "SENARIO", "Trigger_Escape",
44 "PROCESS_NAME", processName, "MSG", msg);
45 FFRT_LOGW("Process: %s trigger escape. %s", processName.c_str(), msg.c_str());
46 }
47 }
48 #endif