2014-02-19 15 views
2

我爲一家制作包含硬件加密引擎的SD存儲卡的公司工作。我們通過寫入/讀取到特殊文件來與加密模塊進行交互。如何在Android KitKat上使用外部SD卡上的O_DIRECT或O_SYNC

從KitKat開始,外部SD卡上似乎沒有支持O_DIRECT標誌。如果不支持O_DIRECT or O_SYNC,當我們從SD卡讀取加密引擎的響應時(通過我們的特殊文件),操作系統將返回緩存的數據。

是否有一個程序打開永久SD卡上的文件,讀/寫,與O_DIRECT or O_SYNC

+1

HTTPS://android.googlesource .com/platform/external/stressapptest/+/android-cts-4.2_r2%5E%5E!/和https://groups.google.com/forum/#!topic/android-kernel/5PWHui9cPcI:我會說它需要供應商的MMC驅動程序支持,並不總是在那裏。您可能可以像第一個鏈接一樣清空緩衝區以獲得預期的行爲 – zapl

+0

我爲基於SD的SE公司工作。 KitKat的O_DIRECT移除也正在消滅我們。 現在,這個問題沒有解決方案。 請告知您的客戶不要升級到KitKat。 – Trung

回答

0

如果您可以對手機進行root訪問,則可以寫入1到/ proc/sys/vm/drop_caches以清除頁面緩存(請參閱http://linux-mm.org/Drop_Caches)。在該命令之後,在SD卡上的下一次讀取將返回非高速緩存的數據。

股票的設備(在您沒有權限的/ proc/sys目錄/ VM/drop_caches)沒有在AOSP(你可以加上星)一個問題: https://code.google.com/p/android/issues/detail?id=67406

+0

這是股票設備。生根不是一種選擇,因爲您無法告訴所有客戶根植電話。 – Trung

相關問題