2008年7月17日 星期四

vim 常用的指令與設定

記在這裡以免忘記
1. 改變顏色配置
colorscheme xxx (就是使用在 /usr/share/vim/vim71/color/xxx.vim 的檔案裡頭的配置)

2. 對程式碼內容的顏色設定
syn match cAAA display "aaa" --> 指定符合的字串. cAAA 表示符合的字串集合名稱

hi cAAA guifg=#3EFFE2 ctermfg=blue --> guifg是圖形化vim的前景顏色
ctermfg是終端機型態vim的前景顏色
guibg, ctermbg --> 背景顏色

2008年7月2日 星期三

linux kernel 裡的 container_of()

這個巨集能 根據某 member 指標 來找其所屬的 structure的指標.

定義在 include/linux/kernel.h , 裡面的註解如下:

/**
* container_of - cast a member of a structure out to the containing structure
*
* @ptr: the pointer to the member.
* @type: the type of the container struct this is embedded in.
* @member: the name of the member within the struct.
*
*/
#define container_of(ptr, type, member)
(
{
const typeof( ( (type *)0)->member ) *__mptr = (ptr);
(type *)( (char *)__mptr - offsetof(type,member) );
}
)

看來是利用 member 的位置直接減去其與 type 的 offset 來找出包含其 member 的結構的指標.
(個人的解讀, 有錯誤請高手指導)

可以參考高手 jserv 的blog:
http://blog.linux.org.tw/~jserv/archives/001399.html