1. 程式人生 > >user space

user space

flags 權限 以及 use ESS 決定 說明 type file

在user space 的C/C++程序能夠能夠分配ION內存之前,它必須獲得訪問/dev/ion的權限。通過調用open("/dev/ion", O_RDONLY)就可獲得一個以handle形式返回的file descriptor,這個file descriptor用來代表一個ION client。註意,雖然傳給open一個O_RDONLY參數,但是你仍然可對這塊memory進行寫操作。在一個user process中最多有一個client。當有了一個client之後,就可以開始分配ION內存。為了分配內存,client必須填滿下面的ion_allocation_data結構,handle除外,因為它是output參數。其他三個參數分別指明內存的大小、對齊方式以及flags。flags是一個bit mask,用來說明可以從哪些heaps中分配想要的內存。其決定順序由系統啟動時,通過ion_device_add_heap()添加的heap順來決定。比如,ION_HEAP_TYPE_CARVEOUT是在ION_HEAP_TYPE_CONTIG之前被add的,那麽如果flags = ION_HEAP_TYPE_CONTIG | ION_HEAP_TYPE_CARVEOUT,那麽就是先嘗試分配ION_HEAP_TYPE_CARVEOUT類型的heap,如果不行,再嘗試分配ION_HEAP_TYPE_CONTIG類型的heap。

user space