1 /* 2 * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. 3 * 4 * UniProton is licensed under Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * http://license.coscl.org.cn/MulanPSL2 8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 10 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 11 * See the Mulan PSL v2 for more details. 12 * Create: 2009-12-22 13 * Description: 硬中断模块的对外头文件。 14 */ 15 #ifndef PRT_HWI_H 16 #define PRT_HWI_H 17 18 #include "prt_module.h" 19 #include "prt_errno.h" 20 #include "prt_buildef.h" 21 22 #ifdef __cplusplus 23 #if __cplusplus 24 extern "C" { 25 #endif /* __cpluscplus */ 26 #endif /* __cpluscplus */ 27 28 /* 29 * IPI触发类型。 30 */ 31 enum OsHwiIpiType { 32 OS_TYPE_TRIGGER_BY_MASK = 0, /* 通过mask确定需要触发的目标核 */ 33 OS_TYPE_TRIGGER_TO_OTHER, /* 触发除本核外的其他核 */ 34 OS_TYPE_TRIGGER_TO_SELF, /* 触发本核 */ 35 OS_TYPE_TRIGGER_BUTT /* 非法 */ 36 }; 37 38 /* 39 * 支持的SGI中断编号为[0,15] 40 * 可用的核间中断号定义。 41 */ 42 #define OS_HWI_IPI_NO_00 0 43 44 /* 45 * 可用的核间中断号定义[OS占用1号:触发它核响应一次调度的IPI中断号]。 46 */ 47 #define OS_HWI_IPI_NO_01 1 48 49 /* 50 * 可用的核间中断号定义[OS占用2号:一个核异常后将其它核停住的IPI中断号]。 51 */ 52 #define OS_HWI_IPI_NO_02 2 53 54 /* 55 * 可用的核间中断号定义[OS占用3号:响应tick中断的核触发它核的模拟tickIPI中断号]。 56 */ 57 #define OS_HWI_IPI_NO_03 3 58 59 /* 60 * 可用的核间中断号定义[OS占用4号:核间通信用于核间通知的中断号]。 61 */ 62 #define OS_HWI_IPI_NO_04 4 63 64 /* 65 * 可用的核间中断号定义。 66 */ 67 #define OS_HWI_IPI_NO_05 5 68 #define OS_HWI_IPI_NO_06 6 69 70 /* 71 * 可用的核间中断号定义[OS占用7号:openamp要求Linux和从核使用同一个IPI,Linux核目前只能使用7号]。 72 */ 73 #define OS_HWI_IPI_NO_07 7 74 75 /* 76 * 可用的核间中断号定义。 77 */ 78 #define OS_HWI_IPI_NO_08 8 79 #define OS_HWI_IPI_NO_09 9 80 #define OS_HWI_IPI_NO_10 10 81 #define OS_HWI_IPI_NO_011 11 82 #define OS_HWI_IPI_NO_012 12 83 #define OS_HWI_IPI_NO_013 13 84 #define OS_HWI_IPI_NO_014 14 85 #define OS_HWI_IPI_NO_015 15 86 87 /* 88 * 硬中断错误码:中断号非法。 89 * 90 * 值: 0x02000801 91 * 92 * 解决方案:确保中断号合法,中断号请查看硬件手册。 93 */ 94 #define OS_ERRNO_HWI_NUM_INVALID OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x01) 95 96 /* 97 * 硬中断错误码:优先级非法。 98 * 99 * 值: 0x02000802 100 * 101 * 解决方案:确保优先级合法。 102 */ 103 #define OS_ERRNO_HWI_PRI_ERROR OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x02) 104 105 /* 106 * 硬中断错误码:硬中断已被创建或相应中断向量号已被其它中断占用。 107 * 108 * 值: 0x02000803 109 * 110 * 解决方案:更换中断号 111 */ 112 #define OS_ERRNO_HWI_ALREADY_CREATED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x03) 113 114 /* 115 * 硬中断错误码:硬中断处理函数为空。 116 * 117 * 值: 0x02000804 118 * 119 * 解决方案:传入非空的有效处理函数 120 */ 121 #define OS_ERRNO_HWI_PROC_FUNC_NULL OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x04) 122 123 /* 124 * 硬中断错误码:未创建的硬中断被响应。 125 * 126 * 值: 0x03000805 127 * 128 * 解决方案:先创建硬中断,然后使能并触发该中断使其得到响应 129 */ 130 #define OS_ERRNO_HWI_UNCREATED OS_ERRNO_BUILD_FATAL(OS_MID_HWI, 0x05) 131 132 /* 133 * 硬中断错误码:设置硬中断属性时,属性设置与之前设置值不一致 134 * 135 * 值: 0x02000806 136 * 137 * 解决方案:确认当前设置属性值与之前是否一致。如果确需修改属性,请先删除该硬中断。 138 */ 139 #define OS_ERRNO_HWI_ATTR_CONFLICTED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x06) 140 141 /* 142 * 硬中断错误码:组合型中断创建失败,为组合型中断节点申请系统默认私有FSC内存失败,或申请中断描述信息失败。 143 * 144 * 值: 0x02000807 145 * 146 * 解决方案: 增大系统默认私有FSC分区大小 147 */ 148 #define OS_ERRNO_HWI_MEMORY_ALLOC_FAILED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x07) 149 150 /* 151 * 硬中断错误码:组合型中断函数注册失败,该组合型中断已创建了相同的中断处理函数。 152 * 153 * 值: 0x02000808 154 * 155 * 解决方案: 更换中断处理函数 156 */ 157 #define OS_ERRNO_HWI_COMBINEHOOK_ALREADY_CREATED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x08) 158 159 /* 160 * 硬中断错误码:创建的中断函数即不是独立型,也不是组合型 161 * 162 * 值: 0x02000809 163 * 164 * 解决方案: 硬中断模式只能设置为独立型或组合型 165 */ 166 #define OS_ERRNO_HWI_MODE_ERROR OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x09) 167 168 /* 169 * 硬中断错误码:删除未创建或者已经被删除的硬中断。 170 * 171 * 值: 0x0200080a 172 * 173 * 解决方案: 删除已创建并且未被删除的硬中断 174 */ 175 #define OS_ERRNO_HWI_DELETED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x0a) 176 177 /* 178 * 硬中断错误码:未进行硬中断模式设置。 179 * 180 * 值: 0x0200080b 181 * 182 * 解决方案: 调用中断创建函数前,需要先调用中断模式设置函数,进行模式参数设置 183 */ 184 #define OS_ERRNO_HWI_MODE_UNSET OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x0b) 185 186 /* 187 * 硬中断错误码:硬中断触发接口入参错误,输入无效的核号。 188 * 189 * 值: 0x0200080c 190 * 191 * 解决方案: 输入本核核号 192 */ 193 #define OS_ERRNO_HWI_CORE_ID_INVALID OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x0c) 194 195 /* 196 * 硬中断错误码:硬件上报错误中断。 197 * 198 * 值: 0x0200080d 199 * 200 * 解决方案:无。 201 */ 202 #define OS_ERRNO_HWI_HW_REPORT_HWINO_INVALID OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x0d) 203 204 /* 205 * 系统基本功能错误码:注册不可删除的中断失败 206 * 207 * 值: 0x0300080e 208 * 209 * 解决方案: 请确保传是独立型中断,或者修改OS_HWI_INTERNAL_NUM值 210 */ 211 #define OS_ERROR_HWI_INT_REGISTER_FAILED OS_ERRNO_BUILD_FATAL(OS_MID_HWI, 0x0e) 212 213 /* 214 * 硬中断错误码:中断内存资源申请失败 215 * 216 * 值: 0x0200080f 217 * 218 * 解决方案: 检查默认分区大小配置是否正确 219 */ 220 #define OS_ERRNO_HWI_RESOURCE_ALLOC_FAILED OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x0f) 221 222 /* 223 * 核间中断错误码:中断目标核不支持1-N 224 * 225 * 值: 0x02000810 226 * 227 * 解决方案:目标核掩码只描述1个目标核,不能描述多个目标核 228 */ 229 #define OS_ERRNO_MULTI_TARGET_CORE OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x10) 230 231 /* 232 * 硬中断错误码:删除os内部硬中断。 233 * 234 * 值: 0x02000811 235 * 236 * 解决方案:不允许删除os内部硬中断 237 */ 238 #define OS_ERRNO_HWI_DELETE_INT OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x11) 239 240 /* 241 * 硬中断错误码:硬中断地址信息配置错误 242 * 243 * 值: 0x02000812 244 * 245 * 解决方案: 根据核手册正确配置OS_GIC_BASE_ADDR/OS_GICR_OFFSET/OS_GICR_STRIDE 246 */ 247 #define OS_ERROR_HWI_BASE_ADDR_INVALID OS_ERRNO_BUILD_ERROR(OS_MID_HWI, 0x12) 248 249 /* 250 * 硬中断优先级的类型定义。 251 */ 252 typedef U16 HwiPrior; 253 254 /* 255 * 硬中断模式配置信息的类型定义。 256 */ 257 typedef U16 HwiMode; 258 259 /* 260 * 硬中断处理函数的参数类型定义。 261 */ 262 typedef uintptr_t HwiArg; 263 264 /* 265 * 硬中断号的类型定义。 266 */ 267 typedef U32 HwiHandle; 268 269 /* 270 * 组合型硬中断。 271 */ 272 #define OS_HWI_MODE_COMBINE 0x8000 273 274 /* 275 * 独立型硬中断。 276 */ 277 #define OS_HWI_MODE_ENGROSS 0x4000 278 279 /* 280 * 缺省硬中断模式。 281 */ 282 #define OS_HWI_MODE_DEFAULT OS_HWI_MODE_ENGROSS 283 284 /* 285 * 普通硬中断。 286 */ 287 #define OS_HWI_TYPE_NORMAL 0x00 288 289 /* 290 * 中断属性组装宏(共8bit)。 291 */ 292 #define OS_HWI_ATTR(mode, type) (HwiMode)((HwiMode)(mode) | (HwiMode)(type)) 293 294 /* 295 * @brief 硬中断处理函数的类型定义。 296 * 297 * @par 描述 298 * 通过硬中断处理函数的类型定义硬中断处理函数,在硬中断触发时调用该中断处理函数。 299 * 300 * @attention 无。 301 * 302 * @param param1 [IN] 类型#HwiArg,硬中断处理函数的参数。 303 * 304 * @retval 无。 305 * @par 依赖 306 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 307 * @see 无。 308 */ 309 typedef void (*HwiProcFunc)(HwiArg); 310 311 /* 312 * @brief 硬中断调用处理函数钩子函数类型定义。 313 * 314 * @par 描述 315 * 用户通过硬中断调用钩子处理函数类型定义硬中断调用处理函数钩子,在硬中断调用处理函数时,调用该钩子。 316 * @attention 无。 317 * 318 * @param hwiNum [IN] 类型#U32,硬中断号。 319 * 320 * @retval 无。 321 * @par 依赖 322 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 323 */ 324 typedef void (*HwiEntryHook)(U32 hwiNum); 325 326 /* 327 * @brief 硬中断退出处理函数钩子函数类型定义。 328 * 329 * @par 描述 330 * 用户通过硬中断退出钩子处理函数类型定义硬中断退出处理函数钩子,在硬中断退出处理函数时,调用该钩子。 331 * @attention 无。 332 * 333 * @param hwiNum [IN] 类型#U32,硬中断号。 334 * 335 * @retval 无。 336 * @par 依赖 337 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 338 */ 339 typedef void (*HwiExitHook)(U32 hwiNum); 340 341 /* 342 * @brief 设置硬中断属性接口。 343 * 344 * @par 描述 345 * 在创建硬中断前,必须要配置好硬中断的优先级和模式,包括独立型(#OS_HWI_MODE_ENGROSS)和 346 * 组合型(#OS_HWI_MODE_COMBINE)两种配置模式。 347 * 348 * @attention 349 * <ul> 350 * <li>OS已经占用的不能被使用</li> 351 * </ul> 352 * 353 * @param hwiNum [IN] 类型#HwiHandle,硬中断号。 354 * @param hwiPrio [IN] 类型#HwiPrior,硬中断优先级。 355 * @param mode [IN] 类型#HwiMode,设置的中断模式,为独立型(#OS_HWI_MODE_ENGROSS)或者组合型(#OS_HWI_MODE_COMBINE)。 356 * 357 * @retval #OS_OK 0x00000000,硬中断属性设置成功。 358 * @retval #其它值,属性设置失败。 359 * @par 依赖 360 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 361 * @see PRT_HwiCreate 362 */ 363 extern U32 PRT_HwiSetAttr(HwiHandle hwiNum, HwiPrior hwiPrio, HwiMode mode); 364 365 /* 366 * @brief 创建硬中断函数。 367 * 368 * @par 描述 369 * 注册硬中断的处理函数。 370 * 371 * @attention 372 * <ul> 373 * <li>在调用该函数之前,请先确保已经设置了中断属性。</li> 374 * <li>硬中断创建成功后,并不使能相应向量的中断,需要显式调用#PRT_HwiEnable单独使能。</li> 375 * </ul> 376 * 377 * @param hwiNum [IN] 类型#HwiHandle,硬中断号。 378 * @param handler [IN] 类型#HwiProcFunc,硬中断触发时的处理函数。 379 * @param arg [IN] 类型#HwiArg,调用硬中断处理函数时传递的参数。 380 * 381 * @retval #OS_OK 0x00000000,硬中断创建成功。 382 * @retval #其它值,创建失败。 383 * @par 依赖 384 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 385 * @see PRT_HwiDelete 386 */ 387 extern U32 PRT_HwiCreate(HwiHandle hwiNum, HwiProcFunc handler, HwiArg arg); 388 389 /* 390 * @brief 删除硬中断函数。 391 * 392 * @par 描述 393 * 屏蔽相应硬中断或事件,取消硬中断处理函数的注册。 394 * 395 * @attention 396 * <ul> 397 * <li>不能删除OS占用的中断号。</li> 398 * </ul> 399 * 400 * @param hwiNum [IN] 类型#HwiHandle,硬中断号。 401 * 402 * @retval #OS_OK 0x00000000,硬中断删除成功。 403 * @retval #其它值,删除失败。 404 * @par 依赖 405 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 406 * @see PRT_HwiCreate 407 */ 408 extern U32 PRT_HwiDelete(HwiHandle hwiNum); 409 410 /* 411 * @brief 激活指定核号内的硬中断。 412 * 413 * @par 描述 414 * 激活指定核号内的软件可触发的硬中断 415 * 416 * @attention 417 * 418 * @param dstCore [IN] 类型#U32,目标核号。目前只支持指定为本核。 419 * @param hwiNum [IN] 类型#HwiHandle,硬中断号,只支持软件可触发的中断号。 420 * 421 * @retval #OS_OK 0x00000000,硬中断激活成功。 422 * @retval #其它值,激活失败。 423 * @par 依赖 424 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 425 */ 426 extern U32 PRT_HwiTrigger(U32 dstCore, HwiHandle hwiNum); 427 428 /* 429 * @brief 清空中断请求位。 430 * 431 * @par 描述 432 * 清除所有的中断请求位。即放弃当前已触发中断的的响应。 433 * 434 * @attention 435 * <ul> 436 * 清除所有的中断请求位(对于NMI中断无效)。 437 * </ul> 438 * 439 * @param 无。 440 * 441 * @retval 无。 442 * @par 依赖 443 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 444 * @see PRT_HwiClearPendingBit 445 */ 446 extern void PRT_HwiClearAllPending(void); 447 448 /* 449 * @brief 清除硬中断的Pending位。 450 * 451 * @par 描述 452 * 显式清除硬中断或事件的请求位,因为有的硬件响应中断后不会自动清Pending位。 453 * 454 * @attention 455 * 456 * @param hwiNum [IN] 类型#HwiHandle,硬中断号。 457 * 458 * @retval #OS_OK 0x00000000,硬中断请求位清除成功。 459 * @retval #其它值,清除失败。 460 * @par 依赖 461 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 462 * @see PRT_HwiCreate 463 */ 464 extern U32 PRT_HwiClearPendingBit(HwiHandle hwiNum); 465 466 /* 467 * @brief 屏蔽指定的硬中断。 468 * 469 * @par 描述 470 * 禁止核响应指定硬中断的请求。 471 * 472 * @attention 473 * 474 * @param hwiNum [IN] 类型#HwiHandle,依据不同的芯片,硬中断号或中断向量号,见注意事项。 475 * 476 * @retval #OS_OK 0x00000000,硬中断去使能成功。 477 * @retval #其它值,硬中断去使能失败。 478 * @par 依赖 479 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 480 * @see PRT_HwiEnable 481 */ 482 extern U32 PRT_HwiDisable(HwiHandle hwiNum); 483 484 /* 485 * @brief 使能指定的硬中断。 486 * 487 * @par 描述 488 * 允许核响应指定硬中断的请求。 489 * 490 * @attention 491 * <ul> 492 * <li>对于不同芯片,此返回值代表的意义有所差异,差异细节见下面返回值说明</li> 493 * </ul> 494 * 495 * @param hwiNum [IN] 类型#HwiHandle,依据不同的芯片,硬中断号或中断向量号,见注意事项。 496 * 497 * @retval #OS_OK 0x00000000,硬中断使能成功。 498 * @retval #其它值,硬中断使能失败。 499 * @par 依赖 500 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 501 * @see PRT_HwiDisable 502 */ 503 extern U32 PRT_HwiEnable(HwiHandle hwiNum); 504 505 /* 506 * @brief 添加硬中断进入钩子 507 * 508 * @par 描述 509 * 添加硬中断进入钩子。该钩子函数在进入硬中断ISR前被调用。 510 * 511 * @attention 512 * <ul> 513 * <li>不同钩子函数间执行的先后顺序,不应当存在依赖关系。</li> 514 * <li>不应在钩子函数里调用可能引起线程调度或阻塞的OS接口。</li> 515 * <li>最大支持钩子数需静态配置</li> 516 * </ul> 517 * 518 * @param hook [IN] 类型#HwiEntryHook,中断进入钩子函数。 519 * 520 * @par 依赖 521 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 522 * @see PRT_HwiDelEntryHook | PRT_HookAdd | PRT_HwiAddExitHook 523 */ 524 extern U32 PRT_HwiAddEntryHook(HwiEntryHook hook); 525 526 /* 527 * @brief 删除硬中断进入钩子 528 * 529 * @par 描述 530 * 删除硬中断进入钩子。该钩子函数将停止在进入硬中断ISR前的调用。 531 * 532 * @attention 533 * <ul> 534 * <li>不同钩子函数间执行的先后顺序,不应当存在依赖关系。</li> 535 * <li>不应在钩子函数里调用可能引起线程调度或阻塞的OS接口。</li> 536 * <li>最大支持钩子数需静态配置</li> 537 * </ul> 538 * 539 * @param hook [IN] 类型#HwiEntryHook,中断进入钩子函数。 540 * 541 * @par 依赖 542 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 543 * @see PRT_HwiAddEntryHook | PRT_HookDel 544 */ 545 extern U32 PRT_HwiDelEntryHook(HwiEntryHook hook); 546 547 /* 548 * @brief 添加硬中断退出钩子 549 * 550 * @par 描述 551 * 添加硬中断退出钩子。该钩子函数在退出硬中断ISR后被调用。 552 * 553 * @attention 554 * <ul> 555 * <li>不同钩子函数间执行的先后顺序,不应当存在依赖关系。</li> 556 * <li>不应在钩子函数里调用可能引起线程调度或阻塞的OS接口。</li> 557 * <li>最大支持钩子数需静态配置</li> 558 * </ul> 559 * 560 * @param hook [IN] 类型#HwiExitHook,中断退出钩子函数。 561 * 562 * @par 依赖 563 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 564 * @see PRT_HwiDelExitHook | PRT_HookAdd | PRT_HwiAddEntryHook 565 */ 566 extern U32 PRT_HwiAddExitHook(HwiExitHook hook); 567 568 /* 569 * @brief 删除硬中断退出钩子 570 * 571 * @par 描述 572 * 删除硬中断退出钩子。该钩子函数将停止在退出硬中断ISR后的调用。 573 * 574 * @attention 575 * <ul> 576 * <li>不同钩子函数间执行的先后顺序,不应当存在依赖关系。</li> 577 * <li>不应在钩子函数里调用可能引起线程调度或阻塞的OS接口。</li> 578 * <li>最大支持钩子数需静态配置</li> 579 * </ul> 580 * 581 * @param hook [IN] 类型#HwiExitHook,中断退出钩子函数。 582 * 583 * @par 依赖 584 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 585 * @see PRT_HwiAddExitHook | PRT_HookDel 586 */ 587 extern U32 PRT_HwiDelExitHook(HwiExitHook hook); 588 589 /* 590 * @brief 开中断。 591 * 592 * @par 描述 593 * 开启全局可屏蔽中断。 594 * 595 * @attention 中断服务函数里慎用该接口,会引起中断优先级反转 596 * 597 * @param 无。 598 * 599 * @retval 开启全局中断前的中断状态值。 600 * @par 依赖 601 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 602 * @see PRT_HwiLock | PRT_HwiRestore 603 */ 604 extern uintptr_t PRT_HwiUnLock(void); 605 606 /* 607 * @brief 关中断。 608 * 609 * @par 描述 610 * 关闭全局可屏蔽中断。 611 * 612 * @attention 在关全局中断后,禁止调用引起内核调度的相关接口,如PRT_TaskDelay接口 613 * 614 * @param 无。 615 * 616 * @retval 关闭全局中断前的中断状态值。 617 * @par 依赖 618 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 619 * @see PRT_HwiUnLock | PRT_HwiRestore 620 */ 621 extern uintptr_t PRT_HwiLock(void); 622 623 /* 624 * @brief 恢复中断状态接口。 625 * 626 * @par 描述 627 * 恢复原中断状态寄存器。 628 * 629 * @attention 630 * <ul> 631 * <li>该接口必须和关闭全局中断或者是开启全局中断接口成对使用,以关全局中断或者开全局中断操作的返回值为入参</li> 632 * <li>以保证中断可以恢复到关全局中断或者开全局中断操作前的状态</li> 633 * </ul> 634 * @param intSave [IN] 类型#uintptr_t,关全局中断PRT_HwiLock和开全局中断PRT_HwiUnLock的返回值。 635 * 636 * @retval 无 637 * @par 依赖 638 * <ul><li>prt_hwi.h:该接口声明所在的头文件。</li></ul> 639 * @see PRT_HwiUnLock | PRT_HwiLock 640 */ 641 extern void PRT_HwiRestore(uintptr_t intSave); 642 643 #ifdef __cplusplus 644 #if __cplusplus 645 } 646 #endif /* __cpluscplus */ 647 #endif /* __cpluscplus */ 648 649 #endif /* PRT_HWI_H */ 650