[PATCH 010/196] Chinese: add translation of Codingstyle

From: Greg Kroah-Hartman
Date: Fri Jan 25 2008 - 02:16:44 EST


From: Zhang Le <r0bertz@xxxxxxxxxx>

Signed-off-by: Zhang Le <r0bertz@xxxxxxxxxx>
Signed-off-by: Li Yang <leo@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
---
Documentation/zh_CN/CodingStyle | 701 +++++++++++++++++++++++++++++++++++++++
1 files changed, 701 insertions(+), 0 deletions(-)
create mode 100644 Documentation/zh_CN/CodingStyle

diff --git a/Documentation/zh_CN/CodingStyle b/Documentation/zh_CN/CodingStyle
new file mode 100644
index 0000000..ecd9307
--- /dev/null
+++ b/Documentation/zh_CN/CodingStyle
@@ -0,0 +1,701 @@
+Chinese translated version of Documentation/CodingStyle
+
+If you have any comment or update to the content, please post to LKML directly.
+However, if you have problem communicating in English you can also ask the
+Chinese maintainer for help. Contact the Chinese maintainer, if this
+translation is outdated or there is problem with translation.
+
+Chinese maintainer: Zhang Le <r0bertz@xxxxxxxxxx>
+---------------------------------------------------------------------
+Documentation/CodingStyleç??中æ??ç¿»è¯?
+
+å¦?æ??æ?³è¯?论æ??æ?´æ?°æ?¬æ??ç??å??容ï¼?请ç?´æ?¥å??ä¿¡å?°LKMLã??å¦?æ??你使ç?¨è?±æ??交æµ?æ??å?°é?¾ç??è¯?ï¼?ä¹?å?¯
+以å??中æ??ç??ç»´æ?¤è??æ±?å?©ã??å¦?æ??æ?¬ç¿»è¯?æ?´æ?°ä¸?å??æ?¶æ??è??ç¿»è¯?å­?å?¨é?®é¢?ï¼?请è??系中æ??ç??ç»´æ?¤è??ã??
+
+中æ??ç??ç»´æ?¤è??ï¼? å¼ ä¹? Zhang Le <r0bertz@xxxxxxxxxx>
+中æ??ç??ç¿»è¯?è??ï¼? å¼ ä¹? Zhang Le <r0bertz@xxxxxxxxxx>
+中æ??ç??æ ¡è¯?è??ï¼? ç??è?ª Wang Cong <xiyou.wangcong@xxxxxxxxx>
+ wheelz <kernel.zeng@xxxxxxxxx>
+ 管�� Xudong Guan <xudong.guan@xxxxxxxxx>
+ Li Zefan <lizf@xxxxxxxxxxxxxx>
+ Wang Chen <wangchen@xxxxxxxxxxxxxx>
+以ä¸?为正æ??
+---------------------------------------------------------------------
+
+ Linuxå??核代ç ?é£?æ ¼
+
+è¿?æ?¯ä¸?个ç®?ç?­ç??æ??æ¡£ï¼?æ??è¿°äº?linuxå??æ ¸ç??é¦?é??代ç ?é£?æ ¼ã??代ç ?é£?æ ¼æ?¯å? äººè??å¼?ç??ï¼?è??ä¸?æ??
+ä¸?æ?¿æ??æ??æ??ç??è§?ç?¹å¼ºå? ç»?ä»»ä½?人ï¼?ä¸?è¿?è¿?é??æ??讲述ç??æ?¯æ??å¿?é¡»è¦?ç»´æ?¤ç??代ç ?æ??é?µå®?ç??é£?æ ¼ï¼?
+并ä¸?æ??ä¹?å¸?æ??ç»?大å¤?æ?°å?¶ä»?代ç ?ä¹?è?½é?µå®?è¿?个é£?æ ¼ã??请å?¨å??代ç ?æ?¶è?³å°?è??è??ä¸?ä¸?æ?¬æ??æ??è¿°ç??
+é£?æ ¼ã??
+
+é¦?å??ï¼?æ??建议你æ??å?°ä¸?份GNU代ç ?è§?è??ï¼?ç?¶å??ä¸?è¦?读å®?ã??ç?§äº?å®?ï¼?è¿?æ?¯ä¸?个å?·æ??é??大象å¾?æ?§
+æ??ä¹?ç??å?¨ä½?ã??
+
+ä¸?管æ??æ ·ï¼?ç?°å?¨æ??们å¼?å§?ï¼?
+
+
+ 第�章�缩�
+
+å?¶è¡¨ç¬¦æ?¯8个å­?符ï¼?æ??以缩è¿?ä¹?æ?¯8个å­?符ã??æ??äº?å¼?端è¿?å?¨è¯?å?¾å°?缩è¿?å??为4ï¼?ä¹?è?³2ï¼?个å­?符
+æ·±ï¼?è¿?å? ä¹?ç?¸å½?äº?å°?è¯?å°?å??å?¨ç??ç??å?¼å®?ä¹?为3ã??
+
+ç??ç?±ï¼?缩è¿?ç??å?¨é?¨æ??ä¹?å°±å?¨äº?æ¸?æ¥?ç??å®?ä¹?ä¸?个æ?§å?¶å??èµ·æ­¢äº?ä½?å¤?ã??å°¤å?¶æ?¯å½?ä½ ç?¯ç??ä½ ç??å±?å¹?
+è¿?ç»­ç??äº?20å°?æ?¶ä¹?å??ï¼?ä½ å°?ä¼?å??ç?°å¤§ä¸?ç?¹ç??缩è¿?ä¼?使你æ?´å®¹æ??å??辨缩è¿?ã??
+
+ç?°å?¨ï¼?æ??äº?人ä¼?æ?±æ?¨8个å­?符ç??缩è¿?ä¼?使代ç ?å??å?³è¾¹ç§»å?¨ç??太è¿?ï¼?å?¨80个å­?符ç??ç»?端å±?å¹?ä¸?
+å°±å¾?é?¾è¯»è¿?æ ·ç??代ç ?ã??è¿?个é?®é¢?ç??ç­?æ¡?æ?¯ï¼?å¦?æ??ä½ é??è¦?3级以ä¸?ç??缩è¿?ï¼?ä¸?管ç?¨ä½?ç§?æ?¹å¼?ä½ 
+ç??代ç ?å·²ç»?æ??é?®é¢?äº?ï¼?åº?该修正你ç??ç¨?åº?ã??
+
+ç®?è??è¨?ä¹?ï¼?8个å­?符ç??缩è¿?å?¯ä»¥è®©ä»£ç ?æ?´å®¹æ??é??读ï¼?è¿?æ??ä¸?个好å¤?æ?¯å½?ä½ ç??å?½æ?°åµ?å¥?太深ç??
+æ?¶å??å?¯ä»¥ç»?ä½ è­¦å??ã??ç??å¿?è¿?个警å??ã??
+
+å?¨switch语å?¥ä¸­æ¶?é?¤å¤?级缩è¿?ç??é¦?é??ç??æ?¹å¼?æ?¯è®©â??switchâ??å??ä»?å±?äº?å®?ç??â??caseâ??æ ?签对é½?äº?å??
+ä¸?å??ï¼?è??ä¸?è¦?â??两次缩è¿?â??â??caseâ??æ ?ç­¾ã??æ¯?å¦?ï¼?
+
+ switch (suffix) {
+ case 'G':
+ case 'g':
+ mem <<= 30;
+ break;
+ case 'M':
+ case 'm':
+ mem <<= 20;
+ break;
+ case 'K':
+ case 'k':
+ mem <<= 10;
+ /* fall through */
+ default:
+ break;
+ }
+
+
+ä¸?è¦?æ??å¤?个语å?¥æ?¾å?¨ä¸?è¡?é??ï¼?é?¤é??ä½ æ??ä»?ä¹?ä¸?西è¦?é??è??ï¼?
+
+ if (condition) do_this;
+ do_something_everytime;
+
+ä¹?ä¸?è¦?å?¨ä¸?è¡?é??æ?¾å¤?个èµ?å?¼è¯­å?¥ã??å??核代ç ?é£?æ ¼è¶?级ç®?å??ã??å°±æ?¯é?¿å??å?¯è?½å¯¼è?´å?«äººè¯¯è¯»ç??表
+è¾¾å¼?ã??
+
+é?¤äº?注é??ã??æ??æ¡£å??Kconfigä¹?å¤?ï¼?ä¸?è¦?使ç?¨ç©ºæ ¼æ?¥ç¼©è¿?ï¼?å??é?¢ç??ä¾?å­?æ?¯ä¾?å¤?ï¼?æ?¯æ??æ??为ä¹?ã??
+
+é??ç?¨ä¸?个好ç??ç¼?è¾?å?¨ï¼?ä¸?è¦?å?¨è¡?å°¾ç??空格ã??
+
+
+ 第äº?ç« ï¼?æ??é?¿ç??è¡?å??å­?符串æ??æ?£
+
+代ç ?é£?æ ¼ç??æ??ä¹?å°±å?¨äº?使ç?¨å¹³å¸¸ä½¿ç?¨ç??å·¥å?·æ?¥ç»´æ??代ç ?ç??å?¯è¯»æ?§å??å?¯ç»´æ?¤æ?§ã??
+
+æ¯?ä¸?è¡?ç??é?¿åº¦ç??é??å?¶æ?¯80å??ï¼?æ??们强ç??建议æ?¨é?µå®?è¿?个æ?¯ä¾?ã??
+
+é?¿äº?80å??ç??语å?¥è¦?æ??æ?£æ??æ??æ??ä¹?ç??ç??段ã??æ¯?个ç??段è¦?æ??æ?¾ç?­äº?å??æ?¥ç??语å?¥ï¼?è??ä¸?æ?¾ç½®ç??ä½?ç½®
+ä¹?æ??æ?¾ç??é? å?³ã??å??æ ·ç??è§?å??ä¹?é??ç?¨äº?æ??å¾?é?¿å??æ?°å??表ç??å?½æ?°å¤´ã??é?¿å­?符串ä¹?è¦?æ??æ?£æ??è¾?ç?­ç??
+å­?符串ã??å?¯ä¸?ç??ä¾?å¤?æ?¯è¶?è¿?80å??å?¯ä»¥å¤§å¹?度æ??é«?å?¯è¯»æ?§å¹¶ä¸?ä¸?ä¼?é??è??ä¿¡æ?¯ç??æ??å?µã??
+
+void fun(int a, int b, int c)
+{
+ if (condition)
+ printk(KERN_WARNING "Warning this is a long printk with "
+ "3 parameters a: %u b: %u "
+ "c: %u \n", a, b, c);
+ else
+ next_statement;
+}
+
+ 第ä¸?ç« ï¼?大æ?¬å?·å??空格ç??æ?¾ç½®
+
+C语è¨?é£?格中å?¦å¤?ä¸?个常è§?é?®é¢?æ?¯å¤§æ?¬å?·ç??æ?¾ç½®ã??å??缩è¿?大å°?ä¸?å??ï¼?é??æ?©æ??å¼?ç?¨æ??ç§?æ?¾ç½®ç­?
+ç?¥å¹¶æ²¡æ??å¤?å°?æ??æ?¯ä¸?ç??å??å? ï¼?ä¸?è¿?é¦?é??ç??æ?¹å¼?ï¼?å°±å??Kernighanå??Ritchieå±?示ç»?æ??们ç??ï¼?æ?¯
+æ??èµ·å§?大æ?¬å?·æ?¾å?¨è¡?å°¾ï¼?è??æ??ç»?æ??大æ?¬å?·æ?¾å?¨è¡?é¦?ï¼?æ??以ï¼?
+
+ if (x is true) {
+ we do y
+ }
+
+è¿?é??ç?¨äº?æ??æ??ç??é??å?½æ?°è¯­å?¥å??ï¼?ifã??switchã??forã??whileã??doï¼?ã??æ¯?å¦?ï¼?
+
+ switch (action) {
+ case KOBJ_ADD:
+ return "add";
+ case KOBJ_REMOVE:
+ return "remove";
+ case KOBJ_CHANGE:
+ return "change";
+ default:
+ return NULL;
+ }
+
+ä¸?è¿?ï¼?æ??ä¸?个ä¾?å¤?ï¼?é?£å°±æ?¯å?½æ?°ï¼?å?½æ?°ç??èµ·å§?大æ?¬å?·æ?¾ç½®äº?ä¸?ä¸?è¡?ç??å¼?头ï¼?æ??以ï¼?
+
+ int function(int x)
+ {
+ body of function
+ }
+
+å?¨ä¸?ç??ç??å¼?端å?¯è?½ä¼?æ?±æ?¨è¿?个ä¸?ä¸?è?´æ?§æ?¯â?¦â?¦å??â?¦â?¦ä¸?ä¸?è?´ç??ï¼?ä¸?è¿?æ??æ??æ??ç»´å?¥å?¨ç??人é?½ç?¥é??ï¼?
+aï¼?K&Ræ?¯_正确ç??_ï¼?并ä¸?ï¼?bï¼?K&Ræ?¯æ­£ç¡®ç??ã??æ­¤å¤?ï¼?ä¸?管æ??æ ·å?½æ?°é?½æ?¯ç?¹æ®?ç??ï¼?å?¨C语è¨?中
+ï¼?å?½æ?°æ?¯ä¸?è?½åµ?å¥?ç??ï¼?ã??
+
+注æ??ç»?æ??大æ?¬å?·ç?¬è?ªå? æ?®ä¸?è¡?ï¼?é?¤é??å®?å??é?¢è·?ç??å??ä¸?个语å?¥ç??å?©ä½?é?¨å??ï¼?ä¹?å°±æ?¯do语å?¥ä¸­ç??
+â??whileâ??æ??è??if语å?¥ä¸­ç??â??elseâ??ï¼?å??è¿?æ ·ï¼?
+
+ do {
+ body of do-loop
+ } while (condition);
+
+å??
+
+ if (x == y) {
+ ..
+ } else if (x > y) {
+ ...
+ } else {
+ ....
+ }
+
+ç??ç?±ï¼?K&Rã??
+
+ä¹?请注æ??è¿?ç§?大æ?¬å?·ç??æ?¾ç½®æ?¹å¼?ä¹?è?½ä½¿ç©ºï¼?æ??è??å·®ä¸?å¤?空ç??ï¼?è¡?ç??æ?°é??æ??å°?å??ï¼?å??æ?¶ä¸?失å?¯
+读æ?§ã??å? æ­¤ï¼?ç?±äº?ä½ ç??å±?å¹?ä¸?ç??æ?°è¡?æ?¯ä¸?å?¯å??ç??èµ?æº?ï¼?æ?³æ?³25è¡?ç??ç»?端å±?å¹?ï¼?ï¼?ä½ å°?ä¼?æ??æ?´
+å¤?ç??空è¡?æ?¥æ?¾ç½®æ³¨é??ã??
+
+å½?å?ªæ??ä¸?个å??ç?¬ç??语å?¥ç??æ?¶å??ï¼?ä¸?ç?¨å? ä¸?å¿?è¦?ç??大æ?¬å?·ã??
+
+if (condition)
+ action();
+
+è¿?ç?¹ä¸?é??ç?¨äº?æ?¬èº«ä¸ºæ??个æ?¡ä»¶è¯­å?¥ç??ä¸?个å??æ?¯ç??å??ç?¬è¯­å?¥ã??è¿?æ?¶é??è¦?å?¨ä¸¤ä¸ªå??æ?¯é??é?½ä½¿ç?¨å¤§
+æ?¬å?·ã??
+
+if (condition) {
+ do_this();
+ do_that();
+} else {
+ otherwise();
+}
+
+ 3.1�空格
+
+Linuxå??æ ¸ç??空格使ç?¨æ?¹å¼?ï¼?主è¦?ï¼?å??å?³äº?å®?æ?¯ç?¨äº?å?½æ?°è¿?æ?¯å?³é?®å­?ã??ï¼?大å¤?æ?°ï¼?å?³é?®å­?å??
+è¦?å? ä¸?个空格ã??å?¼å¾?注æ??ç??ä¾?å¤?æ?¯sizeofã??typeofã??alignofå??__attribute__ï¼?è¿?äº?å?³é?®å­?
+æ??äº?ç¨?度ä¸?ç??èµ·æ?¥æ?´å??å?½æ?°ï¼?å®?们å?¨Linuxé??ä¹?常常伴é??å°?æ?¬å?·è??使ç?¨ï¼?尽管å?¨C语è¨?é??è¿?æ ·
+ç??å°?æ?¬å?·ä¸?æ?¯å¿?é??ç??ï¼?å°±å??â??struct fileinfo infoâ??声æ??è¿?å??ç??â??sizeof infoâ??ï¼?ã??
+
+æ??以å?¨è¿?äº?å?³é?®å­?ä¹?å??æ?¾ä¸?个空格ï¼?
+ if, switch, case, for, do, while
+ä½?æ?¯ä¸?è¦?å?¨sizeofã??typeofã??alignofæ??è??__attribute__è¿?äº?å?³é?®å­?ä¹?å??æ?¾ç©ºæ ¼ã??ä¾?å¦?ï¼?
+ s = sizeof(struct file);
+
+ä¸?è¦?å?¨å°?æ?¬å?·é??ç??表达å¼?两侧å? ç©ºæ ¼ã??è¿?æ?¯ä¸?个å??ä¾?ï¼?
+
+ s = sizeof( struct file );
+
+å½?声æ??æ??é??ç±»å??æ??è??è¿?å??æ??é??ç±»å??ç??å?½æ?°æ?¶ï¼?â??*â??ç??é¦?é??使ç?¨æ?¹å¼?æ?¯ä½¿ä¹?é? è¿?å??é??å??æ??è??å?½
+æ?°å??ï¼?è??ä¸?æ?¯é? è¿?ç±»å??å??ã??ä¾?å­?ï¼?
+
+ char *linux_banner;
+ unsigned long long memparse(char *ptr, char **retptr);
+ char *match_strdup(substring_t *s);
+
+å?¨å¤§å¤?æ?°äº?å??å??ä¸?å??æ??ä½?符两侧使ç?¨ä¸?个空格ï¼?ä¾?å¦?ä¸?é?¢æ??æ??è¿?äº?æ??ä½?符ï¼?
+
+ = + - < > * / % | & ^ <= >= == != ? :
+
+ä½?æ?¯ä¸?å??æ??ä½?符å??ä¸?è¦?å? ç©ºæ ¼ï¼?
+ & * + - ~ ! sizeof typeof alignof __attribute__ defined
+
+å??ç¼?è?ªå? å??è?ªå??ä¸?å??æ??ä½?符å??ä¸?å? ç©ºæ ¼ï¼?
+ ++ --
+
+å??ç¼?è?ªå? å??è?ªå??ä¸?å??æ??ä½?符å??ä¸?å? ç©ºæ ¼ï¼?
+ ++ --
+
+â??.â??å??â??->â??ç»?æ??ä½?æ??å??æ??ä½?符å??å??ä¸?å? ç©ºæ ¼ã??
+
+ä¸?è¦?å?¨è¡?å°¾ç??空ç?½ã??æ??äº?å?¯ä»¥è?ªå?¨ç¼©è¿?ç??ç¼?è¾?å?¨ä¼?å?¨æ?°è¡?ç??è¡?é¦?å? å?¥é??é??ç??空ç?½ï¼?ç?¶å??ä½ 
+å°±å?¯ä»¥ç?´æ?¥å?¨é?£ä¸?è¡?è¾?å?¥ä»£ç ?ã??ä¸?è¿?å??å¦?ä½ æ??å??没æ??å?¨é?£ä¸?è¡?è¾?å?¥ä»£ç ?ï¼?æ??äº?ç¼?è¾?å?¨å°±ä¸?
+ä¼?移é?¤å·²ç»?å? å?¥ç??空ç?½ï¼?å°±å??ä½ æ??æ??ç??ä¸?ä¸?个å?ªæ??空ç?½ç??è¡?ã??å??å?«è¡?尾空ç?½ç??è¡?å°±è¿?样产
+ç??äº?ã??
+
+å½?gitå??ç?°è¡¥ä¸?å??å?«äº?è¡?尾空ç?½ç??æ?¶å??ä¼?è­¦å??ä½ ï¼?并ä¸?å?¯ä»¥åº?ä½ ç??è¦?æ±?å?»æ??è¡?尾空ç?½ï¼?ä¸?è¿?
+å¦?æ??ä½ æ?¯æ­£å?¨æ??ä¸?ç³»å??è¡¥ä¸?ï¼?è¿?æ ·å??ä¼?导è?´å??é?¢ç??è¡¥ä¸?失败ï¼?å? ä¸ºä½ æ?¹å??äº?è¡¥ä¸?ç??ä¸?ä¸?æ??ã??
+
+
+ 第å??ç« ï¼?å?½å??
+
+Cæ?¯ä¸?个ç®?æ?´ç??语è¨?ï¼?ä½ ç??å?½å??ä¹?åº?该è¿?æ ·ã??å??Modula-2å??Pascalç¨?åº?å??ä¸?å??ï¼?Cç¨?åº?å??ä¸?使
+ç?¨ç±»ä¼¼ThisVariableIsATemporaryCounterè¿?æ ·å??丽ç??å??å­?ã??Cç¨?åº?å??ä¼?称é?£ä¸ªå??é??为â??tmpâ??
+ï¼?è¿?æ ·å??èµ·æ?¥ä¼?æ?´å®¹æ??ï¼?è??ä¸?è?³å°?ä¸?ä¼?令å?¶é?¾äº?ç??解ã??
+
+ä¸?è¿?ï¼?è?½ç?¶æ··ç?¨å¤§å°?å??ç??å??å­?æ?¯ä¸?æ??å?¡ä½¿ç?¨ç??ï¼?ä½?æ?¯å?¨å±?å??é??è¿?æ?¯é??è¦?ä¸?个å?·æ??è¿°æ?§ç??å??å­?
+ã??称ä¸?个å?¨å±?å?½æ?°ä¸ºâ??fooâ??æ?¯ä¸?个é?¾ä»¥é¥¶æ??ç??é??误ã??
+
+å?¨å±?å??é??ï¼?å?ªæ??å½?ä½ ç??æ­£é??è¦?å®?们ç??æ?¶å??å??ç?¨å®?ï¼?é??è¦?æ??ä¸?个å?·æ??è¿°æ?§ç??å??å­?ï¼?å°±å??å?¨å±?å?½
+æ?°ã??å¦?æ??ä½ æ??ä¸?个å?¯ä»¥è®¡ç®?æ´»å?¨ç?¨æ?·æ?°é??ç??å?½æ?°ï¼?ä½ åº?该å?«å®?â??count_active_users()â??æ??è??
+类似ç??å??å­?ï¼?ä½ ä¸?åº?该å?«å®?â??cntuser()â??ã??
+
+å?¨å?½æ?°å??中å??å?«å?½æ?°ç±»å??ï¼?æ??è°?ç??å??ç??å?©å?½å??æ³?ï¼?æ?¯è??å­?å?ºäº?é?®é¢?â??â??ç¼?è¯?å?¨ç?¥é??é?£äº?ç±»å??è??
+ä¸?è?½å¤?æ£?æ?¥é?£äº?ç±»å??ï¼?è¿?æ ·å??å?ªè?½æ??ç¨?åº?å??å¼?ç³?æ¶?äº?ã??é?¾æ?ªå¾®è½¯æ?»æ?¯å?¶é? å?ºæ??é?®é¢?ç??ç¨?åº?ã??
+
+æ?¬å?°å??é??å??åº?该ç®?ç?­ï¼?è??ä¸?è?½å¤?表达ç?¸å?³ç??å?«ä¹?ã??å¦?æ??ä½ æ??ä¸?äº?é??æ?ºç??æ?´æ?°å??ç??循ç?¯è®¡æ?°å?¨
+ï¼?å®?åº?该被称为â??iâ??ã??å?«å®?â??loop_counterâ??并æ? ç??å¤?ï¼?å¦?æ??å®?没æ??被误解ç??å?¯è?½ç??è¯?ã??类似
+ç??ï¼?â??tmpâ??å?¯ä»¥ç?¨æ?¥ç§°å?¼ä»»æ??ç±»å??ç??临æ?¶å??é??ã??
+
+å¦?æ??ä½ æ??æ··æ·?äº?ä½ ç??æ?¬å?°å??é??å??ï¼?ä½ å°±é??å?°å?¦ä¸?个é?®é¢?äº?ï¼?å?«å??å?½æ?°å¢?é?¿è?·å°?è??失衡综å??ç??
+ã??请ç??第å?­ç« ï¼?å?½æ?°ï¼?ã??
+
+
+ 第�章�Typedef
+
+ä¸?è¦?使ç?¨ç±»ä¼¼â??vps_tâ??ä¹?ç±»ç??ä¸?西ã??
+
+对ç»?æ??ä½?å??æ??é??使ç?¨typedefæ?¯ä¸?个é??误ã??å½?ä½ å?¨ä»£ç ?é??ç??å?°ï¼?
+
+ vps_t a;
+
+è¿?代表ä»?ä¹?æ??æ??å?¢ï¼?
+
+ç?¸å??ï¼?å¦?æ??æ?¯è¿?æ ·
+
+ struct virtual_container *a;
+
+ä½ å°±ç?¥é??â??aâ??æ?¯ä»?ä¹?äº?ã??
+
+å¾?å¤?人认为typedefâ??è?½æ??é«?å?¯è¯»æ?§â??ã??å®?é??ä¸?æ?¯è¿?æ ·ç??ã??å®?们å?ªå?¨ä¸?å??æ??å?µä¸?æ??ç?¨ï¼?
+
+ (a) å®?å?¨ä¸?é??æ??ç??对象ï¼?è¿?ç§?æ??å?µä¸?è¦?主å?¨ä½¿ç?¨typedefæ?¥é??è??è¿?个对象å®?é??ä¸?æ?¯ä»?ä¹?ï¼?ã??
+
+ ä¾?å¦?ï¼?â??pte_tâ??ç­?ä¸?é??æ??对象ï¼?ä½ å?ªè?½ç?¨å??é??ç??访é?®å?½æ?°æ?¥è®¿é?®å®?们ã??
+
+ 注æ??ï¼?ä¸?é??æ??æ?§å??â??访é?®å?½æ?°â??æ?¬èº«æ?¯ä¸?好ç??ã??æ??们使ç?¨pte_tç­?ç±»å??ç??å??å? å?¨äº?ç??ç??æ?¯
+ å®?å?¨æ²¡æ??ä»»ä½?å?±ç?¨ç??å?¯è®¿é?®ä¿¡æ?¯ã??
+
+ (b) æ¸?æ¥?ç??æ?´æ?°ç±»å??ï¼?å¦?æ­¤ï¼?è¿?å±?æ?½è±¡å°±å?¯ä»¥å¸®å?©æ¶?é?¤å?°åº?æ?¯â??intâ??è¿?æ?¯â??longâ??ç??æ··æ·?ã??
+
+ u8/u16/u32æ?¯å®?å?¨æ²¡æ??é?®é¢?ç??typedefï¼?ä¸?è¿?å®?们æ?´ç¬¦å??ç±»å?«(d)è??ä¸?æ?¯è¿?é??ã??
+
+ å??次注æ??ï¼?è¦?è¿?æ ·å??ï¼?å¿?é¡»äº?å?ºæ??å? ã??å¦?æ??æ??个å??é??æ?¯â??unsigned longâ??ï¼?é?£ä¹?没æ??å¿?è¦?
+
+ typedef unsigned long myflags_t;
+
+ ä¸?è¿?å¦?æ??æ??ä¸?个æ??ç¡®ç??å??å? ï¼?æ¯?å¦?å®?å?¨æ??ç§?æ??å?µä¸?å?¯è?½ä¼?æ?¯ä¸?个â??unsigned intâ??è??å?¨
+ å?¶ä»?æ??å?µä¸?å?¯è?½ä¸ºâ??unsigned longâ??ï¼?é?£ä¹?å°±ä¸?è¦?ç?¹è±«ï¼?请å?¡å¿?使ç?¨typedefã??
+
+ (c) å½?你使ç?¨sparseæ??å­?é?¢ç??å??建ä¸?个æ?°ç±»å??æ?¥å??ç±»å??æ£?æ?¥ç??æ?¶å??ã??
+
+ (d) å??æ ?å??C99ç±»å??ç?¸å??ç??ç±»å??ï¼?å?¨æ??äº?ä¾?å¤?ç??æ??å?µä¸?ã??
+
+ è?½ç?¶è®©ç?¼ç??å??è??ç­?æ?¥é??åº?æ?°ç??æ ?å??ç±»å??æ¯?å¦?â??uint32_tâ??ä¸?é??è¦?è?±å¾?å¤?æ?¶é?´ï¼?å?¯æ?¯æ??äº?
+ 人ä»?ç?¶æ??ç»?使ç?¨å®?们ã??
+
+ å? æ­¤ï¼?Linuxç?¹æ??ç??ç­?å??äº?æ ?å??ç±»å??ç??â??u8/u16/u32/u64â??ç±»å??å??å®?们ç??æ??符å?·ç±»å??æ?¯è¢«
+ å??许ç??â??â??尽管å?¨ä½ è?ªå·±ç??æ?°ä»£ç ?中ï¼?å®?们ä¸?æ?¯å¼ºå?¶è¦?æ±?è¦?使ç?¨ç??ã??
+
+ å½?ç¼?è¾?å·²ç»?使ç?¨äº?æ??个类å??é??ç??å·²æ??代ç ?æ?¶ï¼?ä½ åº?该é?µå¾ªé?£äº?代ç ?中已ç»?å??å?ºç??é??æ?©ã??
+
+ (e) å?¯ä»¥å?¨ç?¨æ?·ç©ºé?´å®?å?¨ä½¿ç?¨ç??ç±»å??ã??
+
+ å?¨æ??äº?ç?¨æ?·ç©ºé?´å?¯è§?ç??ç»?æ??ä½?é??ï¼?æ??们ä¸?è?½è¦?æ±?C99ç±»å??è??ä¸?ä¸?è?½ç?¨ä¸?é?¢æ??å?°ç??â??u32â??
+ ç±»å??ã??å? æ­¤ï¼?æ??们å?¨ä¸?ç?¨æ?·ç©ºé?´å?±äº«ç??æ??æ??ç»?æ??ä½?中使ç?¨__u32å??类似ç??ç±»å??ã??
+
+å?¯è?½è¿?æ??å?¶ä»?ç??æ??å?µï¼?ä¸?è¿?å?ºæ?¬ç??è§?å??æ?¯æ°¸è¿?ä¸?è¦?使ç?¨typedefï¼?é?¤é??ä½ å?¯ä»¥æ??ç¡®ç??åº?ç?¨ä¸?
+è¿°æ??个è§?å??中ç??ä¸?个ã??
+
+æ?»ç??æ?¥è¯´ï¼?å¦?æ??ä¸?个æ??é??æ??è??ä¸?个ç»?æ??ä½?é??ç??å??ç´ å?¯ä»¥å??ç??ç??被ç?´æ?¥è®¿é?®å?°ï¼?é?£ä¹?å®?们就ä¸?
+åº?该æ?¯ä¸?个typedefã??
+
+
+ 第�章���
+
+å?½æ?°åº?该ç®?ç?­è??æ¼?亮ï¼?并ä¸?å?ªå®?æ??ä¸?件äº?æ??ã??å?½æ?°åº?该å?¯ä»¥ä¸?å±?æ??è??两å±?æ?¾ç¤ºå®?ï¼?æ??们é?½ç?¥
+é??ISO/ANSIå±?å¹?大å°?æ?¯80x24ï¼?ï¼?å?ªå??ä¸?件äº?æ??ï¼?è??ä¸?æ??å®?å??好ã??
+
+ä¸?个å?½æ?°ç??æ??大é?¿åº¦æ?¯å??该å?½æ?°ç??å¤?æ??度å??缩è¿?级æ?°æ??å??æ¯?ç??ã??æ??以ï¼?å¦?æ??ä½ æ??ä¸?个ç??论ä¸?
+å¾?ç®?å??ç??å?ªæ??ä¸?个å¾?é?¿ï¼?ä½?æ?¯ç®?å??ï¼?ç??case语å?¥ç??å?½æ?°ï¼?è??ä¸?ä½ é??è¦?å?¨æ¯?个caseé??å??å¾?å¤?å¾?
+å°?ç??äº?æ??ï¼?è¿?æ ·ç??å?½æ?°å°½ç®¡å¾?é?¿ï¼?ä½?ä¹?æ?¯å?¯ä»¥ç??ã??
+
+ä¸?è¿?ï¼?å¦?æ??ä½ æ??ä¸?个å¤?æ??ç??å?½æ?°ï¼?è??ä¸?ä½ æ??ç??ä¸?个天å??ä¸?æ?¯å¾?é«?ç??é«?中ä¸?年级学ç??å?¯è?½ç??è?³
+æ??ä¸?æ¸?æ¥?è¿?个å?½æ?°ç??ç?®ç??ï¼?ä½ åº?该严格ç??é?µå®?å??é?¢æ??å?°ç??é?¿åº¦é??å?¶ã??使ç?¨è¾?å?©å?½æ?°ï¼?并为ä¹?
+å??个å?·æ??è¿°æ?§ç??å??å­?ï¼?å¦?æ??ä½ è§?å¾?å®?们ç??æ?§è?½å¾?é??è¦?ç??è¯?ï¼?å?¯ä»¥è®©ç¼?è¯?å?¨å??è??å®?们ï¼?è¿?æ ·ç??
+æ??æ??å¾?å¾?ä¼?æ¯?ä½ å??ä¸?个å¤?æ??å?½æ?°ç??æ??æ??è¦?好ã??ï¼?
+
+å?½æ?°ç??å?¦å¤?ä¸?个衡é??æ ?å??æ?¯æ?¬å?°å??é??ç??æ?°é??ã??æ­¤æ?°é??ä¸?åº?è¶?è¿?5ï¼?10个ï¼?å?¦å??ä½ ç??å?½æ?°å°±æ??
+é?®é¢?äº?ã??é??æ?°è??è??ä¸?ä¸?ä½ ç??å?½æ?°ï¼?æ??å®?å??æ??æ??æ?´å°?ç??å?½æ?°ã??人ç??大è??ä¸?è?¬å?¯ä»¥è½»æ?¾ç??å??æ?¶è·?
+踪7个ä¸?å??ç??äº?ç?©ï¼?å¦?æ??å??å¢?å¤?ç??è¯?ï¼?å°±ä¼?ç³?æ¶?äº?ã??å?³ä¾¿ä½ è?ªé¢?è¿?人ï¼?ä½ ä¹?å?¯è?½ä¼?è®°ä¸?æ¸?ä½ 2
+个æ??æ??å??å??è¿?ç??äº?æ??ã??
+
+å?¨æº?æ??件é??ï¼?使ç?¨ç©ºè¡?é??å¼?ä¸?å??ç??å?½æ?°ã??å¦?æ??该å?½æ?°é??è¦?被导å?ºï¼?å®?ç??EXPORT*å®?åº?该紧贴
+å?¨å®?ç??ç»?æ??大æ?¬å?·ä¹?ä¸?ã??æ¯?å¦?ï¼?
+
+int system_is_up(void)
+{
+ return system_state == SYSTEM_RUNNING;
+}
+EXPORT_SYMBOL(system_is_up);
+
+å?¨å?½æ?°å??å??中ï¼?å??å?«å?½æ?°å??å??å®?们ç??æ?°æ?®ç±»å??ã??è?½ç?¶C语è¨?é??没æ??è¿?æ ·ç??è¦?æ±?ï¼?å?¨Linuxé??è¿?
+æ?¯æ??å?¡ç??å??æ³?ï¼?å? ä¸ºè¿?æ ·å?¯ä»¥å¾?ç®?å??ç??ç»?读è??æ??ä¾?æ?´å¤?ç??æ??ä»·å?¼ç??ä¿¡æ?¯ã??
+
+
+ 第ä¸?ç« ï¼?é??中ç??å?½æ?°é??å?ºé??å¾?
+
+è?½ç?¶è¢«æ??äº?人声称已ç»?è¿?æ?¶ï¼?ä½?æ?¯goto语å?¥ç??ç­?ä»·ç?©è¿?æ?¯ç»?常被ç¼?è¯?å?¨æ??使ç?¨ï¼?å?·ä½?å½¢å¼?æ?¯
+æ? æ?¡ä»¶è·³è½¬æ??令ã??
+
+å½?ä¸?个å?½æ?°ä»?å¤?个ä½?ç½®é??å?ºå¹¶ä¸?é??è¦?å??ä¸?äº?é??ç?¨ç??æ¸?ç??å·¥ä½?ç??æ?¶å??ï¼?gotoç??好å¤?å°±æ?¾ç?°å?ºæ?¥
+äº?ã??
+
+ç??ç?±æ?¯ï¼?
+
+- æ? æ?¡ä»¶è¯­å?¥å®¹æ??ç??解å??è·?踪
+- åµ?å¥?ç¨?度å??å°?
+- å?¯ä»¥é?¿å??ç?±äº?ä¿®æ?¹æ?¶å¿?è®°æ?´æ?°æ??个å??ç?¬ç??é??å?ºç?¹è??导è?´ç??é??误
+- å??è½»äº?ç¼?è¯?å?¨ç??å·¥ä½?ï¼?æ? é??å? é?¤å??ä½?代ç ?;)
+
+int fun(int a)
+{
+ int result = 0;
+ char *buffer = kmalloc(SIZE);
+
+ if (buffer == NULL)
+ return -ENOMEM;
+
+ if (condition1) {
+ while (loop1) {
+ ...
+ }
+ result = 1;
+ goto out;
+ }
+ ...
+out:
+ kfree(buffer);
+ return result;
+}
+
+ 第å?«ç« ï¼?注é??
+
+注é??æ?¯å¥½ç??ï¼?ä¸?è¿?æ??è¿?度注é??ç??å?±é?©ã??æ°¸è¿?ä¸?è¦?å?¨æ³¨é??é??解é??ä½ ç??代ç ?æ?¯å¦?ä½?è¿?ä½?ç??ï¼?æ?´å¥½
+ç??å??æ³?æ?¯è®©å?«äººä¸?ç??ä½ ç??代ç ?å°±å?¯ä»¥æ??ç?½ï¼?解é??å??ç??å¾?å·®ç??代ç ?æ?¯æµªè´¹æ?¶é?´ã??
+
+ä¸?è?¬ç??ï¼?ä½ æ?³è¦?ä½ ç??注é??å??è¯?å?«äººä½ ç??代ç ?å??äº?ä»?ä¹?ï¼?è??ä¸?æ?¯æ??ä¹?å??ç??ã??ä¹?请你ä¸?è¦?æ??注é??
+æ?¾å?¨ä¸?个å?½æ?°ä½?å??é?¨ï¼?å¦?æ??å?½æ?°å¤?æ??å?°ä½ é??è¦?ç?¬ç«?ç??注é??å?¶ä¸­ç??ä¸?é?¨å??ï¼?ä½ å¾?å?¯è?½é??è¦?å??å?°
+第å?­ç« ç??ä¸?ç??ã??ä½ å?¯ä»¥å??ä¸?äº?å°?注é??æ?¥æ³¨æ??æ??è­¦å??æ??äº?å¾?è?ªæ??ï¼?æ??è??槽ç³?ï¼?ç??å??æ³?ï¼?ä½?ä¸?è¦?
+å? å¤ªå¤?ã??ä½ åº?该å??ç??ï¼?æ?¯æ??注é??æ?¾å?¨å?½æ?°ç??头é?¨ï¼?å??è¯?人们å®?å??äº?ä»?ä¹?ï¼?ä¹?å?¯ä»¥å? ä¸?å®?å??è¿?
+äº?äº?æ??ç??å??å? ã??
+
+å½?注é??å??æ ¸APIå?½æ?°æ?¶ï¼?请使ç?¨kernel-docæ ¼å¼?ã??请ç??
+Documentation/kernel-doc-nano-HOWTO.txtå??scripts/kernel-doc以è?·å¾?详ç»?ä¿¡æ?¯ã??
+
+Linuxç??注é??é£?æ ¼æ?¯C89â??/* ... */â??é£?æ ¼ã??ä¸?è¦?使ç?¨C99é£?æ ¼â??// ...â??注é??ã??
+
+é?¿ï¼?å¤?è¡?ï¼?ç??é¦?é??注é??é£?æ ¼æ?¯ï¼?
+
+ /*
+ * This is the preferred style for multi-line
+ * comments in the Linux kernel source code.
+ * Please use it consistently.
+ *
+ * Description: A column of asterisks on the left side,
+ * with beginning and ending almost-blank lines.
+ */
+
+注é??æ?°æ?®ä¹?æ?¯å¾?é??è¦?ç??ï¼?ä¸?管æ?¯å?ºæ?¬ç±»å??è¿?æ?¯è¡?ç??ç±»å??ã??为äº?æ?¹ä¾¿å®?ç?°è¿?ä¸?ç?¹ï¼?æ¯?ä¸?è¡?åº?å?ª
+声æ??ä¸?个æ?°æ?®ï¼?ä¸?è¦?使ç?¨é??å?·æ?¥ä¸?次声æ??å¤?个æ?°æ?®ï¼?ã??è¿?æ ·ä½ å°±æ??空é?´æ?¥ä¸ºæ¯?个æ?°æ?®å??ä¸?段
+å°?注é??æ?¥è§£é??å®?们ç??ç?¨é??äº?ã??
+
+
+ 第ä¹?ç« ï¼?ä½ å·²ç»?æ??äº?æ??å¼?ç³?äº?
+
+è¿?没ä»?ä¹?ï¼?æ??们é?½æ?¯è¿?æ ·ã??å?¯è?½ä½ ç??使ç?¨äº?å¾?é?¿æ?¶é?´Unixç??æ??å??å·²ç»?å??è¯?ä½ â??GNU emacsâ??è?½
+è?ªå?¨å¸®ä½ æ ¼å¼?å??Cæº?代ç ?ï¼?è??ä¸?ä½ ä¹?注æ??å?°äº?ï¼?ç¡®å®?æ?¯è¿?æ ·ï¼?ä¸?è¿?å®?æ??使ç?¨ç??é»?认å?¼å??æ??们
+æ?³è¦?ç??ç?¸å?»ç??è¿?ï¼?å®?é??ä¸?ï¼?ç??è?³æ¯?é??æ?ºæ??ç??è¿?è¦?å·®â??â??æ? æ?°ä¸ªç?´å­?å?¨GNU emacsé??æ??å­?æ°¸è¿?ä¸?
+ä¼?å??é? å?ºä¸?个好ç¨?åº?ï¼?ï¼?è¯?注ï¼?请å??è??Infinite Monkey Theoremï¼?
+
+æ??以你è¦?ä¹?æ?¾å¼?GNU emacsï¼?è¦?ä¹?æ?¹å??å®?让å®?使ç?¨æ?´å??ç??ç??设å®?ã??è¦?é??ç?¨å??ä¸?个æ?¹æ¡?ï¼?ä½ å?¯
+以æ??ä¸?é?¢è¿?段ç²?è´´å?°ä½ ç??.emacsæ??件é??ã??
+
+(defun linux-c-mode ()
+ "C mode with adjusted defaults for use with the Linux kernel."
+ (interactive)
+ (c-mode)
+ (c-set-style "K&R")
+ (setq tab-width 8)
+ (setq indent-tabs-mode t)
+ (setq c-basic-offset 8))
+
+è¿?æ ·å°±å®?ä¹?äº?M-x linux-c-modeå?½ä»¤ã??å½?ä½ hackä¸?个模å??ç??æ?¶å??ï¼?å¦?æ??ä½ æ??å­?符串
+-*- linux-c -*-æ?¾å?¨å¤´ä¸¤è¡?ç??æ??个ä½?ç½®ï¼?è¿?个模å¼?å°?ä¼?被è?ªå?¨è°?ç?¨ã??å¦?æ??ä½ å¸?æ??å?¨ä½ ä¿®æ?¹
+/usr/src/linuxé??ç??æ??件æ?¶é­?æ?¯è?¬è?ªå?¨æ??å¼?linux-c-modeç??è¯?ï¼?ä½ ä¹?å?¯è?½é??è¦?æ·»å? 
+
+(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode)
+ auto-mode-alist))
+
+å?°ä½ ç??.emacsæ??件é??ã??
+
+ä¸?è¿?å°±ç®?ä½ å°?è¯?让emacs正确ç??æ ¼å¼?å??代ç ?失败äº?ï¼?ä¹?并ä¸?æ??å?³ç??你失å?»äº?ä¸?å??ï¼?è¿?å?¯ä»¥ç?¨â??
+indentâ??ã??
+
+ä¸?è¿?ï¼?GNU indentä¹?æ??å??GNU emacsä¸?æ ·æ??é?®é¢?ç??设å®?ï¼?æ??以你é??è¦?ç»?å®?ä¸?äº?å?½ä»¤é??项ã??ä¸?
+è¿?ï¼?è¿?è¿?ä¸?ç®?太ç³?ç³?ï¼?å? ä¸ºå°±ç®?æ?¯GNU indentç??ä½?è??ä¹?认å??K&Rç??æ??å¨?æ?§ï¼?GNUç??人并ä¸?æ?¯å??
+人ï¼?ä»?们å?ªæ?¯å?¨è¿?个é?®é¢?ä¸?被严é??ç??误导äº?ï¼?ï¼?æ??以你å?ªè¦?ç»?indentæ??å®?é??项â??-kr -i8â??
+ï¼?代表â??K&Rï¼?8个å­?符缩è¿?â??ï¼?ï¼?æ??è??使ç?¨â??scripts/Lindentâ??ï¼?è¿?æ ·å°±å?¯ä»¥ä»¥æ??æ?¶é«¦ç??æ?¹å¼?
+缩è¿?æº?代ç ?ã??
+
+â??indentâ??æ??å¾?å¤?é??项ï¼?ç?¹å?«æ?¯é??æ?°æ ¼å¼?å??注é??ç??æ?¶å??ï¼?ä½ å?¯è?½é??è¦?ç??ä¸?ä¸?å®?ç??æ??å??页ã??ä¸?è¿?
+è®°ä½?ï¼?â??indentâ??ä¸?è?½ä¿®æ­£å??ç??ç¼?ç¨?ä¹ æ?¯ã??
+
+
+ 第å??ç« ï¼?Kconfigé??ç½®æ??件
+
+对äº?é??å¸?æº?ç ?æ ?ç??æ??æ??Kconfig*é??ç½®æ??件æ?¥è¯´ï¼?å®?们缩è¿?æ?¹å¼?ä¸?C代ç ?ç?¸æ¯?æ??æ??ä¸?å??ã??ç´§æ?¨
+å?¨â??configâ??å®?ä¹?ä¸?é?¢ç??è¡?缩è¿?ä¸?个å?¶è¡¨ç¬¦ï¼?帮å?©ä¿¡æ?¯å??å??å¤?缩è¿?2个空格ã??æ¯?å¦?ï¼?
+
+config AUDIT
+ bool "Auditing support"
+ depends on NET
+ help
+ Enable auditing infrastructure that can be used with another
+ kernel subsystem, such as SELinux (which requires this for
+ logging of avc messages output). Does not do system-call
+ auditing without CONFIG_AUDITSYSCALL.
+
+ä»?ç?¶è¢«è®¤ä¸ºä¸?å¤?稳å®?ç??å??è?½åº?该被å®?ä¹?为ä¾?èµ?äº?â??EXPERIMENTALâ??ï¼?
+
+config SLUB
+ depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT
+ bool "SLUB (Unqueued Allocator)"
+ ...
+
+è??é?£äº?å?±é?©ç??å??è?½ï¼?æ¯?å¦?æ??äº?æ??件系ç»?ç??å??æ?¯æ??ï¼?åº?该å?¨å®?们ç??æ??示å­?符串é??æ?¾è??ç??声æ??è¿?
+���
+
+config ADFS_FS_RW
+ bool "ADFS write support (DANGEROUS)"
+ depends on ADFS_FS
+ ...
+
+è¦?æ?¥ç??é??ç½®æ??件ç??å®?æ?´æ??æ¡£ï¼?请ç??Documentation/kbuild/kconfig-language.txtã??
+
+
+ 第å??ä¸?ç« ï¼?æ?°æ?®ç»?æ??
+
+å¦?æ??ä¸?个æ?°æ?®ç»?æ??ï¼?å?¨å??建å??é??æ¯?å®?ç??å??线æ?§è¡?ç?¯å¢?ä¹?å¤?å?¯è§?ï¼?é?£ä¹?å®?å¿?é¡»è¦?æ??ä¸?个å¼?ç?¨è®¡
+æ?°å?¨ã??å??æ ¸é??没æ??å??å?¾æ?¶é??ï¼?并ä¸?å??æ ¸ä¹?å¤?ç??å??å?¾æ?¶é??æ?¢ä¸?æ??ç??ä½?ä¸?ï¼?ï¼?è¿?æ??å?³ç??ä½ ç»?对é??
+è¦?è®°å½?你对è¿?ç§?æ?°æ?®ç»?æ??ç??使ç?¨æ??å?µã??
+
+å¼?ç?¨è®¡æ?°æ??å?³ç??ä½ è?½å¤?é?¿å??ä¸?é??ï¼?并ä¸?å??许å¤?个ç?¨æ?·å¹¶è¡?访é?®è¿?个æ?°æ?®ç»?æ??â??â??è??ä¸?é??è¦?æ??å¿?
+è¿?个æ?°æ?®ç»?æ??ä»?ä»?å? ä¸ºæ??æ?¶ä¸?被使ç?¨å°±æ¶?失äº?ï¼?é?£äº?ç?¨æ?·å?¯è?½ä¸?è¿?æ?¯æ²?ç?¡äº?ä¸?é?µæ??è??å??äº?ä¸?
+äº?å?¶ä»?äº?æ??è??å·²ã??
+
+注æ??ä¸?é??ä¸?è?½å??代å¼?ç?¨è®¡æ?°ã??ä¸?é??æ?¯ä¸ºäº?ä¿?æ??æ?°æ?®ç»?æ??ç??ä¸?è?´æ?§ï¼?è??å¼?ç?¨è®¡æ?°æ?¯ä¸?个å??å­?管
+ç??æ??å·§ã??é??常äº?è??é?½é??è¦?ï¼?ä¸?è¦?æ??两个æ??æ··äº?ã??
+
+å¾?å¤?æ?°æ?®ç»?æ??å®?é??ä¸?æ??2级å¼?ç?¨è®¡æ?°ï¼?å®?们é??常æ??ä¸?å??â??ç±»â??ç??ç?¨æ?·ã??å­?类计æ?°å?¨ç»?计å­?ç±»ç?¨
+æ?·ç??æ?°é??ï¼?æ¯?å½?å­?类计æ?°å?¨å??è?³é?¶æ?¶ï¼?å?¨å±?计æ?°å?¨å??ä¸?ã??
+
+è¿?ç§?â??å¤?级å¼?ç?¨è®¡æ?°â??ç??ä¾?å­?å?¯ä»¥å?¨å??å­?管ç??ï¼?â??struct mm_structâ??ï¼?mm_userså??mm_countï¼?
+å??æ??件系ç»?ï¼?â??struct super_blockâ??ï¼?s_countå??s_activeï¼?中æ?¾å?°ã??
+
+è®°ä½?ï¼?å¦?æ??å?¦ä¸?个æ?§è¡?线索å?¯ä»¥æ?¾å?°ä½ ç??æ?°æ?®ç»?æ??ï¼?ä½?æ?¯è¿?个æ?°æ?®ç»?æ??没æ??å¼?ç?¨è®¡æ?°å?¨ï¼?è¿?
+é??å? ä¹?è?¯å®?æ?¯ä¸?个bugã??
+
+
+ 第å??äº?ç« ï¼?å®?ï¼?æ??举å??RTL
+
+ç?¨äº?å®?ä¹?常é??ç??å®?ç??å??å­?å??æ??举é??ç??æ ?ç­¾é??è¦?大å??ã??
+
+#define CONSTANT 0x12345
+
+å?¨å®?ä¹?å? ä¸ªç?¸å?³ç??常é??æ?¶ï¼?æ??好ç?¨æ??举ã??
+
+å®?ç??å??å­?请ç?¨å¤§å??å­?æ¯?ï¼?ä¸?è¿?å½¢å¦?å?½æ?°ç??å®?ç??å??å­?å?¯ä»¥ç?¨å°?å??å­?æ¯?ã??
+
+ä¸?è?¬ç??ï¼?å¦?æ??è?½å??æ??å??è??å?½æ?°å°±ä¸?è¦?å??æ??å??å?½æ?°ç??å®?ã??
+
+å?«æ??å¤?个语å?¥ç??å®?åº?该被å??å?«å?¨ä¸?个do-while代ç ?å??é??ï¼?
+
+#define macrofun(a, b, c) \
+ do { \
+ if (a == 5) \
+ do_this(b, c); \
+ } while (0)
+
+使ç?¨å®?ç??æ?¶å??åº?é?¿å??ç??äº?æ??ï¼?
+
+1) å½±å??æ?§å?¶æµ?ç¨?ç??å®?ï¼?
+
+#define FOO(x) \
+ do { \
+ if (blah(x) < 0) \
+ return -EBUGGERED; \
+ } while(0)
+
+é??常ä¸?好ã??å®?ç??èµ·æ?¥å??ä¸?个å?½æ?°ï¼?ä¸?è¿?å?´è?½å¯¼è?´â??è°?ç?¨â??å®?ç??å?½æ?°é??å?ºï¼?ä¸?è¦?æ??乱读è??大è??é??
+ç??语æ³?å??æ??å?¨ã??
+
+2) ä¾?èµ?äº?ä¸?个å?ºå®?å??å­?ç??æ?¬å?°å??é??ç??å®?ï¼?
+
+#define FOO(val) bar(index, val)
+
+å?¯è?½ç??èµ·æ?¥å??æ?¯ä¸ªä¸?é??ç??ä¸?西ï¼?ä¸?è¿?å®?é??常容æ??æ??读代ç ?ç??人æ??ç³?æ¶?ï¼?è??ä¸?容æ??导è?´ç??èµ·æ?¥
+ä¸?ç?¸å?³ç??æ?¹å?¨å¸¦æ?¥é??误ã??
+
+3) ä½?为左å?¼ç??带å??æ?°ç??å®?ï¼? FOO(x) = yï¼?å¦?æ??æ??人æ??FOOå??æ??ä¸?个å??è??å?½æ?°ç??è¯?ï¼?è¿?ç§?ç?¨
+æ³?å°±ä¼?å?ºé??äº?ã??
+
+4) å¿?è®°äº?ä¼?å??级ï¼?使ç?¨è¡¨è¾¾å¼?å®?ä¹?常é??ç??å®?å¿?é¡»å°?表达å¼?ç½®äº?ä¸?对å°?æ?¬å?·ä¹?å??ã??带å??æ?°ç??
+å®?ä¹?è¦?注æ??此类é?®é¢?ã??
+
+#define CONSTANT 0x4000
+#define CONSTEXP (CONSTANT | 3)
+
+cppæ??å??对å®?ç??讲解å¾?详ç»?ã??Gcc internalsæ??å??ä¹?详ç»?讲解äº?RTLï¼?è¯?注ï¼?register
+transfer languageï¼?ï¼?å??æ ¸é??ç??æ±?ç¼?语è¨?ç»?常ç?¨å?°å®?ã??
+
+
+ 第å??ä¸?ç« ï¼?æ??å?°å??æ ¸æ¶?æ?¯
+
+å??æ ¸å¼?å??è??åº?该æ?¯å??è¿?è?¯å¥½æ??è?²ç??ã??请ä¸?å®?注æ??å??核信æ?¯ç??æ?¼å??ï¼?以ç»?人以好ç??å?°è±¡ã??ä¸?è¦?
+ç?¨ä¸?è§?è??ç??å??è¯?æ¯?å¦?â??dontâ??ï¼?è??è¦?ç?¨â??do notâ??æ??è??â??don'tâ??ã??ä¿?è¯?è¿?äº?ä¿¡æ?¯ç®?å??ã??æ??äº?ã??æ? 
+æ­§ä¹?ã??
+
+å??核信æ?¯ä¸?å¿?以å?¥å?·ï¼?è¯?注ï¼?è?±æ??å?¥å?·ï¼?å?³ç?¹ï¼?ç»?æ??ã??
+
+å?¨å°?æ?¬å?·é??æ??å?°æ?°å­?(%d)没æ??ä»»ä½?ä»·å?¼ï¼?åº?该é?¿å??è¿?æ ·å??ã??
+
+<linux/device.h>é??æ??ä¸?äº?驱å?¨æ¨¡å??è¯?æ?­å®?ï¼?ä½ åº?该使ç?¨å®?们ï¼?以确ä¿?ä¿¡æ?¯å¯¹åº?äº?正确ç??
+设å¤?å??驱å?¨ï¼?并ä¸?被æ ?è®°äº?正确ç??æ¶?æ?¯çº§å?«ã??è¿?äº?å®?æ??ï¼?dev_err(), dev_warn(),
+dev_info()ç­?ç­?ã??对äº?é?£äº?ä¸?å??æ??个ç?¹å®?设å¤?ç?¸å?³è¿?ç??ä¿¡æ?¯ï¼?<linux/kernel.h>å®?ä¹?äº?
+pr_debug()å??pr_info()ã??
+
+å??å?ºå¥½ç??è°?è¯?ä¿¡æ?¯å?¯ä»¥æ?¯ä¸?个å¾?大ç??æ??æ??ï¼?å½?ä½ å??å?ºæ?¥ä¹?å??ï¼?è¿?äº?ä¿¡æ?¯å?¨è¿?ç¨?é?¤é??ç??æ?¶å??
+å°±ä¼?æ??为æ??大ç??帮å?©ã??å½?DEBUG符å?·æ²¡æ??被å®?ä¹?ç??æ?¶å??ï¼?è¿?äº?ä¿¡æ?¯ä¸?åº?该被ç¼?è¯?è¿?å??æ ¸é??
+ï¼?ä¹?å°±æ?¯è¯´ï¼?é»?认å?°ï¼?å®?们ä¸?åº?该被å??å?«å?¨å??ï¼?ã??å¦?æ??你使ç?¨dev_dbg()æ??è??pr_debug()ï¼?
+å°±è?½è?ªå?¨è¾¾å?°è¿?个æ??æ??ã??å¾?å¤?å­?ç³»ç»?æ?¥æ??Kconfigé??项æ?¥å?¯ç?¨-DDEBUGã??è¿?æ??ä¸?个ç?¸å?³ç??æ?¯ä¾?
+æ?¯ä½¿ç?¨VERBOSE_DEBUGæ?¥æ·»å? dev_vdbg()æ¶?æ?¯å?°é?£äº?å·²ç»?ç?±DEBUGå?¯ç?¨ç??æ¶?æ?¯ä¹?ä¸?ã??
+
+
+ 第å??å??ç« ï¼?å??é??å??å­?
+
+å??æ ¸æ??ä¾?äº?ä¸?é?¢ç??ä¸?è?¬ç?¨é??ç??å??å­?å??é??å?½æ?°ï¼?kmalloc()ï¼?kzalloc()ï¼?kcalloc()å??
+vmalloc()ã??请å??è??APIæ??档以è?·å??æ??å?³å®?们ç??详ç»?ä¿¡æ?¯ã??
+
+ä¼ é??ç»?æ??ä½?大å°?ç??é¦?é??å½¢å¼?æ?¯è¿?æ ·ç??ï¼?
+
+ p = kmalloc(sizeof(*p), ...);
+
+å?¦å¤?ä¸?ç§?ä¼ é??æ?¹å¼?中ï¼?sizeofç??æ??ä½?æ?°æ?¯ç»?æ??ä½?ç??å??å­?ï¼?è¿?æ ·ä¼?é??ä½?å?¯è¯»æ?§ï¼?并ä¸?å?¯è?½ä¼?å¼?
+å?¥bugã??æ??å?¯è?½æ??é??å??é??ç±»å??被æ?¹å??æ?¶ï¼?è??对åº?ç??ä¼ é??ç»?å??å­?å??é??å?½æ?°ç??sizeofç??ç»?æ??ä¸?å??ã??
+
+强å?¶è½¬æ?¢ä¸?个voidæ??é??è¿?å??å?¼æ?¯å¤?ä½?ç??ã??C语è¨?æ?¬èº«ä¿?è¯?äº?ä»?voidæ??é??å?°å?¶ä»?ä»»ä½?æ??é??ç±»å??
+ç??转æ?¢æ?¯æ²¡æ??é?®é¢?ç??ã??
+
+
+ 第å??äº?ç« ï¼?å??è??å¼?ç??
+
+æ??ä¸?个常è§?ç??误解æ?¯å??è??å?½æ?°æ?¯gccæ??ä¾?ç??å?¯ä»¥è®©ä»£ç ?è¿?è¡?æ?´å¿«ç??ä¸?个é??项ã??è?½ç?¶ä½¿ç?¨å??è??
+å?½æ?°æ??æ?¶å??æ?¯æ?°å½?ç??ï¼?æ¯?å¦?ä½?为ä¸?ç§?æ?¿ä»£å®?ç??æ?¹å¼?ï¼?请ç??第å??äº?ç« ï¼?ï¼?ä¸?è¿?å¾?å¤?æ??å?µä¸?ä¸?æ?¯
+è¿?æ ·ã??inlineå?³é?®å­?ç??è¿?度使ç?¨ä¼?使å??æ ¸å??大ï¼?ä»?è??使æ?´ä¸ªç³»ç»?è¿?è¡?é??度å??æ?¢ã??å? ä¸ºå¤§å??æ ¸
+ä¼?å? ç?¨æ?´å¤?ç??æ??令é«?é??ç¼?å­?ï¼?è¯?注ï¼?ä¸?级ç¼?å­?é??常æ?¯æ??令ç¼?å­?å??æ?°æ?®ç¼?å­?å??å¼?ç??ï¼?è??ä¸?ä¼?导
+è?´pagecacheç??å?¯ç?¨å??å­?å??å°?ã??æ?³è±¡ä¸?ä¸?ï¼?ä¸?次pagecacheæ?ªå?½ä¸­å°±ä¼?导è?´ä¸?次ç£?ç??寻å??ï¼?å°?
+è??æ?¶5毫ç§?ã??5毫ç§?ç??æ?¶é?´å??CPUè?½æ?§è¡?å¾?å¤?å¾?å¤?æ??令ã??
+
+ä¸?个å?ºæ?¬ç??å??å??æ?¯å¦?æ??ä¸?个å?½æ?°æ??3è¡?以ä¸?ï¼?å°±ä¸?è¦?æ??å®?å??æ??å??è??å?½æ?°ã??è¿?个å??å??ç??ä¸?个ä¾?
+å¤?æ?¯ï¼?å¦?æ??ä½ ç?¥é??æ??个å??æ?°æ?¯ä¸?个ç¼?è¯?æ?¶å¸¸é??ï¼?è??ä¸?å? ä¸ºè¿?个常é??ä½ ç¡®å®?ç¼?è¯?å?¨å?¨ç¼?è¯?æ?¶è?½
+ä¼?å??æ??ä½ ç??å?½æ?°ç??大é?¨å??代ç ?ï¼?é?£ä»?ç?¶å?¯ä»¥ç»?å®?å? ä¸?inlineå?³é?®å­?ã??kmalloc()å??è??å?½æ?°å°±
+æ?¯ä¸?个å¾?好ç??ä¾?å­?ã??
+
+人们ç»?常主张ç»?staticç??è??ä¸?å?ªç?¨äº?ä¸?次ç??å?½æ?°å? ä¸?inlineï¼?å¦?æ­¤ä¸?ä¼?æ??ä»»ä½?æ??失ï¼?å? ä¸ºæ²¡
+æ??ä»?ä¹?好æ??è¡¡ç??ã??è?½ç?¶ä»?æ??æ?¯ä¸?说è¿?æ?¯æ­£ç¡®ç??ï¼?ä½?æ?¯å®?é??ä¸?è¿?ç§?æ??å?µä¸?å?³ä½¿ä¸?å? inline gcc
+ä¹?å?¯ä»¥è?ªå?¨ä½¿å?¶å??è??ã??è??ä¸?å?¶ä»?ç?¨æ?·å?¯è?½ä¼?è¦?æ±?移é?¤inlineï¼?ç?±æ­¤è??æ?¥ç??äº?论ä¼?æ?µæ¶?inline
+è?ªèº«ç??æ½?å?¨ä»·å?¼ï¼?å¾?ä¸?å?¿å¤±ã??
+
+
+ 第å??å?­ç« ï¼?å?½æ?°è¿?å??å?¼å??å?½å??
+
+å?½æ?°å?¯ä»¥è¿?å??å¾?å¤?ç§?ä¸?å??ç±»å??ç??å?¼ï¼?æ??常è§?ç??ä¸?ç§?æ?¯è¡¨æ??å?½æ?°æ?§è¡?æ??å??æ??è??失败ç??å?¼ã??è¿?æ ·
+ç??ä¸?个å?¼å?¯ä»¥è¡¨ç¤ºä¸ºä¸?个é??误代ç ?æ?´æ?°ï¼?-Exxxï¼?失败ï¼?0ï¼?æ??å??ï¼?æ??è??ä¸?个â??æ??å??â??å¸?å°?å?¼ï¼?
+0ï¼?失败ï¼?é??0ï¼?æ??å??ï¼?ã??
+
+æ··å??使ç?¨è¿?两ç§?表达æ?¹å¼?æ?¯é?¾äº?å??ç?°ç??bugç??æ?¥æº?ã??å¦?æ??C语è¨?æ?¬èº«ä¸¥æ ¼å?ºå??æ?´å½¢å??å¸?å°?å??å??
+é??ï¼?é?£ä¹?ç¼?è¯?å?¨å°±è?½å¤?帮æ??们å??ç?°è¿?äº?é??误â?¦â?¦ä¸?è¿?C语è¨?ä¸?å?ºå??ã??为äº?é?¿å??产ç??è¿?ç§?bugï¼?请
+é?µå¾ªä¸?é?¢ç??æ?¯ä¾?ï¼?
+
+ å¦?æ??å?½æ?°ç??å??å­?æ?¯ä¸?个å?¨ä½?æ??è??强å?¶æ?§ç??å?½ä»¤ï¼?é?£ä¹?è¿?个å?½æ?°åº?该è¿?å??é??误代ç ?æ?´
+ æ?°ã??å¦?æ??æ?¯ä¸?个å?¤æ?­ï¼?é?£ä¹?å?½æ?°åº?该è¿?å??ä¸?个â??æ??å??â??å¸?å°?å?¼ã??
+
+æ¯?å¦?ï¼?â??add workâ??æ?¯ä¸?个å?½ä»¤ï¼?æ??以add_work()å?½æ?°å?¨æ??å??æ?¶è¿?å??0ï¼?å?¨å¤±è´¥æ?¶è¿?å??-EBUSYã??
+类似ç??ï¼?å? ä¸ºâ??PCI device presentâ??æ?¯ä¸?个å?¤æ?­ï¼?æ??以pci_dev_present()å?½æ?°å?¨æ??å??æ?¾å?°
+ä¸?个å?¹é??ç??设å¤?æ?¶åº?该è¿?å??1ï¼?å¦?æ??æ?¾ä¸?å?°æ?¶åº?该è¿?å??0ã??
+
+æ??æ??导å?ºï¼?è¯?注ï¼?EXPORTï¼?ç??å?½æ?°é?½å¿?é¡»é?µå®?è¿?个æ?¯ä¾?ï¼?æ??æ??ç??å?¬å?±å?½æ?°ä¹?é?½åº?该å¦?æ­¤ã??ç§?
+æ??ï¼?staticï¼?å?½æ?°ä¸?é??è¦?å¦?æ­¤ï¼?ä½?æ?¯æ??们ä¹?æ?¨è??è¿?æ ·å??ã??
+
+è¿?å??å?¼æ?¯å®?é??计ç®?ç»?æ??è??ä¸?æ?¯è®¡ç®?æ?¯å?¦æ??å??ç??æ ?å¿?ç??å?½æ?°ä¸?å??æ­¤æ?¯ä¾?ç??é??å?¶ã??ä¸?è?¬ç??ï¼?ä»?们
+é??è¿?è¿?å??ä¸?äº?正常å?¼è??å?´ä¹?å¤?ç??ç»?æ??æ?¥è¡¨ç¤ºå?ºé??ã??å?¸å??ç??ä¾?å­?æ?¯è¿?å??æ??é??ç??å?½æ?°ï¼?ä»?们使ç?¨
+NULLæ??è??ERR_PTRæ?ºå?¶æ?¥æ?¥å??é??误ã??
+
+
+ 第å??ä¸?ç« ï¼?ä¸?è¦?é??æ?°å??æ??å??æ ¸å®?
+
+头æ??件include/linux/kernel.hå??å?«äº?ä¸?äº?å®?ï¼?ä½ åº?该使ç?¨å®?们ï¼?è??ä¸?è¦?è?ªå·±å??ä¸?äº?å®?们ç??
+å??ç§?ã??æ¯?å¦?ï¼?å¦?æ??ä½ é??è¦?计ç®?ä¸?个æ?°ç»?ç??é?¿åº¦ï¼?使ç?¨è¿?个å®?
+
+ #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+
+类似ç??ï¼?å¦?æ??ä½ è¦?计ç®?æ??ç»?æ??ä½?æ??å??ç??大å°?ï¼?使ç?¨
+
+ #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
+
+è¿?æ??å?¯ä»¥å??严格ç??ç±»å??æ£?æ?¥ç??min()å??max()å®?ï¼?å¦?æ??ä½ é??è¦?å?¯ä»¥ä½¿ç?¨å®?们ã??ä½ å?¯ä»¥è?ªå·±ç??ç??
+é?£ä¸ªå¤´æ??件é??è¿?å®?ä¹?äº?ä»?ä¹?ä½ å?¯ä»¥æ?¿æ?¥ç?¨ç??ä¸?西ï¼?å¦?æ??æ??å®?ä¹?ç??è¯?ï¼?ä½ å°±ä¸?åº?å?¨ä½ ç??代ç ?é??
+è?ªå·±é??æ?°å®?ä¹?ã??
+
+
+ 第å??å?«ç« ï¼?ç¼?è¾?å?¨æ¨¡å¼?è¡?å??å?¶ä»?é??è¦?ç½?å?¦ç??äº?æ??
+
+æ??ä¸?äº?ç¼?è¾?å?¨å?¯ä»¥è§£é??åµ?å?¥å?¨æº?æ??件é??ç??ç?±ä¸?äº?ç?¹æ®?æ ?è®°æ ?æ??ç??é??置信æ?¯ã??æ¯?å¦?ï¼?emacs
+è?½å¤?解é??被æ ?è®°æ??è¿?æ ·ç??è¡?ï¼?
+
+-*- mode: c -*-
+
+æ??è??è¿?æ ·ç??ï¼?
+
+/*
+Local Variables:
+compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
+End:
+*/
+
+Vimè?½å¤?解é??è¿?æ ·ç??æ ?è®°ï¼?
+
+/* vim:set sw=8 noet */
+
+ä¸?è¦?å?¨æº?代ç ?中å??å?«ä»»ä½?è¿?æ ·ç??å??容ã??æ¯?个人é?½æ??ä»?è?ªå·±ç??ç¼?è¾?å?¨é??ç½®ï¼?ä½ ç??æº?æ??件ä¸?åº?
+该è¦?ç??å?«äººç??é??ç½®ã??è¿?å??æ?¬æ??å?³ç¼©è¿?å??模å¼?é??ç½®ç??æ ?è®°ã??人们å?¯ä»¥ä½¿ç?¨ä»?们è?ªå·±å®?å?¶ç??模
+å¼?ï¼?æ??è??使ç?¨å?¶ä»?å?¯ä»¥äº§ç??正确ç??缩è¿?ç??å·§å¦?æ?¹æ³?ã??
+
+
+
+ é??å½? Iï¼?å??è??
+
+The C Programming Language, 第äº?ç??, ä½?è??Brian W. Kernighanå??Denni
+M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8 (软�),
+0-13-110370-9 (硬�). URL: http://cm.bell-labs.com/cm/cs/cbook/
+
+The Practice of Programming ä½?è??Brian W. Kernighanå??Rob Pike. Addison-Wesley,
+Inc., 1999. ISBN 0-201-61586-X. URL: http://cm.bell-labs.com/cm/cs/tpop/
+
+cppï¼?gccï¼?gcc internalså??indentç??GNUæ??å??â??â??å??K&Rå??æ?¬æ??ç?¸ç¬¦å??ç??é?¨å??ï¼?å?¨é?¨å?¯ä»¥å?¨
+http://www.gnu.org/manual/��;
+
+WG14æ?¯C语è¨?ç??å?½é??æ ?å??å??å·¥ä½?ç»?ï¼?URL: http://www.open-std.org/JTC1/SC22/WG14/
+
+Kernel CodingStyleï¼?ä½?è??greg@xxxxxxxxxå??表äº?OLS 2002ï¼?
+http://www.kroah.com/linux/talks/ols_2002_kernel_codingstyle_talk/html/
+
+--
+æ??å??æ?´æ?°äº?2007å¹´7æ??13æ?¥ã??
--
1.5.3.8

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/