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