<div dir="ltr"><div><div><div><div><div>> On Fri, Jan 26, 2018 at 1:58 AM, inventsekar <span dir="ltr"><<a href="mailto:inventsekar@gmail.com" target="_blank">inventsekar@gmail.com</a>></span> wrote:<br>><span style="color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap;background-color:rgb(255,255,255)"> Hi all, ... <br><br>></span><span style="color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap;background-color:rgb(255,255,255)"> 1. May i know, other than C language, is there any other programming language is/are used inside Linux Kernel?!?! <br>></span><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"> is there any c++, Perl, python programs are used for peculiar tasks inside Linux Kernel?!?! <br><br></span></div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">Well, let's find out ? If you open up a shell/terminal and change into the top level directory of your Linux kernel source and run the command below:<br><br>find . -type f -and -printf "%f\n" | grep -io '\.[^.]*$' | sort | uniq -c | sort -rn ( Breaking this down, find all files+get the filename+pull out the file extension+sort+only keep unique ext+sort with a stats count)<br><br></span></div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">On my system with the kernel source for  Linux-4.15 it shows me what's below... keep in mind this is the number of 'unique' file extension types in the kernel source tree. It's long but please keep scrolling all the way there is useful stuff at the bottom.<br>
 25965 .c<br> 20363 .h<br>   4074 .txt<br>   1470 .S<br>   1437 .dts<br>   1098 .dtsi<br>    827 .rst<br>    211 .gitignore<br>    207 .json<br>    200 .sh<br>     75 .py<br>     59 .cocci<br>     57 .svg<br>     49 .boot<br>     42 .tc<br>     39 .pl<br>     36 .config<br>     31 .debug<br>     19 .lds<br>     15 .conf<br>     14 .ppm<br>     14 .fuc<br>     12 .fuc3<br>     10 .exceptions<br>      9 .y<br>      9 .h_shipped<br>      9 .c_shipped<br>      9 .awk<br>      8 .scr<br>      8 .l<br>      8 .html<br>      8 .dot<br>      8 .8<br>      8 .1<br>      7 .sa<br>      7 .in<br>      6 .cpp<br>      6 .asn1<br>      5 .xsl<br>      5 .uc<br>      5 .po<br>      5 .inc<br>      5 .fuc5<br>      5 .cpu<br>      4 .tbl<br>      4 .S_shipped<br>      4 .map<br>      4 .ld<br>      4 .include<br>      4 .fail<br>      4 .doc<br>      3 .smp_defconfig<br>      3 .pm<br>      3 .mk<br>      3 .gdbinit<br>      3 .csv<br>      3 .am<br>      2 .up_defconfig<br>      2 .um<br>      2 .ubsan<br>      2 .seq<br>      2 .rules<br>      2 .reg<br>      2 .powerpc<br>      2 .postlink<br>      2 .platforms<br>      2 .platform<br>      2 .pbm<br>      2 .nommu<br>      2 .megaraid<br>      2 .kasan<br>      2 .inl<br>      2 .inf<br>      2 .ids<br>      2 .fax<br>      2 .FAQ<br>      2 .build<br>      2 .arm<br>      1 .xs<br>      1 .x86<br>      1 .x25<br>      1 .wimax<br>      1 .WARNING<br>      1 .vringh<br>      1 .vim<br>      1 .vdec2_defconfig<br>      1 .vdec2<br>      1 .uni<br>      1 .txtd<br>      1 .tex<br>      1 .syncppp<br>      1 .sym53c8xx_2<br>      1 .sym53c8xx<br>      1 .SRC<br>      1 .soc<br>      1 .smp<br>      1 .select-break<br>      1 .sed<br>      1 .script<br>      1 .sb1000<br>      1 .rest<br>      1 .recursion-issue-02<br>      1 .recursion-issue-01<br>      1 .readme<br>      1 .README<br>      1 .qlge<br>      1 .qlcnic<br>      1 .qla4xxx<br>      1 .qla3xxx<br>      1 .qla2xxx<br>      1 .preempt<br>      1 .PL<br>      1 .perf<br>      1 .pass<br>      1 .ore<br>      1 .opsp_defconfig<br>      1 .normal<br>      1 .nommu_defconfig<br>      1 .netlink<br>      1 .net<br>      1 .ncr53c8xx<br>      1 .modsign<br>      1 .modpost<br>      1 .modinst<br>      1 .modes<br>      1 .modbuiltin<br>      1 .mm<br>      1 .mISDN<br>      1 .mips<br>      1 .megaraid_sas<br>      1 .md<br>      1 .mak<br>      1 .mailmap<br>      1 .machine<br>      1 .lpfc<br>      1 .loopback<br>      1 .locks<br>      1 .Locking<br>      1 .libfdt<br>      1 .lib<br>      1 .LIB<br>      1 .kgdb<br>      1 .kcov<br>      1 .ipw2200<br>      1 .ipw2100<br>      1 .ips<br>      1 .iosched<br>      1 .inc_shipped<br>      1 .ignore<br>      1 .i2400m<br>      1 .hz<br>      1 .hysdn<br>      1 .hp300<br>      1 .host<br>      1 .HiSax<br>      1 .hfc-pci<br>      1 .hex<br>      1 .headersinst<br>      1 .glade<br>      1 .gitattributes<br>      1 .gigaset<br>      1 .gif<br>      1 .generic<br>      1 .gdbinit_400MHz_32MB<br>      1 .gdbinit_300MHz_32MB<br>      1 .gdbinit_200MHz_16MB<br>      1 .gcc-plugins<br>      1 .gate<br>      1 .fuc4<br>      1 .fuc0s<br>      1 .freezer<br>      1 .FPE<br>      1 .FlashPoint<br>      1 .feature<br>      1 .extrawarn<br>      1 .example<br>      1 .dtc<br>      1 .dtbinst<br>      1 .DOC<br>      1 .diversion<br>      1 .dino<br>      1 .devices<br>      1 .default<br>      1 .def<br>      1 .DAC960<br>      1 .cycladesZ<br>      1 .css<br>      1 .cputype<br>      1 .copyright<br>      1 .concap<br>      1 .common<br>      1 .cocciconfig<br>      1 .clean<br>      1 .checkpatch<br>      1 .char<br>      1 .ChangeLog<br>      1 .cfg<br>      1 .cert<br>      1 .cc<br>      1 .CAPI<br>      1 .cache<br>      1 .bus<br>      1 .buddha<br>      1 .binfmt<br>      1 .bc<br>      1 .avmb1<br>      1 .audio<br>      1 .asm-generic<br>      1 .asm<br>      1 .arcmsr<br>      1 .arch<br>      1 .aic7xxx<br>      1 .aic79xx<br>      1 .agh<br>      1 .ac<br>      1 .1996-2002<br>      1 .1995-2002<br>      1 .1994-2004<br>      1 .1992-1997<br>      1 .<div class="m_-2592061591979089025m_-4518451107076635332gmail-yj6qo"></div><div class="m_-2592061591979089025m_-4518451107076635332gmail-adL"><br></div>Somethings are obvious like we have <span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">: <br><br>25965 .c files <br>20363 .h files <br>4074 .txt files and  <br>1470 .S</span> files. <br><br>Somethings are not so obvious like what could possibly be a *.y file or *.tc file ?  If you type in find -name "*.y" in my case i see:<br><br>aruna@debian:~/linux-4.15$ find -name "*.y"<br>./drivers/scsi/aic7xxx/aicasm/<wbr>aicasm_macro_gram.y<br>./drivers/scsi/aic7xxx/aicasm/<wbr>aicasm_gram.y<br>./tools/perf/util/expr.y<br>./tools/perf/util/pmu.y<br>./tools/perf/util/parse-events<wbr>.y<br>./tools/bpf/bpf_exp.y<br>./scripts/dtc/dtc-parser.y<br>./scripts/genksyms/parse.y<br>./scripts/kconfig/zconf.y<br><br>Now if I pass that to the 'file' command ...<br><br>aruna@debian:~/linux-4.15$ file `find -name "*.y"` // <span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"> yes you need those back ticks :)</span><br><br>./drivers/scsi/aic7xxx/aicasm/<wbr>aicasm_macro_gram.y: C source, ASCII text<br>./drivers/scsi/aic7xxx/aicasm/<wbr>aicasm_gram.y:               C source, ASCII text<br>./tools/perf/util/expr.y:     <wbr>                                                    C source, ASCII text<br>./tools/perf/util/pmu.y:      <wbr>                                                   C source, ASCII text<br>./tools/perf/util/parse-events<wbr>.y:                                          C source, ASCII text<br>./tools/bpf/bpf_exp.y:        <wbr>                                                    C source, ASCII text<br>./scripts/dtc/dtc-parser.y:   <wbr>                                                  C source, ASCII text<br>./scripts/genksyms/parse.y:   <wbr>                                               C source, ASCII text<br>./scripts/kconfig/zconf.y:    <wbr>                                                   C source, ASCII text<br><br></span></div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">So 'file' tells us these are C program files ? Lets verify ? If you 'cat' any of these files you will see it is actual C code. Why does it have a file extension of .y ? <br>Valdis or Gregkh may be able to shed some light on that I have no idea :)<br><br></span></div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">Now we do the exact same thing for *.tc files.<br><br>aruna@debian:~/linux-4.15$ find -name "*.tc"<br></span></div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br><snip><br></span><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">./tools/testing/selftests/<wbr>ftrace/test.d/00basic/<a href="http://basic3.tc" target="_blank">basic3.<wbr>tc</a><br>./tools/testing/selftests/<wbr>ftrace/test.d/00basic/<a href="http://basic4.tc" target="_blank">basic4.<wbr>tc</a><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><snip><br><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">and pass this to 'file' and we see.. they seem to be shell scripts ? <br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">aruna@debian:~/linux-4.15$ file `find -name "*.tc"`<br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br><snip><br>./tools/testing/selftests/<wbr>ftrace/test.d/00basic/<a href="http://basic3.tc" target="_blank">basic3.<wbr>tc</a>:                  POSIX shell script, ASCII text executable<br>./tools/testing/selftests/<wbr>ftrace/test.d/00basic/<a href="http://basic4.tc" target="_blank">basic4.<wbr>tc</a>:                  POSIX shell script, ASCII text executable<br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><snip><br><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">So let's verify again ? By running -->aruna@debian:~/linux-4.15$ cat ./tools/testing/selftests/<wbr>ftrace/test.d/00basic/<a href="http://basic4.tc" target="_blank">basic4.<wbr>tc</a><br><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">and <span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">we see they are shell scripts.</span><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br>#!/bin/sh<br># description: Basic event tracing check<br>test -f available_events -a -f set_event -a -d events<br># check scheduler events are available<br>grep -q sched available_events && exit_pass || exit_fail<div class="gmail-yj6qo"></div><div class="gmail-adL"><br></div>There are many 'interesting' things hidden away down the kernel source rabbit hole. So explore with a child's curiosity, have lot's of patience and wash +rinse+repeat as necessary.<br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br>Good luck !<br><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap">Aruna ( to those who are long time kernel hackers and veterans my humble apologies but I felt this was needed.. )<br></span></div><div><div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br><br><br><br><br><br><br><br><br> <br>  <br></span><div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br></span><div><div><span style="background-color:rgb(255,255,255);color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap"><br><br>></span><span style="color:rgb(40,38,37);font-family:"source sans pro","open sans",georgia,serif;font-size:15px;white-space:pre-wrap;background-color:rgb(255,255,255)"> 2. I believe some assembly language and shell scripting also used.. how can I check them? Can you point me which part of the source code contains the assembly and shell scripting<br><br><br></span><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Best regards</div><div dir="auto">Sekar</div></div>
<br>______________________________<wbr>_________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.or<wbr>g</a><br>
<a href="https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" rel="noreferrer" target="_blank">https://lists.kernelnewbies.or<wbr>g/mailman/listinfo/kernelnewbi<wbr>es</a><br>
<br></blockquote></div><br></div></div></div></div></div></div></div></div></div>