Slashdot Mirror


Linux 2.4 Schematic Poster (Generated From Source!)

Dave Sifry writes: "Rusty Russell has posted the scripts that render a function call graph of all of the .c files in the Linux kernel. Each file is graphically represented and named, and function calls are graphically represented inside of each source file. The end result is a 180MB vector PostScript file. You can get the source code and then render it yourself, or if you just want to get the big finished poster, send an e-mail to Linuxcare or contact EverythingLinux if you live down under. BTW, it took us about 5 hours to get that file to print at a print shop down at LWE - that much vector PostScript really tested the limits of their big printers!"

7 of 127 comments (clear)

  1. Detailed Explanation by rusty · · Score: 5

    Hi all,

    1) This does not generate a call graph. It is a static rendering of all the functions in the .c files of the kernel.

    2) Yes, the images correspond to the code: forks represent if and switch() statements, circles cover the code within them. Also, code with asm statements, inline, etc are `hairier' (look in the architectures). So, a big star is either a big switch or an if...else if...else if..... If it's inside a circle, there's a loop around it. Two circles inside each other: nested loops. etc.

    3) Why PostScript? For the 2.3.18 one I wanted to learn about PNG, so I did it in PNG. But I wanted people to be able to print out copies at home on small printers, so I wanted something scalable: 1GB PNG was not the answer. So I learnt PostScript and changed over to that; the `posterize' shell script lets you make an NxN poster for printing (I recommend >= 6x6).

    4) cannot find -lfl
    You need flex installed (or use lex and change the Makefile).

    5) shopt: command not found
    Run bash2, or remove the line:
    shopt -s nullglob; for f in $(KERNEL_DIR)/$$d/*.c; do \
    And replace it with these two (don't miss the trailing \'s!):
    for f in $(KERNEL_DIR)/$$d/*.c; do \
    if [ "$f" = "$(KERNEL_DIR)/$$d/*.c" ]; then continue; fi \

    6) tempfile: command not found
    Change the two occurrances of this (classify_nonstatics.sh and conglomerate_functions.sh) to:
    TMPFILE=`mktemp ${TMPDIR:-/tmp}/$$.XXXXXX`

    Please give feedback for these, and any other bug reports to rusty at my linuxcare.com.au address, and I'll release 2.4.0a soon...

    Thanks!
    Rusty.

  2. Fast Mirror (SunSITE dk) by creinig · · Score: 5

    Just mirrored it at http://sunsite.dk/lgdc/tmp/Final-0.2-30pct-index_3 2.png
    It's hosted at SunSITE Denmark as you see, which should have enough bandwidth.
    And yes, it's very cool, and it's completely unreadable at that size & resolution :)

  3. Re:Could you imagine... by warpeightbot · · Score: 5
    Actually, if the stability of the running code is any indication (and I know my priestess is going to make me do a thousand Hail Venuses for this blasphemy) Win2K can't be that bad. It's just BIG.

    I thought the most telling thing, though, was what Linus said two years ago at a documents show in Atlanta. He was in a panel discussion with a Microsoft Marketroid (and maddog and a Wall Street analyst) and the 'droid was going on about Microsoft's huge labs where they could replicate any problem known to man. Then Linus in a quiet voice told the story of how the U.S. Post Office (that's right, boys and girls, Uncle Sam runs LINUX) had a problem with the computers that run the bar code sprayers. They called Red Hat, Red Hat emailed Linus, who thought about it, vi'ed the appropriate source file, discovered the race condition, fixed it, sent it back, USPS recompiled, and it worked. Total time, 48 hours. Then he said something which caused complete silence in the room:

    We didn't have to replicate it, we understood it. No one understands NT.
    This poster is proof of the easy understandability of Linux.

    --
    Software is like SEX: it's better when it's free.
    -- Linus Torvalds

  4. What? by SpanishInquisition · · Score: 5
    Linus wants to reimplement Linux in Postscript? What kind of crack has he been smoking?
    Linux running on a LaserWriter, what a joke.

    --
    Je t'aime Stéphanie
  5. What would be even cooler... by Salsaman · · Score: 5
    would be to have this diagram as a screen saver, and then to show small moving dots on the diagram showing exactly where each process was within the kernel.

    I wonder how difficult that would be to implement ?

  6. Heh! That's nothing by BluedemonX · · Score: 5

    There's an open source PERL listing out there that generates the picture of the goatse.cx guy out of Slashdot troll posts.

    --

    --- Jump!! Fire!! Bullet time!! - Lego version of the Matrix
  7. Re:5 hours rendreing? Duh... by $pacemold · · Score: 5

    5 hours does not surprise me at all. PostScript printers are optimized for text rendering, not vector rendering. 180MB of vector image at about 15 bytes per vector will be 12M vectors; the RIP is running at 700 vectors/sec. Not bad for (probably) MIPS running at 200 MHz without floating point - considering that PostScript vectors are rendered as rectangles with end caps and transitions, one-pixel accurate.

    Size of the file doesn't matter - each sequence of vectors is rendered separately, slapped on the bit map of the page, and on to the next one.

    HPGL/2 will not help - the complexity of the primitives is the same. HP/GL and PostScript share the same rendering backend on some printers.

    Most plotters nowdays are wide-format inkjets with the same raster backend as other printers. Old pen plotters can't physically do 700 vectors/sec. No way. More like 25. How about drawing the same thing for five days, switching depleted pens on the fly? (reminds me of the old days... where's the old trusty 7225?)