mmap共享不及時更新問題

2021-08-20 02:28:37 字數 793 閱讀 3378

mips平台

裝置驅動中mmap實現如下:

static int shm_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)

如果不加下劃線兩行**,當應用程序,向共享的虛擬空間寫入資料時,資料不會及時更新到物理記憶體中。

因為應用程序中的虛擬空間和物理記憶體間還有cache。

但是相同的**在arm平台沒有問題,x86據說也沒問題(未驗證)、ppc據說平台也有問題(未驗證)。

下面分析來自網上:

works on x86 and arm, but fails on ppc.

你把使用者態的設成了no cache,直接讀物理記憶體。

vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

核心直接用的dcache,肯定又一段延遲才會寫到物理記憶體。

這樣使用者態自然讀的延遲了。

如果 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);把這個去掉的話。使用者態和核心態都用cache,雖然可能有cache aliasing的問題(使用者態cache line和核心cache line都指向的同一塊物理記憶體),但是一般體系都會自動解決這個alasing的,比如armv7就是自動處理vipt dcache aliasing的。

ppc的這個問題我也遇到過,硬體dma跟上層共享資料的話不會自動重新整理cache,當時我是在訪問之前,使用flush_cache_range重新整理了cache

解決ajax更新不及時的途徑

在電信做的小靈通簡訊訂餐系統中,有幾個頁面要用到 聯動下拉框,為了使使用者體驗更好,使伺服器緩解一定壓力,我決定使用ajax來完成這個功能,可是我卻粗心大意,漏掉了乙個環節,使得ajax從資料庫裡讀取資料不能及時更新 這是因為瀏覽器的快取機制.有4種方法可以解決這個問題 1.在請求的url後面加乙個...

hcharts更新問題

顯示 hcharts的顯示這裡就不多說了,基本官網上的例子都有 需要說明一點的是,在柱狀圖中表示時,可以使用座標的方式指定表示的橫座標,而不是只能像官網上一樣全部寫完 data可以寫成 1,5 2,8 其中1代表橫座標,5代表縱座標 更新 hcharts更新時series不會自動增加或減少,需要我們...

pip更新問題

更新命令 requirement already up to date 在pycharm的虛擬環境中,特別容易出現執行更新pip的命令後,提示要求己經更新,但實際上檢視版本還是沒更新成功的情況 直接使用pip install upgrade pip 這簡直是死迴圈了,使用python m pip i...