os_cpc.h 源码
2026/7/20大约 1 分钟源码参考内核SMPCPC头文件
os_cpc.h — 核间调用(CPC)接口头文件
源文件路径: kernel/include/os_cpc.h
引用章节: 4.8 SMP 多核支持
完整源码
#ifndef __OS_CPC_H__
#define __OS_CPC_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <oneos_config.h>
#include <os_types.h>
#ifdef OS_USING_SMP
/* CPC 调用模式 */
#define OS_CPC_SYNC 1 /* 同步:调用核等待被调用核执行完毕 */
#define OS_CPC_ASYNC 2 /* 异步:被调用核先响应,再执行 CPC 函数 */
#define OS_CPC_SYNC_MANUAL 3 /* 手动同步:由 CPC 函数内部调用 os_cpc_sync() 同步 */
typedef os_err_t (*os_cpc_func_t)(void *); /* CPC 函数指针类型 */
extern os_err_t os_cpc_init(void);
/* 向指定 CPU 发送 CPC 调用 */
extern os_err_t os_cpc_call(int32_t cpu, os_cpc_func_t func, void *arg, int32_t flag);
/* 向多个 CPU 广播 CPC 调用 */
extern os_err_t os_cpc_broadcast(uint32_t cpuset, os_cpc_func_t func, void *arg, int32_t flag);
/* 手动同步(OS_CPC_SYNC_MANUAL 模式下使用) */
extern void os_cpc_sync(os_err_t ret);
#endif /* OS_USING_SMP */
#ifdef __cplusplus
}
#endif
#endif /* __OS_CPC_H__ */关键说明
| 模式 | 行为 | 适用场景 |
|---|---|---|
OS_CPC_SYNC | 调用核阻塞等待完成 | 需要返回结果的跨核操作 |
OS_CPC_ASYNC | 调用核立即返回 | 不需要等待结果的通知 |
OS_CPC_SYNC_MANUAL | 手动控制同步点 | 复杂的跨核协调场景 |