3 @ this charpter contains few program sytle doc, and should be extended in other
\r
11 program level and element conclution:
\r
13 @ instruction: asm programming.
\r
14 @ lang-feature-element: c/cpp programming.
\r
15 @ function-set-element: invoking functions with particular feature.
\r
16 @ module-element: using a set of functions for the same feature.
\r
17 @ class-element: same as module, but stronger then module on soft-reuse and
\r
19 @ lib-pkg-element: function set for some feature, or midware.
\r
20 @ prog-element: cmd set.
\r
21 @ svc-element: service program.
\r
29 [type-lib-func-module]
\r
31 # program£ºexeprog£¬libprog£¬task£¬svc£¬
\r
32 # process£ºprocess£¬thread£¬fiber
\r
33 # mem£ºshmm£¬slice£¬slb
\r
34 # ipc£ºmsg£¬evnt£¬databus£¬rpc
\r
37 Connector(Socket£¬Wire)£¬
\r
38 Wire(Property/Wire£¬WireGroup£¬Stream£¬Bucket)£¬Wire(Tier/Bind/alias)£¬Stream(Pipe£¬Thr£¬Fiber)£¬(Char£¬LinedTxt£¬Frame£¬proc)£¬
\r
39 Buffer(Normal£¬Frame£¬Slab)
\r
40 # Bucket(dynamic-struct)
\r
42 # gui/tui/wui£¬¸÷ÖÖctlrµÄ¶¨Òå¡¢±à¼ºÍ²âÊÔ·½·¨
\r
43 # cli£¬feature-list£¬arg-list£¬²ÎÊý²âÊÔ
\r
44 @ ipc & comm proto & file-format
\r
46 # proto(hw-comm£¬pipe£¬sock)(hexfmt)£¬
\r
47 # msg/evnt/databus£¬
\r
53 # io-value£ºio-signal£¬io-analog£¬io-bus£¬io-pwm(f/d)£¬io-clk(c/f/l)£¬
\r
54 # motor(s/p/c)£¬sensor(p/c)
\r
55 # timer£¬tick£¬time£¬date£¬tp£¬timetp£¬
\r
56 # ad/daÒÔaudio»òvideoµÄdrvʹÓã¬Êý¾Ý´¦ÀíµÄ³ÌÐòÒ²ÒÔaudio»òvideoµÄ³ÌÐò½á¹¹½øÐбàд£¬¿ÉʹÓÃaudio/video±à¼Èí¼þ¶ÔÊý¾Ý½øÐб༡£
\r
58 the feature of the program is disscused in other doc, and would not be
\r
66 # ref-copy & lib-link
\r
67 # general-dep-interface
\r
68 + basical-module(stdio£¬file-ops£¬string£¬mem-ops)
\r
69 + opt-module(thread£¬fiber£¬ipc)
\r
70 + cplr-feature(TLS£¬weak£¬alias£¬)¡£aliasÓÃÓÚgnuºÍmfcÁ½ÖÖ·ç¸ñµÄ½Ó¿Úº¯ÊýµÄ¼æÈÝ£¬ÔÚ±àÒëÆ÷ÉÏÐèÒªÔÚÁ´½Óʱ½«importµÄº¯ÊýÃû½øÐÐת»»¡£
\r
71 # scrope£¬ÓÃÓÚÐèÒªÏà¶Ô¸´Ôӵģ¬Ö»Óë±à³ÌÓïÑÔÏà¹ØµÄ¹¦ÄÜ¡£ÓÃÓÚ£ºµ¥Æ¬»úϵͳ£¬sys-low-leval´úÂ룬Çý¶¯¼°ÏµÍ³»ù´¡Èí¼þ°ü£¬ÒÔ¼°Ó¦ÓóÌÐòÖÐÉÙ²¿·Ö²Ù×÷ϵͳ¹¦ÄÜÎ޹أ¬±à³ÌÓïÑÔ¼°³ÌÐòÉè¼ÆÄ£ÐÍÏà¹ØµÄ´úÂë¡£
\r
72 # Ò»¸öÄ£¿é°üº¬£º.cºÍ.hÔ´Îļþ£¬.mdlÄ£¿é»¯½Ó¿ÚÉè¼ÆÎļþ£¬.config¹¦ÄÜÅäÖÃÎļþ£¬build±àÒë²ÎÊýĿ¼£¬.recÉè¼ÆÎĵµ£¬.md»ù±¾µÄ˵Ã÷Îĵµ£¬manual.mdʹÓÃÊÖ²áÎļþ£¬_test.c, _test.sh, .stdio, .time, .timecost£¬µÈ²âÊÔÎļþ¡£¸ù¾Ý²»Í¬µÄ´úÂëʵÏÖ£¬Ò»Ð©Îļþ¿ÉÉìËõ¡£
\r
73 һЩÈí¼þ°üµÄͨÓÃÎļþ£¬ÏñLISENCE£¬AUTHORµÈ£¬Í¨³£Ê¹ÓÃÈí¼þ°üͨÓõġ£¶ÔÓÚchangelog£¬news£¬¿ÉÔÚÄ£¿éÖÐʹÓã¬Ò²¿ÉÔÚÈí¼þ°üÖÐʹÓá£
\r
74 mdlÎļþºÍ.hÎļþ£¬ÓÃÓÚÆä±¾Éí¹¦ÄÜÖ®Í⣬°üº¬interface¹¦ÄÜ¡£¶ÔÓÚc³ÌÐòÄ£¿é£¬Êä³ömacro£¬type£¬var£¬func¡£
\r
75 # codelib¶Ôsrc-module½øÐй¤³Ì»¯µÄorg£¬Ä£¿é¼äµÄdep£¬ÒÔ¼°¹¦ÄÜ·ÖÀ࣬¶Ô²»Í¬cpu£¬²Ù×÷ϵͳ£¬±àÒëÆ÷µÈÔËÐл·¾³µÄadepter¡£
\r
76 ¹¦ÄÜ·ÖÀàÒÔÒ»¸öcatalogÎļþÃèÊö£¬»òÒÔĿ¼Á´½ÓÎļþµÄĿ¼½á¹¹ÃèÊö¡£
\r
77 # codelibµÄ¹¦ÄÜÄ£¿éÔ´×ÔÓÚÒÑÓÐÈí¼þ°üÖУ¬Ò»Ð©Ö»Óë±à³ÌÓïÑÔÏà¹ØfeatureµÄ³éÏóºÍÄ£¿é»¯¡£ÒÔ¼°³ÌÐòÉè¼ÆÖеÄidea£¬Êµ¼ÊÎÊÌâµÄ´¦Àí·½·¨µÈ¡£
\r
80 @ codelib£¬¶à¸ö¹¦ÄÜÄ£¿é×éºÏ³ÉÒ»¸ölib£¬²¢ÒÔ±àÒ룬»òrefµÄÐÎʽ£¬Ê¹ÓÃlib¡£libÖеŦÄÜÄ£¿éΪpure-lang-feature£¬ÔÚstdioÓëmem-allocµÈ¹¦ÄÜÖ®Í⣬¼¸ºõ²»Ê¹ÓÃÍⲿ½Ó¿Úº¯Êý¡£
\r
81 # codelibÖеÄÿ¸öÄ£¿é¶¼ÊÇÏà¶ÔÈõñîºÏÐԵġ£
\r
82 # codelibµÄ´úÂë°üº¬Á½ÖÖʹÓ÷½·¨£¬copyʹÓúͱàÒëʹÓá£copyʹÓÃʱ£¬¸ù¾ÝhdrµÄinclude±íʾµÄdep£¬½«ÆäËüÄ£¿éһͬcopyÊä³öµ½Êä³öĿ¼¡£
\r
83 # ÆäËü³ÌÐòʹÓÃʱ£¬Ò²¿É¸ù¾ÝÔËÐл·¾³£¬ÒÔcopy´úÂë»ò¶þ½øÖÆlibÁ´½ÓÁ½ÖÖÀàÐÍ¡£Õâ¶ÔÓÚ¼õÉÙ´úÂëÈßÓà¶È£¬Í¬Ê±¼æ¹ËÈõñîºÏÐԱȽϺÃһЩ¡£
\r
84 eg: Êý¾Ý½á¹¹µÄ´úÂëÊÇͨÓôúÂ룬µ«ºÜ¶à³ÌÐòÖж¼°üº¬Ò»Ð©Êý¾Ý½á¹¹µÄ´úÂë¡£¶à¸öÈí¼þ°üÖУ¬ÕâЩ´úÂëÊÇÈßÓà¿É¸´Óõġ£
\r
85 µ«Èç¹ûÒÔ¶þ½øÖÆlibʹÓã¬Ò»¸ö³ÌÐòÖÐÐèÒª½Ï¶àlibµÄʹÓ㬽µµÍÁËÈõñîºÏÐÔ¡£
\r
86 ʹÓÃcodelib£¬¼æ¹ËÁËÄ£¿éµÄÈõñîºÏÐÔ£¬ÒÔcopyʹÓôúÂë¡£³ÌÐòÉè¼ÆµÄÈßÓà¶È½µµÍÁË£¬¶þ½øÖÆ´úÂëµ½ÈßÓà¶È¸ù¾Ýϵͳ»·¾³ÖÐÊÇ·ñ°üº¬codelibµÄ¿âÎļþ£¬Ê¹ÓÃlib½µµÍ¶þ½øÖÆÈßÓà¶È£¬ÇÒcodelibÏñlibcÒ»Ñù³ÉΪһ¸öͨÓÃlib£¬²¢²»Ôö¼Ó³ÌÐòµÄñîºÏÐÔ¡£Èç¹ûcodelibÔÚlibc¿âÖÐÒÔcopyʹÓã¬ÄÇô¶ÔÓÚÓ¦ÓóÌÐòµÄÍⲿ½Ó¿ÚÊDz»±äµÄ£¬Î´Ôö¼Ó³ÌÐòµÄñîºÏÐÔ£¬µ«½µµÍÁ˳ÌÐòÉè¼ÆºÍ´úÂëµ½ÈßÓà¶È¡£ÕâÖÖʹÓ÷½·¨£¬ÔÝÇÒ³Æ֮Ϊcode-piece¡£
\r
87 codelibÊDZà³ÌÓïÑÔÏà¹ØµÄ¿â£¬Óë±àÒëÆ÷/cpu/OSÎ޹صÄlib¡£
\r
88 µ±codelib¹ã·ºµÄʹÓÃʱ£¬ÏñlibcÒ»Ñù£¬³ÉΪһ¸ö»ù´¡libʱ£¬ÆäËüʹÓÃcodelibµÄ³ÌÐò£¬¸ù¾Ý¿ª·¢»·¾³ÖеÄcodelib¿âÒÔlibʹÓ㬶ø²»ÊÇ´úÂëcopy¡£¶øÕâ¶Ôdeveloper¶øÑÔ£¬ÔÓеÄcodelibÖеĺ¯Êý½Ó¿Ú²»±ä£¬×Ô¶¯Çл»³ÉlibʹÓá£
\r
89 # »ù´¡¹¦ÄÜÄ£¿éinterface
\r
90 stdio£¬fops£¬string£¬mem-ops(alloc£¬copy£¬comp)£¬¼°ÆäÏà¹ØµÄ¹¦ÄÜÄ£¿é£¬Îª»ù´¡¹¦ÄÜÄ£¿é£¬ÒÔÒ»¸öÕûÌ壬ΪÆäËü¿âµÄdepÄ£¿é¡£ÆäËüÄ£¿éͨ³£Ö»ÒÔ±à³ÌÓïÑԺͻù´¡¹¦ÄÜÄ£¿éΪdep¡£½µµÍÄ£¿éµÄñîºÏÐÔ¡£
\r
91 stdioºÍfopsÖ»ÒÔinterfaceÌṩ£¬¸ù¾Ý²»Í¬µÄÔËÐл·¾³£¬Ê¹Óò»Í¬µÄ´úÂëʵÏÖ¡£Õâ¶ÔÓÚ²Ù×÷ϵͳ»·¾³ºÍµ¥Æ¬»ú»·¾³¶¼¼æ¹ËºÍͨÓá£
\r
92 eg£º³ÌÐòÖеĶàÓïÑÔ¹¦ÄÜ£¬ÔÚlibcÖÐÓÐʹÓ㬴úÂëµÄʹÓÃÒÀÀµÓÚÎļþ²Ù×÷¡£ÔڷDzÙ×÷ϵͳ»·¾³£¬»òÊÇδʹÓÃÎļþ¹¦ÄܵÄrtosÖУ¬Îļþ¼´¿Éº¯ÊýÒÔÎļþÃûºÍ´æ´¢Æ÷µØÖ·µÄ¹ØÁª±íʵÏÖ´úÂëµ½¼æÈÝ¡£ÕâÑù£¬¶àÓïÑÔ¹¦ÄܵĴúÂëÔÚ²»Ê¹ÓÃÎļþϵͳµÄ³ÌÐòÖÐÒ²¿ÉʹÓá£
\r
93 ÕâʹcodelibµÄ´úÂ븴ÓÃÐÔµÃÒÔÌáÉý£¬¸÷ÖÖ³ÌÐòʹÓÃcodelib£¬½µµÍ³ÌÐòÉè¼ÆºÍ¶þ½øÖÆ´úÂëµÄÈßÓà¶È¡£
\r
94 # »ù´¡¹¦ÄÜÄ£¿éÖУ¬°üº¬thread£¬fiber£¬ipc£¬ÓÃÓÚ¹¹³É²Ù×÷ϵͳ»ù±¾¹¦ÄÜ¡£
\r
95 һЩµ¥Æ¬»ú»·¾³²»ÐèÒª¶àÈÎÎñ²¢·¢¹¦ÄÜ£¬ÕâЩ¹¦ÄÜÄ£¿éÅäÖóÉÏà¹ØµÄnull²Ù×÷¡£ÔÚ´úÂë±àÒëʱ£¬²»°üº¬Ïà¹Øº¯ÊýµÄµ÷Óá£Ïà±ÈifdefµÄºê¶¨Ò忪¹Ø£¬´úÂëµ½¿É¶ÁÐÔ¸üºÃ¡£
\r