日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【读书笔记】Android的Ashmem机制学习

發(fā)布時間:2024/4/14 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【读书笔记】Android的Ashmem机制学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  Ashmem是安卓在linux基礎(chǔ)上添加的驅(qū)動模塊,就是說安卓有l(wèi)inux沒有的功能。

  Ashmem模塊在內(nèi)核層面上實現(xiàn),在運行時庫和應(yīng)用程序框架層提供了訪問接口。在運行時庫層提供的是C++接口,在應(yīng)用框架層提供的是java接口。

  

  首先從驅(qū)動模塊開始分析起,驅(qū)動模塊加載之后首先進(jìn)行misc_register來注冊一個ashmem_misc設(shè)備。這個設(shè)備文件就是"/dev/ashmem"。這個設(shè)備對用戶層提供了四個操作open、mmap、release、ioctl。但是沒有read和write操作,這兩個操作靠mmap來實現(xiàn)。

    • open():  對應(yīng)于ashmem_open,實質(zhì)上是創(chuàng)建一個ashmem_area結(jié)構(gòu)體,返回到文件結(jié)構(gòu)中。這么做的目的是打開ashmem
    • mmap():  對應(yīng)于ashmem_mmap,功能是在tmpfs中創(chuàng)建臨時文件,并且設(shè)置文件映射
    • ioctl(): ? ??? 對應(yīng)ashmem_mmap,通過swtich結(jié)構(gòu)提供不同的設(shè)置功能  

  這里有一個例子,就是打開匿名共享內(nèi)存文件的函數(shù)執(zhí)行流程。

  應(yīng)用層類:MemoryFile的構(gòu)造函數(shù)——》JNI函數(shù):native_open——》運行庫:ashmem_create_region——》Ashmem驅(qū)動的接口函數(shù):open、ioctl——》Ashmem驅(qū)動的函數(shù):ashmem_open、ashmem_ioctl

  注意這里的驅(qū)動接口open是對應(yīng)驅(qū)動中的ashmem_open的,ioctl是對應(yīng)ashmem_ioctl的。這個我個人感覺有點像Windows驅(qū)動的IRP主功能碼對應(yīng)有分發(fā)函數(shù)一樣,不知道這樣理解對不對0.0,當(dāng)然了Windows應(yīng)用層是是用固定的函數(shù)(如WriteFile等,然后由I/O管理器進(jìn)行操作的),是不能自定義的。

  

轉(zhuǎn)載于:https://www.cnblogs.com/Ox9A82/p/5605549.html

總結(jié)

以上是生活随笔為你收集整理的【读书笔记】Android的Ashmem机制学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。