S100 OpenExplorer

# #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读取数据时可能读取到缓存中的旧数据。

页面目录