> On Fri, Jan 26, 2018 at 1:58 AM, inventsekar <inventse...@gmail.com> wrote: > Hi all, ...
> 1. May i know, other than C language, is there any other programming language is/are used inside Linux Kernel?!?! > is there any c++, Perl, python programs are used for peculiar tasks inside Linux Kernel?!?! 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: 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) 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. 25965 .c 20363 .h 4074 .txt 1470 .S 1437 .dts 1098 .dtsi 827 .rst 211 .gitignore 207 .json 200 .sh 75 .py 59 .cocci 57 .svg 49 .boot 42 .tc 39 .pl 36 .config 31 .debug 19 .lds 15 .conf 14 .ppm 14 .fuc 12 .fuc3 10 .exceptions 9 .y 9 .h_shipped 9 .c_shipped 9 .awk 8 .scr 8 .l 8 .html 8 .dot 8 .8 8 .1 7 .sa 7 .in 6 .cpp 6 .asn1 5 .xsl 5 .uc 5 .po 5 .inc 5 .fuc5 5 .cpu 4 .tbl 4 .S_shipped 4 .map 4 .ld 4 .include 4 .fail 4 .doc 3 .smp_defconfig 3 .pm 3 .mk 3 .gdbinit 3 .csv 3 .am 2 .up_defconfig 2 .um 2 .ubsan 2 .seq 2 .rules 2 .reg 2 .powerpc 2 .postlink 2 .platforms 2 .platform 2 .pbm 2 .nommu 2 .megaraid 2 .kasan 2 .inl 2 .inf 2 .ids 2 .fax 2 .FAQ 2 .build 2 .arm 1 .xs 1 .x86 1 .x25 1 .wimax 1 .WARNING 1 .vringh 1 .vim 1 .vdec2_defconfig 1 .vdec2 1 .uni 1 .txtd 1 .tex 1 .syncppp 1 .sym53c8xx_2 1 .sym53c8xx 1 .SRC 1 .soc 1 .smp 1 .select-break 1 .sed 1 .script 1 .sb1000 1 .rest 1 .recursion-issue-02 1 .recursion-issue-01 1 .readme 1 .README 1 .qlge 1 .qlcnic 1 .qla4xxx 1 .qla3xxx 1 .qla2xxx 1 .preempt 1 .PL 1 .perf 1 .pass 1 .ore 1 .opsp_defconfig 1 .normal 1 .nommu_defconfig 1 .netlink 1 .net 1 .ncr53c8xx 1 .modsign 1 .modpost 1 .modinst 1 .modes 1 .modbuiltin 1 .mm 1 .mISDN 1 .mips 1 .megaraid_sas 1 .md 1 .mak 1 .mailmap 1 .machine 1 .lpfc 1 .loopback 1 .locks 1 .Locking 1 .libfdt 1 .lib 1 .LIB 1 .kgdb 1 .kcov 1 .ipw2200 1 .ipw2100 1 .ips 1 .iosched 1 .inc_shipped 1 .ignore 1 .i2400m 1 .hz 1 .hysdn 1 .hp300 1 .host 1 .HiSax 1 .hfc-pci 1 .hex 1 .headersinst 1 .glade 1 .gitattributes 1 .gigaset 1 .gif 1 .generic 1 .gdbinit_400MHz_32MB 1 .gdbinit_300MHz_32MB 1 .gdbinit_200MHz_16MB 1 .gcc-plugins 1 .gate 1 .fuc4 1 .fuc0s 1 .freezer 1 .FPE 1 .FlashPoint 1 .feature 1 .extrawarn 1 .example 1 .dtc 1 .dtbinst 1 .DOC 1 .diversion 1 .dino 1 .devices 1 .default 1 .def 1 .DAC960 1 .cycladesZ 1 .css 1 .cputype 1 .copyright 1 .concap 1 .common 1 .cocciconfig 1 .clean 1 .checkpatch 1 .char 1 .ChangeLog 1 .cfg 1 .cert 1 .cc 1 .CAPI 1 .cache 1 .bus 1 .buddha 1 .binfmt 1 .bc 1 .avmb1 1 .audio 1 .asm-generic 1 .asm 1 .arcmsr 1 .arch 1 .aic7xxx 1 .aic79xx 1 .agh 1 .ac 1 .1996-2002 1 .1995-2002 1 .1994-2004 1 .1992-1997 1 . Somethings are obvious like we have : 25965 .c files 20363 .h files 4074 .txt files and 1470 .S files. 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: aruna@debian:~/linux-4.15$ find -name "*.y" ./drivers/scsi/aic7xxx/aicasm/aicasm_macro_gram.y ./drivers/scsi/aic7xxx/aicasm/aicasm_gram.y ./tools/perf/util/expr.y ./tools/perf/util/pmu.y ./tools/perf/util/parse-events.y ./tools/bpf/bpf_exp.y ./scripts/dtc/dtc-parser.y ./scripts/genksyms/parse.y ./scripts/kconfig/zconf.y Now if I pass that to the 'file' command ... aruna@debian:~/linux-4.15$ file `find -name "*.y"` // yes you need those back ticks :) ./drivers/scsi/aic7xxx/aicasm/aicasm_macro_gram.y: C source, ASCII text ./drivers/scsi/aic7xxx/aicasm/aicasm_gram.y: C source, ASCII text ./tools/perf/util/expr.y: C source, ASCII text ./tools/perf/util/pmu.y: C source, ASCII text ./tools/perf/util/parse-events.y: C source, ASCII text ./tools/bpf/bpf_exp.y: C source, ASCII text ./scripts/dtc/dtc-parser.y: C source, ASCII text ./scripts/genksyms/parse.y: C source, ASCII text ./scripts/kconfig/zconf.y: C source, ASCII text 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 ? Valdis or Gregkh may be able to shed some light on that I have no idea :) Now we do the exact same thing for *.tc files. aruna@debian:~/linux-4.15$ find -name "*.tc" <snip> ./tools/testing/selftests/ftrace/test.d/00basic/basic3.tc ./tools/testing/selftests/ftrace/test.d/00basic/basic4.tc <snip> and pass this to 'file' and we see.. they seem to be shell scripts ? aruna@debian:~/linux-4.15$ file `find -name "*.tc"` <snip> ./tools/testing/selftests/ftrace/test.d/00basic/basic3.tc: POSIX shell script, ASCII text executable ./tools/testing/selftests/ftrace/test.d/00basic/basic4.tc: POSIX shell script, ASCII text executable <snip> So let's verify again ? By running -->aruna@debian:~/linux-4.15$ cat ./tools/testing/selftests/ftrace/test.d/00basic/basic4.tc and we see they are shell scripts. #!/bin/sh # description: Basic event tracing check test -f available_events -a -f set_event -a -d events # check scheduler events are available grep -q sched available_events && exit_pass || exit_fail 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. Good luck ! Aruna ( to those who are long time kernel hackers and veterans my humble apologies but I felt this was needed.. ) > 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 > > Best regards > Sekar > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > >
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies