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...