hbUCPMemFlush

int32_t hbUCPMemFlush(hbUCPSysMem const *mem, int32_t flag);

对缓存的系统内存进行刷新。

  • 参数

    • [in] mem 内存指针。
    • [in] flag 刷新标志符。
  • 返回值

    • 返回 0 则表示API成功执行,否则执行失败。
注解
  • flag 可选值及作用:

    • HB_SYS_MEM_CACHE_INVALIDATE 使用 Clean + Invalidate 组合操作,将缓存中修改的数据写回内存并使缓存无效。

    • HB_SYS_MEM_CACHE_CLEAN 使用 Clean 操作,将缓存中修改的数据写回内存,但保留缓存副本。

  • 当CPU写完数据后,需要使用 HB_SYS_MEM_CACHE_CLEAN 将缓存中修改的数据同步到内存中,否则可能出现以下情况:

    • 该块内存被其他设备读取,读取到的数据是内存中的旧数据,而CPU新写的数据在缓存中。

    • 该块内存之后被其他设备写入新数据,写入后使用 HB_SYS_MEM_CACHE_INVALIDATE 同步数据时会将缓存中的数据同步至内存,其他设备写入的数据被修改。

    • 该块内存之后被其他设备写入新数据,写入过程中缓存中的数据同步至内存,导致内存中数据混乱。

  • 当其他设备写完数据后,需要使用 HB_SYS_MEM_CACHE_INVALIDATE 使缓存失效,否则CPU读取数据时可能读取到缓存中的旧数据。