[[TableOfContents]] == Linux Kernel == === Git === Git ¼­¹ö ¼³Á¤ ¹× »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ²ôÀûÀÓ. * GitGuideForKernelDevelopment === Development === Reading list in the Documentation directory * [http://kernel.org/doc/Documentation/HOWTO HOWTO] * [http://kernel.org/doc/Documentation/CodingStyle CodingStyle] * [http://kernel.org/doc/Documentation/SubmittingPatches SubmittingPatches] * [http://kernel.org/doc/Documentation/SubmittingDrivers SubmittingDrivers] * [http://kernel.org/doc/Documentation/SubmitChecklist SubmitChecklist] ARM Linux Developer * http://www.arm.linux.org.uk/developer/ === kmemleak === * Kernel Memory Leak Detector : http://www.procode.org/kmemleak/ * git branch (topic kmemleak) : http://www.linux-arm.org/git?p=linux-2.6.git;a=summary === mmap === * cache policy : arch/arm/mm/mmu.c {{{#!vim c static struct cachepolicy cache_policies[] __initdata = { { .policy = "uncached", .cr_mask = CR_W|CR_C, .pmd = PMD_SECT_UNCACHED, .pte = 0, }, { .policy = "buffered", .cr_mask = CR_C, .pmd = PMD_SECT_BUFFERED, .pte = PTE_BUFFERABLE, }, { .policy = "writethrough", .cr_mask = 0, .pmd = PMD_SECT_WT, .pte = PTE_CACHEABLE, }, { .policy = "writeback", .cr_mask = 0, .pmd = PMD_SECT_WB, .pte = PTE_BUFFERABLE|PTE_CACHEABLE, }, { .policy = "writealloc", .cr_mask = 0, .pmd = PMD_SECT_WBWA, .pte = PTE_BUFFERABLE|PTE_CACHEABLE, } }; }}} dma_alloc_coherent()¿Í dma_alloc_writecombine() Â÷ÀÌ´Â ³»ºÎÀûÀ¸·Î __dma_alloc()À» È£ÃâÇÒ ¶§ ¸¶Áö¸· ÀÎÀÚÀÎ pgprot_t ŸÀÔÀÇ prot¿¡ ³Ñ±â´Â °ªÀÌ ´Ù¸£´Ù. dma_alloc_coherent()´Â pgprot_noncached() ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ°í, dma_alloc_writecombine()Àº pgprot_writecombine() ¸ÅÅ©·Î¸¦ »ç¿ëÇÑ´Ù. * include/asm-arm/pgtable.h {{{ #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) & ~(L_PTE_CACHEABLE | L_PTE_BUFFERABLE)) #define pgprot_writecombine(prot) __pgprot(pgprot_val(prot) & ~L_PTE_CACHEABLE) }}} Áï, cache¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÏ´Â °ÍÀº °°Áö¸¸, ³»ºÎÀûÀ¸·Î cache¿Í main memory »çÀÌÀÇ write bufferÀÇ »ç¿ë ¿©ºÎ¸¦ °áÁ¤ÇÏ´Â °ÍÀ¸·Î »ý°¢µÈ´Ù. dma_mmap_coherent()¿Í dma_mmap_writecombine()µµ °°Àº ¸Æ¶ôÀ¸·Î º¸ÀδÙ. dma_free_writecombine()Àº ´Ù¸¥ ÇÔ¼öµé°ú´Â ´Ù¸£°Ô dma_free_coherent()·Î ¸ÅÅ©·Î¸¦ »ç¿ëÇØ Á¤ÀǵǾî ÀÖ´Ù. == Crosstool == Crosstool variables * http://freaknet.org/martin/crosstool/crosstool-vars.html GCC options you should know * http://www.freeos.com/articles/3185/ == Flash File System == Hints * http://lists.infradead.org/pipermail/linux-mtd/2007-July/018890.html jffs2, yaffs2 and ubifs - another flash file system * UBIFS - http://www.linux-mtd.infradead.org/doc/ubifs.html == MPlayer Codec == MPlayer¿¡ CodecÀ» Ãß°¡Çϰųª ¼öÁ¤ÇÏ´Â ¹æ¹ýÀ» ««È÷ ±â¼ú. * MPlayerCodec == Google Android == Google Android Æ÷Æà ÀÛ¾÷ ¹× °ü·Ã ³»¿ë Á¤¸®ÇÑ ¹®¼­. * AndroidPortingOnRealTarget == S3C6400 == KELP ¼¼¹Ì³ª¿¡¼­ ÀÛ¼ºÇÑ ÀÚ·á. * [http://kelp.or.kr/korweblog/upload/54/20080715233355/S3C6400_NAND_Controller.pdf NAND Controller] * [http://docs.google.com/Present?docid=dhf2pf26_18fgc8hhhp&skipauth=true Multi Format Video Codec] * [http://docs.google.com/Present?docid=dhf2pf26_34cmjpbxgj&skipauth=true High Speed MMC Controller] * [http://docs.google.com/Present?docid=dhf2pf26_60g6gnzcfc&skipauth=true ADC & Touch Screen Interface] == Perl == === PerlÀÇ ¾ÏÈ£ °°Àº ±âº» º¯¼ö === * $_ - µðÆúÆ® ½ºÄ®¶ó º¯¼ö * $: - ´Ü¾î ±¸ºÐÀÚ * $% - Top of page format ¿¡¼­ Page ¹øÈ£ * $^ - ÇöÀç ¼±ÅÃµÈ ÆÄÀÏÇڵ鿡 ´ëÇÑ Top of page format À̸§ * $~ - ÇöÀç ¼±ÅÃµÈ ÆÄÀÏÇڵ鿡 ´ëÇÑ Format À̸§ * $= - ÇöÀç ¼±ÅÃµÈ ÆÄÀÏÇڵ鿡 ´ëÇÑ ÆäÀÌÁöÀÇ ±æÀÌ * $- - ÇöÀç ¼±ÅÃµÈ ÆÄÀÏÇڵ鿡 ´ëÇÑ ÇöÀç ÆäÀÌÁöÀÇ ³²Àº ÇàÀÇ ¼ö * $/ - '\n'? * $^I - backup file extension on inplace editing * @ARGV - ¸»±×´ë·Î ÀÎÀÚÀÇ ¸®½ºÆ® (ÀÎÀÚ¸¸ Æ÷ÇÔµÊ) * %ENV - ÇöÀç ȯ°æ º¯¼ö Çؽà * %SIG - ½Ã±×³Î Çؽà ($SIG{'INT'} = 'my_interrupt_signal_catcher';) === Pattern === * $& - Á¤±ÔÇ¥Çö½ÄÀÌ ÀÏÄ¡µÈ ¹®ÀÚ¿­ ºÎºÐ * $` - Á¤±ÔÇ¥Çö½ÄÀÌ ÀÏÄ¡µÈ ¹®ÀÚ¿­ÀÇ ¾Õ ºÎºÐ * $' - Á¤±ÔÇ¥Çö½ÄÀÌ ÀÏÄ¡µÈ ¹®ÀÚ¿­ÀÇ µÞ ºÎºÐ ÆÐÅÏ ¸ÅÄ¡ ÈÄ \1, \2, \3°ú °°Àº °ªÀ» $1, $2, $3 µî¿¡ ¼³Á¤ÇÑ´Ù. ÀÌ·± ¹æ¹ýÀ» ¸®½ºÆ® ±¸¹®¿¡ »ç¿ë°¡´ÉÇÔ. * /(\w)+\W+(\w)+/ - ÆÐÅÏ ¸ÅÄ¡ ÈÄ ($1, $2)¿Í °°Àº ¸®½ºÆ®·Î »ç¿ë °¡´É * /(\S+)\s+(\S+)\s+(.*)/ - ($1, $2, $3)ÀÇ ¸®½ºÆ®·Î »ç¿ë °¡´É perl°ú viÀÇ substitutionÀº ¾à°£ ´Ù¸§ * s/(\S+)\s+(\S+)\s+(.*)/$1,$2,$3/ - perlÀÇ °æ¿ì ¾Õ ÆÐÅÏ ³»¿¡¼­ \1 µîÀ» »ç¿ë * s/\(\S+\)\s+\(\S+\)\s+\(.*\)/\1,\2,\3/ - vi´Â ¾ÕÀÇ sub pattern ÂüÁ¶½Ã \¸¦ »ç¿ë == vi == === vimdiff === * vert diffs[plit] filename * diffthis * diffu[pdate] * [c - jump backwards to the previous start of a change. * ]c - jump forwards to the next start of a change. * do - obtain * dp - put * 1,$+1diffget - gets all diffs from the other buffer * !cp % tempfile * vert diffs[plit] tempfile === buffer === * bn - go to the next buffer in buffer list * bp - go to the previous buffer in buffer list