mirror of
https://gitee.com/openharmony/interface_sdk_c
synced 2024-11-27 00:41:01 +00:00
!1060 add hicollie sdk_c interface
Merge pull request !1060 from hhl/master
This commit is contained in:
commit
173c11b31d
28
hiviewdfx/hicollie/BUILD.gn
Normal file
28
hiviewdfx/hicollie/BUILD.gn
Normal file
@ -0,0 +1,28 @@
|
||||
# Copyright (c) 2024 Huawei Device Co., Ltd.
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import("//build/ohos.gni")
|
||||
|
||||
ohos_ndk_library("libohhicollie") {
|
||||
output_name = "ohhicollie"
|
||||
output_extension = "so"
|
||||
ndk_description_file = "./libhicollie.ndk.json"
|
||||
min_compact_version = "12"
|
||||
system_capability = "SystemCapability.HiviewDFX.HiCollie"
|
||||
system_capability_headers = [ "hicollie/hicollie.h" ]
|
||||
}
|
||||
|
||||
ohos_ndk_headers("oh_hicollie_header") {
|
||||
dest_dir = "$ndk_headers_out_dir/hicollie"
|
||||
sources = [ "./include/hicollie/hicollie.h" ]
|
||||
}
|
162
hiviewdfx/hicollie/include/hicollie/hicollie.h
Normal file
162
hiviewdfx/hicollie/include/hicollie/hicollie.h
Normal file
@ -0,0 +1,162 @@
|
||||
/*
|
||||
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef HIVIEWDFX_HICOLLIE_H
|
||||
#define HIVIEWDFX_HICOLLIE_H
|
||||
|
||||
/**
|
||||
* @addtogroup HiCollie
|
||||
* @{
|
||||
*
|
||||
* @brief Provides the ability to detect thread stuck or jank of your own business thread
|
||||
* pls note it should not be the same as main thread.
|
||||
*
|
||||
* You can use it in these two scenario:
|
||||
* (1)The Business thread stuck for 6 seconds;
|
||||
* (2)The Business thread jank for a short time,usually it is less than one second.
|
||||
*
|
||||
* @since 12
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file hicollie.h
|
||||
*
|
||||
* @brief Defines the interface of the HiCollie module.
|
||||
*
|
||||
* @library libohhicollie.so
|
||||
* @kit PerformanceAnalysisKit
|
||||
* @syscap SystemCapability.HiviewDFX.HiCollie
|
||||
* @since 12
|
||||
*/
|
||||
|
||||
#include <time.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
/**
|
||||
* @brief Defines error code
|
||||
*
|
||||
* @since 12
|
||||
*/
|
||||
typedef enum HiCollie_ErrorCode {
|
||||
/** Success */
|
||||
HICOLLIE_SUCCESS = 0,
|
||||
/** Invalid argument */
|
||||
HICOLLIE_INVALID_ARGUMENT = 401,
|
||||
/** Wrong thread context */
|
||||
HICOLLIE_WRONG_THREAD_CONTEXT = 29800001,
|
||||
/** Remote call failed */
|
||||
HICOLLIE_REMOTE_FAILED = 29800002,
|
||||
} HiCollie_ErrorCode;
|
||||
|
||||
/**
|
||||
* @brief In stuck scenario, you need to implement this function to detect whether your business thread is stuck.
|
||||
* HiCollie will call this function every 3 seconds in an independent thread.
|
||||
* A possible implementation of this function is to send a message to your business thread.
|
||||
* After the business thread receives it, it will set a flag,
|
||||
* by checking the flag you can know whether the business thread is stuck or not.
|
||||
*
|
||||
* @since 12
|
||||
*/
|
||||
typedef void (*OH_HiCollie_Task)(void);
|
||||
|
||||
/**
|
||||
* @brief In jank scenario, you need to insert two stub functions before and after
|
||||
* each event processing of your business thread.
|
||||
* By checking these two function executing timestamp, HiCollie will know cosuming time for every event.
|
||||
* If it exceeds the preset threshold, a jank event will be reported.
|
||||
* This is the stub function inserted before each event processing.
|
||||
*
|
||||
* @param eventName Business thread processing event name.
|
||||
* @since 12
|
||||
*/
|
||||
typedef void (*OH_HiCollie_BeginFunc)(const char* eventName);
|
||||
|
||||
/**
|
||||
* @brief In jank scenario, you need to insert two stub functions before and after
|
||||
* each event processing of your business thread.
|
||||
* By checking these two function executing timestamp, HiCollie will know cosuming time for every event.
|
||||
* If it exceeds the preset threshold, a jank event will be reported.
|
||||
* This is the stub function inserted after each event processing.
|
||||
*
|
||||
* @param eventName Business thread processing event name.
|
||||
* @since 12
|
||||
*/
|
||||
typedef void (*OH_HiCollie_EndFunc)(const char* eventName);
|
||||
|
||||
/**
|
||||
* @brief Parameters used for jank detection.
|
||||
* Pls note these parameters is not valid for API 12, it is only used for future extention.
|
||||
*
|
||||
* @since 12
|
||||
*/
|
||||
typedef struct HiCollie_DetectionParam {
|
||||
/** In jank scenario, it's the theshold exceed which sample stack will be collected. */
|
||||
int sampleStackTriggerTime;
|
||||
/** extended parameter for future use. */
|
||||
int reserved;
|
||||
} HiCollie_DetectionParam;
|
||||
|
||||
/**
|
||||
* @brief Set up periodic tasks for stuck detection.
|
||||
*
|
||||
* @param task Periodic task executed every 3 seconds.
|
||||
* @return {@link HICOLLIE_SUCCESS} 0 - Success.
|
||||
* {@link HICOLLIE_WRONG_THREAD_CONTEXT} 29800001 - Wrong thread context.
|
||||
* The function can not be called from main thread.
|
||||
* @since 12
|
||||
*/
|
||||
HiCollie_ErrorCode OH_HiCollie_Init_StuckDetection(OH_HiCollie_Task task);
|
||||
|
||||
/**
|
||||
* @brief Set up stub functions for jank detection.
|
||||
*
|
||||
* @param beginFunc The stub function before each event processing.
|
||||
* @param endFunc The stub function after each event processing.
|
||||
* @param param The parameter for jank detection setting.
|
||||
* @return {@link HICOLLIE_SUCCESS} 0 - Success.
|
||||
* {@link HICOLLIE_INVALID_ARGUMENT} 401 - beginFunc and endFunc
|
||||
* must both have values or be empty, otherwise the value will be returned.
|
||||
* {@link HICOLLIE_WRONG_THREAD_CONTEXT} 29800001 - Wrong thread context.
|
||||
* The function can not be called from main thread.
|
||||
* @since 12
|
||||
*/
|
||||
HiCollie_ErrorCode OH_HiCollie_Init_JankDetection(OH_HiCollie_BeginFunc* beginFunc,
|
||||
OH_HiCollie_EndFunc* endFunc, HiCollie_DetectionParam param);
|
||||
|
||||
/**
|
||||
* @brief Report a stuck event.
|
||||
*
|
||||
* @param isSixSecond boolean pointer.
|
||||
* The value of the boolean pointer.True if it is stuck for 6 seconds. False if it is stuck for 3 seconds.
|
||||
* @return {@link HICOLLIE_SUCCESS} 0 - Success.
|
||||
* {@link HICOLLIE_INVALID_ARGUMENT} 401 - if isSixSecond is nullptr.
|
||||
* {@link HICOLLIE_WRONG_THREAD_CONTEXT} 29800001 - Wrong thread context.
|
||||
* The function can only be called from hicollie internal monitor thread
|
||||
* where {@link OH_HiCollie_Task} run on.
|
||||
* {@link HICOLLIE_REMOTE_FAILED} 29800002 - Remote call failed.
|
||||
* @since 12
|
||||
*/
|
||||
HiCollie_ErrorCode OH_HiCollie_Report(bool* isSixSecond);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
#endif // HIVIEWDFX_HICOLLIE_H
|
14
hiviewdfx/hicollie/libhicollie.ndk.json
Normal file
14
hiviewdfx/hicollie/libhicollie.ndk.json
Normal file
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"first_introduced": "12",
|
||||
"name": "OH_HiCollie_Init_StuckDetection"
|
||||
},
|
||||
{
|
||||
"first_introduced": "12",
|
||||
"name": "OH_HiCollie_Init_JankDetection"
|
||||
},
|
||||
{
|
||||
"first_introduced": "12",
|
||||
"name": "OH_HiCollie_Report"
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue
Block a user