原创 c靜態函數

C程序一直由下列部分組成:       1)正文段——CPU執行的機器指令部分;一個程序只有一個副本;只讀,防止程序由於意外事故而修改自身指令;  

原创 vim替換字符串

vi/vim 中可以使用 :s 命令來替換字符串。該命令有很多種不同細節使用方法,可以實現複雜的功能。     :s/vivian/sky/ 替換

原创 關於ARM協處理器CP15及MCR和MRC指令

在基於ARM的嵌入式應用系統中,存儲系統通常是通過系統控制協處理器CP15完成的。CP15包含16個32位的寄存器,其編號爲0~15。 訪問CP15寄存器的指令 MCR   ARM寄存器到協處理器寄存器的數據傳送 MRC   協處

原创 如何判斷是linux/windows庫,module或程序debug還是release

linux: readelf -S xxx.a |grep "\.debug*"   如果有輸出, 是debug, 沒有是release    windows: dumpbin /DEPENDENTS xx.dll, 結果輸出中有MS

原创 移植glib庫,procps到arm平臺

移植glib export OBJ_PATH=/home/Richard/windisks/e/apps/platform/dm81xx/usr e

原创 Linux中__init、__devinit等初始化宏

在內核裏經常可以看到__init,__devinit這樣的語句,這都是在init.h中定義的宏,gcc在編譯時會將被修飾的內容放到這些宏所代表的section。 其典型的定義如下: #define__init __section(

原创 Linux用戶進程內存泄露一種檢測方法

在Linux中,用戶進程在/proc/{pid}/status文件中記錄了該進程的內存使用實時情況。          *VmSize:       虛擬內存大小。       整個進程使用虛擬內存大小,是VmLib,VmExe,

原创 設置socket超時時間

struct timeval tv_out; tv_out.tv_sec = 10;//等待10秒 tv_out.tv_usec = 0; sets

原创 linux系統內存實際使用率

通過定期採集/proc文件系統內的meminfo文件來獲取當前內存使用情況。 proc文件系統是一個僞文件系統,它只存在內存當中,而不佔用外存空間

原创 set_task_state()與__set_task_state()的區別

#define__set_task_state(tsk, state_value) \ do { (tsk)->state =(state_value); } while (0) #defineset_task_state(tsk,

原创 xargs使用技巧

xargs 大多數 Linux命令都會產生輸出:文件列表、字符串列表等。但如果要使用其他某個命令並將前一個命令的輸出作爲參數該怎麼辦?例如,file命令顯示文件類型(可執行文件、ascii文本等);您可以處理輸出,使其僅顯示文件名,現

原创 統計項目代碼總行數

linux bash下,命令: find /home/zhangzhuan/netra-2.6.37/ (項目目錄) -name "*.*" |

原创 系統初始化函數集(subsys_initcall)和初始化段應用

系統初始化函數集(subsys_initcall)和初始化段應用 前言:前段時間做一個項目需要設計一個動態庫,並希望在加載庫的同時自動執行一些初始化動作,於是聯想到了linux內核衆子系統的初始化,於是研究之,並在過這程中發現了初始化段的

原创 清除arp

ip neigh flush dev eth0 ip link set arp off dev eth0 ip link set arp on de

原创 內存屏障

內存屏障的分類: 編譯器引起的內存屏障 緩存引起的內存屏障 亂序執行引起的內存屏障 1、編譯器引起的內存屏障: 我們都知道,從寄存器裏面取一個數要比從內存中取快的多,所以有時候編譯器爲了編譯出優化度更高的程序,就會把一些