2012年12月17日 星期一

[Linux] 假裝自己很專業的ctags + function list

古人常說,如果要常常古狗別人,那不如古狗自己吧... (這三小)

先memo 一下 ctags + function list 的好好用組合

[ctags]

照慣例這是官網

安裝方法掏出超好用的 aptitude 搜尋ctags (會找到exuberant-ctags)
裝一裝~ 
沒了!!!

[function list]
這個就是好好用,vim 側邊叫出function list 讓你 ctrl+w w 兩下跳來跳去好東西
按照慣例這是官網

事實上這是一個vim plug-in, 參照巨集語言寫好的所以直接抓官網的
  • taglist.vim
這個檔案!!! 就是他  只需要他!!! 
放到
  • /etc/vim/plugin/taglist.vim   (plugin 目錄或許要自己手動建立)

完成~

這邊小小修改一下taglist.vim
個人習慣是右撇子看右邊,順便調整一下軟硬度阿寬度

右邊關鍵字: Tlist_Use_Right_Window = 1
寬度關鍵字: Tlist_WinWidth = 30

vim 的熱鍵習慣f9 也順便修改一下
  • FILE: /etc/vim/vimrc
加入下面這行
  • map <f9> :Tlist<CR>
在加一行來暴力搜尋ctags index file 比較安心
  • set tags=./tags;../tags;../../tags;../../../tags;../../../../tags;../../../../../tags;../../../../../tags;
不管放在上面三層四層五層 都挖出來....  (只有五層啦)

--
因為是巨集文件,所以直接複製程式碼存檔成taglist.vim 也可以,當然去官網就比較新囉。



2012年1月12日 星期四

[Linux] skb_reserve(2)

我們都知道
skb_reserve(2)

是為了把Ethernet 頭部對齊以增加效率(14+2)

但其實
dev_alloc_skb()...
這funciton 本身也預留了一個
NET_SKB_PAD 大小空間在 headroom,通常是
#define NET_SKB_PAD 32

所以skb_push推的時候...  不要再推過頭啦!!!(痛...

有時各家的driver 會預留不同大小的NET_SKB_PAD,一般是拿來做特製的Buffer Tag(如夾帶特別的Flag,又不想影響封包的內容),這樣skb_copy() 就會複製下去,自己修改skb struct 增加項目是比較麻煩的唷,這樣改要修改其他部分。
參照: __copy_skb_header()
即可知道

當然偷偷使用skb->cb欄位也可以,要注意沒有其他地方也偷用就是XD

--
另外
ip_header()
net_header()
兩個頭部取用的function 要記得
skb->network_header
skb->transport_header

已經init 好位置.... O__Q 棍...