Based on kernel version 3.9. Page generated on 2013-05-02 23:17 EST.
1 Chinese translated version of Documentation/sparse.txt 2 3 If you have any comment or update to the content, please contact the 4 original document maintainer directly. However, if you have a problem 5 communicating in English you can also ask the Chinese maintainer for 6 help. Contact the Chinese maintainer if this translation is outdated 7 or if there is a problem with the translation. 8 9 Chinese maintainer: Li Yang <leo@zh-kernel.org> 10 --------------------------------------------------------------------- 11 Documentation/sparse.txt çš„ä¸æ–‡ç¿»è¯‘ 12 13 如果想评论或更新本文的内容,请直接è”ç³»åŽŸæ–‡æ¡£çš„ç»´æŠ¤è€…ã€‚å¦‚æžœä½ ä½¿ç”¨è‹±æ–‡ 14 äº¤æµæœ‰å›°éš¾çš„è¯ï¼Œä¹Ÿå¯ä»¥å‘䏿–‡ç‰ˆç»´æŠ¤è€…求助。如果本翻译更新ä¸åŠæ—¶æˆ–者翻 15 译å˜åœ¨é—®é¢˜ï¼Œè¯·è”ç³»ä¸æ–‡ç‰ˆç»´æŠ¤è€…。 16 17 䏿–‡ç‰ˆç»´æŠ¤è€…: æŽé˜³ Li Yang <leo@zh-kernel.org> 18 䏿–‡ç‰ˆç¿»è¯‘者: æŽé˜³ Li Yang <leo@zh-kernel.org> 19 20 21 ä»¥ä¸‹ä¸ºæ£æ–‡ 22 --------------------------------------------------------------------- 23 24 Copyright 2004 Linus Torvalds 25 Copyright 2004 Pavel Machek <pavel@ucw.cz> 26 Copyright 2006 Bob Copeland <me@bobcopeland.com> 27 28 使用 sparse 工具åšç±»åž‹æ£€æŸ¥ 29 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 30 31 "__bitwise" 是一ç§ç±»åž‹å±žæ€§ï¼Œæ‰€ä»¥ä½ åº”è¯¥è¿™æ ·ä½¿ç”¨å®ƒï¼š 32 33 typedef int __bitwise pm_request_t; 34 35 enum pm_request { 36 PM_SUSPEND = (__force pm_request_t) 1, 37 PM_RESUME = (__force pm_request_t) 2 38 }; 39 40 è¿™æ ·ä¼šä½¿ PM_SUSPEND å’Œ PM_RESUME æˆä¸ºä½æ–¹å¼(bitwise)整数(使用"__force" 41 æ˜¯å› ä¸º sparse 会抱怨改å˜ä½æ–¹å¼çš„类型转æ¢ï¼Œä½†æ˜¯è¿™é‡Œæˆ‘们确实需è¦å¼ºåˆ¶è¿›è¡Œè½¬ 42 æ¢ï¼‰ã€‚è€Œä¸”å› ä¸ºæ‰€æœ‰æžšä¸¾å€¼éƒ½ä½¿ç”¨äº†ç›¸åŒçš„类型,这里的"enum pm_request"也将 43 会使用那个类型åšä¸ºåº•层实现。 44 45 而且使用 gcc 编译的时候,所有的 __bitwise/__force 都会消失,最åŽåœ¨ gcc 46 看æ¥å®ƒä»¬åªä¸è¿‡æ˜¯æ™®é€šçš„æ•´æ•°ã€‚ 47 48 å¦ç™½æ¥è¯´ï¼Œä½ å¹¶ä¸éœ€è¦ä½¿ç”¨æžšä¸¾ç±»åž‹ã€‚上é¢é‚£äº›å®žé™…都å¯ä»¥æµ“缩æˆä¸€ä¸ªç‰¹æ®Šçš„"int 49 __bitwise"类型。 50 51 所以更简å•的办法åªè¦è¿™æ ·åšï¼š 52 53 typedef int __bitwise pm_request_t; 54 55 #define PM_SUSPEND ((__force pm_request_t) 1) 56 #define PM_RESUME ((__force pm_request_t) 2) 57 58 çŽ°åœ¨ä½ å°±æœ‰äº†ä¸¥æ ¼çš„ç±»åž‹æ£€æŸ¥æ‰€éœ€è¦çš„æ‰€æœ‰åŸºç¡€æž¶æž„。 59 60 ä¸€ä¸ªå°æé†’ï¼šå¸¸æ•°æ•´æ•°"0"æ˜¯ç‰¹æ®Šçš„ã€‚ä½ å¯ä»¥ç›´æŽ¥æŠŠå¸¸æ•°é›¶å½“ä½œä½æ–¹å¼æ•´æ•°ä½¿ç”¨è€Œ 61 ä¸ç”¨æ‹…心 sparse ä¼šæŠ±æ€¨ã€‚è¿™æ˜¯å› ä¸º"bitwise"(æ°å¦‚å…¶å)是用æ¥ç¡®ä¿ä¸åŒä½æ–¹ 62 å¼ç±»åž‹ä¸ä¼šè¢«å¼„混(å°å°¾æ¨¡å¼ï¼Œå¤§å°¾æ¨¡å¼ï¼Œcpu尾模å¼ï¼Œæˆ–者其他),对他们æ¥è¯´ 63 常数"0"确实是特殊的。 64 65 èŽ·å– sparse 工具 66 ~~~~~~~~~~~~~~~~ 67 68 ä½ å¯ä»¥ä»Ž Sparse çš„ä¸»é¡µèŽ·å–æœ€æ–°çš„å‘布版本: 69 70 http://www.kernel.org/pub/linux/kernel/people/josh/sparse/ 71 72 æˆ–è€…ï¼Œä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ git 克隆最新的 sparse å¼€å‘版本: 73 74 git://git.kernel.org/pub/scm/linux/kernel/git/josh/sparse.git 75 76 DaveJ 把æ¯å°æ—¶è‡ªåŠ¨ç”Ÿæˆçš„ git æºç æ ‘ tar 包放在以下地å€ï¼š 77 78 http://www.codemonkey.org.uk/projects/git-snapshots/sparse/ 79 80 ä¸€æ—¦ä½ ä¸‹è½½äº†æºç ,åªè¦ä»¥æ™®é€šç”¨æˆ·èº«ä»½è¿è¡Œï¼š 81 82 make 83 make install 84 85 å®ƒå°†ä¼šè¢«è‡ªåŠ¨å®‰è£…åˆ°ä½ çš„ ~/bin 目录下。 86 87 使用 sparse 工具 88 ~~~~~~~~~~~~~~~~ 89 90 用"make C=1"命令æ¥ç¼–è¯‘å†…æ ¸ï¼Œä¼šå¯¹æ‰€æœ‰é‡æ–°ç¼–译的 C 文件使用 sparse 工具。 91 或者使用"make C=2"å‘½ä»¤ï¼Œæ— è®ºæ–‡ä»¶æ˜¯å¦è¢«é‡æ–°ç¼–译都会对其使用 sparse 工具。 92 å¦‚æžœä½ å·²ç»ç¼–è¯‘äº†å†…æ ¸ï¼Œç”¨åŽä¸€ç§æ–¹å¼å¯ä»¥å¾ˆå¿«åœ°æ£€æŸ¥æ•´ä¸ªæºç æ ‘ã€‚ 93 94 make çš„å¯é€‰å˜é‡ CHECKFLAGS å¯ä»¥ç”¨æ¥å‘ sparse å·¥å…·ä¼ é€’å‚æ•°ã€‚编译系统会自 95 åŠ¨å‘ sparse å·¥å…·ä¼ é€’ -Wbitwise 傿•°ã€‚ä½ å¯ä»¥å®šä¹‰ __CHECK_ENDIAN__ æ¥è¿›è¡Œ 96 大å°å°¾æ£€æŸ¥ã€‚ 97 98 make C=2 CHECKFLAGS="-D__CHECK_ENDIAN__" 99 100 这些检查默认都是被关é—çš„ï¼Œå› ä¸ºä»–ä»¬é€šå¸¸ä¼šäº§ç”Ÿå¤§é‡çš„è¦å‘Šã€‚