1# HiCollie 2 3 4## 概述 5 6本模块对外提供检测业务线程卡死、卡顿,以及上报卡死事件的能力。 7 8**起始版本:** 12 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [hicollie.h](hicollie_8h.md) | 定义HiCollie模块的功能。 | 19 20 21### 结构体 22 23| 名称 | 描述 | 24| -------- | -------- | 25| struct [HiCollie_DetectionParam](_hi_hicollie___detection_param.md) | 设置检测业务线程卡顿的相关参数。 | 26 27 28### 类型定义 29 30| 名称 | 描述 | 31| -------- | -------- | 32| typedef enum [HiCollie_ErrorCode](errorcode-hiviewdfx-hicollie.md) [HiCollie_ErrorCode](#hicollie_errorcode) | 错误码定义。 | 33| typedef void(\* [OH_HiCollie_Task](#oh_hicollie_task)) (void) | 函数指针, 用户自定义回调函数内容,该回调函数用于周期性检测应用业务线程任务执行情况。 | 34| typedef void(\* [OH_HiCollie_BeginFunc](#oh_hicollie_beginfunc)) (const char \*name) | 函数指针, 用户自定义回调函数内容,该回调函数放在应用业务线程处理事件之前。 | 35| typedef void(\* [OH_HiCollie_EndFunc](#oh_hicollie_endfunc)) (const char \*name) | 函数指针, 用户自定义回调函数内容,该回调函数放在应用业务线程处理事件之后。 | 36| typedef struct [HiCollie_DetectionParam](_hi_hicollie___detection_param.md) [HiCollie_DetectionParam](#hicollie_detectionparam) | 用户可以自定义检测业务线程卡顿的相关参数。 | 37 38 39## 类型定义说明 40 41 42### HiCollie_ErrorCode 43 44``` 45typedef enum HiCollie_ErrorCode HiCollie_ErrorCode 46``` 47 48**描述** 49 50错误码定义。 51 52**起始版本:** 12 53 54 55### OH_HiCollie_Task 56 57``` 58typedef void (*OH_HiCollie_Task)(void) 59``` 60 61**描述** 62 63应用业务线程卡死检测回调函数。业务线程会定时执行该回调函数,检查线程完成情况,判定已经注册的线程是否卡死。 64 65**起始版本:** 12 66 67 68### OH_HiCollie_BeginFunc 69 70``` 71typedef void (*OH_HiCollie_BeginFunc)(const char* eventName) 72``` 73 74**描述** 75 76应用业务线程卡顿检测回调函数。该回调函数放在应用业务线程处理事件之前,用于记录线程开始处理事件时间。 77 78**起始版本:** 12 79 80 81### OH_HiCollie_EndFunc 82 83``` 84typedef void (*OH_HiCollie_EndFunc)(const char* eventName) 85``` 86 87**描述** 88 89应用业务线程卡顿检测回调函数。该回调函数放在应用业务线程处理事件之后,用于检测线程处理该事件是否出现卡顿情况。 90 91**起始版本:** 12 92 93 94### HiCollie_DetectionParam 95 96``` 97typedef struct HiCollie_DetectionParam HiCollie_DetectionParam 98``` 99 100**描述** 101 102用户可以自定义检测业务线程卡顿的相关参数,如:设置卡顿阈值。 103 104**起始版本:** 12 105 106 107### 函数 108 109| 名称 | 描述 | 110| -------- | -------- | 111| HiCollie_ErrorCode [OH_HiCollie_Init_StuckDetection](_hi_hicollie.md#oh_hicollie_init_stuckdetection) (OH_HiCollie_Task task) | 注册应用业务线程卡死的周期性检测任务。 | 112| HiCollie_ErrorCode [OH_HiCollie_Init_JankDetection](_hi_hicollie.md#oh_hicollie_init_jankdetection) (OH_HiCollie_BeginFunc\* beginFunc, OH_HiCollie_EndFunc\* endFunc, HiCollie_DetectionParam param) | 注册应用业务线程卡顿检测的回调函数。 | 113| HiCollie_ErrorCode [OH_HiCollie_Report](_hi_hicollie.md#oh_hicollie_report) (bool\* isSixSecond) | 用于上报应用业务线程卡死事件,生成超时故障日志,辅助定位应用超时问题。结合OH_HiCollie_Init_StuckDetection接口配套使用,先初始化卡死检测,出现卡死时,再上报事件。 | 114 115 116## 函数说明 117 118 119### OH_HiCollie_Init_StuckDetection 120 121``` 122HiCollie_ErrorCode OH_HiCollie_Init_StuckDetection(OH_HiCollie_Task task) 123``` 124 125**描述** 126 127注册应用业务线程卡死的周期性检测任务。 128 129**起始版本:** 12 130 131**参数:** 132 133| 名称 | 描述 | 134| -------- | -------- | 135| task | 用户实现的回调函数, 定时检测业务线程卡死情况。如果用户想要取消检测,可以传空指针。 | 136 137 138**返回:** 139 140返回设置回调函数结果。如果返回结果为0,代表初始化业务线程卡死检测成功。 141 142 143### OH_HiCollie_Init_JankDetection 144 145``` 146HiCollie_ErrorCode OH_HiCollie_Init_JankDetection(OH_HiCollie_BeginFunc* beginFunc, OH_HiCollie_EndFunc* endFunc, HiCollie_DetectionParam param); 147``` 148 149**描述** 150 151注册应用业务线程卡顿检测的回调函数。线程卡顿监控功能需要开发者实现两个卡顿检测回调函数, 分别放在业务线程处理事件的前后。作为插桩函数,监控业务线程处理事件执行情况。 152 153**起始版本:** 12 154 155**参数:** 156 157| 名称 | 描述 | 158| -------- | -------- | 159| beginFunc | 用户实现的回调函数, 调用位置:业务线程处理事件之前。如果用户想要取消检测,beginFunc和endFunc需要同时传空指针。 | 160| endFunc | 用户实现的回调函数, 调用位置:业务线程处理事件之后。如果用户想要取消检测,beginFunc和endFunc需要同时传空指针。 | 161| param | 用户自定义线程卡顿参数,扩展参数以供后续开发使用。见[HiCollie_DetectionParam](_hi_hicollie___detection_param.md) | 162 163**返回:** 164 165返回设置回调函数结果。如果返回结果为0,代表初始化业务线程卡顿检测成功。 166 167 168### OH_HiCollie_Report 169 170``` 171HiCollie_ErrorCode OH_HiCollie_Report(bool* isSixSecond); 172``` 173 174**描述** 175 176用于上报应用业务线程卡死事件,生成超时故障日志,辅助定位应用超时问题。结合OH_HiCollie_Init_StuckDetection接口配套使用,先初始化卡死检测,出现卡死时,再上报事件。 177 178**起始版本:** 12 179 180**参数:** 181 182| 名称 | 描述 | 183| -------- | -------- | 184| isSixSecond | bool指针,如果卡住6秒,则为true。如果卡住3秒,则为False。 | 185 186 187**返回:** 188 189返回设置回调函数上报结果。如果返回结果为0,代表初始化业务线程上报卡死事件成功。 190