摘要
調整 VMO 物件的串流大小。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_vmo_set_stream_size(zx_handle_t handle, uint64_t size);
說明
zx_vmo_set_stream_size()
會變更虛擬記憶體物件 (VMO) 的串流大小。
與 VMO 大小不同,串流大小不會四捨五入至下一個頁面大小邊界,因此串流大小不一定會與頁面對齊。您可以變更無法調整大小的 VMO 串流大小。您無法使用此函式變更 VMO 大小,但可以使用 zx_vmo_set_size()
變更 VMO 大小。
當串流大小增加時,從原始 (較小) 串流大小到 VMO 結尾的範圍會歸零。
當串流大小縮減時,新 (較小) 串流大小與 VMO 結尾之間的範圍會歸零。
如果 VMO 中已有任何資料位於這些範圍內,這項作業就會覆寫這些資料。
權限
handle 必須是 ZX_OBJ_TYPE_VMO
類型,且具有 ZX_RIGHT_WRITE
傳回值
zx_vmo_set_stream_size()
會在成功時傳回 ZX_OK
。如果失敗,系統會傳回負值錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
handle 不是有效的 handle。
ZX_ERR_WRONG_TYPE
handle 不是 VMO handle。
ZX_ERR_ACCESS_DENIED
handle 沒有 ZX_RIGHT_WRITE
權限。
ZX_ERR_OUT_OF_RANGE
要求的大小過大,或串流大小大於 VMO 大小。
ZX_ERR_NO_MEMORY
系統記憶體不足,導致失敗。
ZX_ERR_NOT_SUPPORTED
VMO 是實體或連續的。
另請參閱
zx_vmo_create()
zx_vmo_get_size()
zx_vmo_get_stream_size()
zx_vmo_set_size()
zx_vmo_op_range()
zx_vmo_read()
zx_vmo_write()