昇腾社区首页
中文
注册

set_flag & wait_flag

功能说明

set_flag和wait_flag是一对指令。任何wait_flag指令都会等待直到一个具有相同事件ID的set_flag被执行。每种流水和触发器对都有从0到7的事件ID。set_flag只是设置位,不会阻塞同一流水中的下一个指令。当set_flag之前的所有指令已完成提交,则会触发相应的wait_flag。

值得注意的是,不允许有两个具有相同ID、流水和触发器对但没有相应wait_flag的set_flag。例如:

set_flag(PIPE_M, PIPE_V, 0);
set_flag(PIPE_M, PIPE_V, 0);  // 非法
表1 同步指令对参数说明

参数名

说明

pipe

需要等待完成的流水

tpipe

等待完成后才能触发的流水

pipeID

3bit事件ID,仅支持7个事件ID。

函数原型

void set_flag(pipe_t pipe, pipe_t tpipe, uint64_t pipeID)
void set_flag(pipe_t pipe, pipe_t tpipe, event_t pipeID)
void wait_flag(pipe_t pipe, pipe_t tpipe, uint64_t pipeID)
void wait_flag(pipe_t pipe, pipe_t tpipe, event_t pipeID)

流水类型

PIPE_S