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!"
Well, you'd probably have to export a whole lot more of the kernel to userland than is done now. Also, the task switching would kill your speed.
Exactly where each process was within the kernel is pretty ambigious. On the other hand you
might be able to use the kernel profiling support for this.
Actually, alot of the new plotters being made by HP >do use PS....like the 2000 and 3000 series designjets.
-=Mongr=-
Thanks for the mirror BTW, now I can change my background :)
/.ed on a P133, 32mb ram, on a DSL link (40k upstream cap). Especially when the page has lots of non-mod_perl'ed cgis :)
I'm not sure what you're running off of, but try being
Ooops. And wow, did that hurt!
I was wondering what all that green pasta was at the supermarket....
--
> Does the length of the line/spiral represent the length of the function ?
Hi!
Well, look at analyze_function.lex, which does this breakdown; it's basically a line of length 1 per "statement" (the output of this is sent to data2ps, which randomly jitters the angle).
Hope that helps,
Rusty.
> Can we please have an assembly version so it takes 1/2 hour and not 1/2 day? :(
That would be wrong. It could be done in a 1/2 hour by using a much less naive system, and allowing it to be parallelized better.
I was optimizing for *my* time, not yours 8)
Rusty.
shopt is a bash BUILTIN command.
... is to add almost entirely at the top this line:
The PROPER solution to this problem
SHELL=/usr/local/bin/bash
(or wherever your bash resides)
that will make make use the shell provided.
I once met a professor of compsci at the university of waterloo who wrote some Java software for doing this kind of thing. We discussed using his software to analyze a very large software system I was working on at the time (IBM DB2 UDB). He has a web page with some code. Although they appear dated, you may also want to check out his student reports on the architecture of Linux (done using his tool, I would imagine).
STFU about slashdot bias.
...the horrors...
Try Together. www.togethersoft.com
I don't use their product, but it does what you want.
Oh, and they charge for it. That's business for you.
What distribution are you using? I'm getting TONS of errors when I try to compile this thing.. First problem was to fix the "shopts" line in Makefile to "set -o noglob" then I had to make some changes to gen_makefile.sh and comment a sed line out of Makefile, etc..
Now I'm stuck on "Runtime error (func=(main), adr=23): Divide by zero"
If you would like to take this discussion to email, remove "nispam." from my email address..
Geoff
I took Rusty's LGP source code and hacked it up (and hacked is definitely the dominant verb) so that it could work with any collection of *.c files. I named this hack "codewheel", although I promise I won't be passing the thing off like I wrote it or anything.
Basically, it works just like LGP except that it 1. Works with a single directory instead of many, 2. Doesn't put in Tux, the key, the title, or anything, and 3. Includes a slight more documentation than the original, though not that much more.
Everyone wanted it, it's now something you can check out and download and play with. Anybody who programs for a living will sneer and snicker at my efforts, but that's life, right? At least I put my efforts up for others. Enjoy.
- Jason Scott
Amateur Code Guy
It would be less overhead to use the
$$ facility.
TEMPFILE=/yourfastdisk/tmp$$
Ethics II Axiom 2. "Man thinks." B. Spinoza
They say they want to print posters. I like the idea. But won't they have to include the source code for the PS file on the back of the poster??? Otherwise it would violate the GPL no?
adrien cater
boring.ch
Point and Grunt
Rational Rose will do this. It is used for planning a system at the class level (and then generating the class files) or reverse-engineering existing classes into a UML diagram.
Note that Linus said "we" understood it - a group of people can understand Linux. No group of people, however large, however clever, can understand W2K :)
I'm pretty sure this part can be done in 5-20 minutes on my machine by recoding the algorithm to use a join (using the join(1) command) and am testing that now, but don't unfortunately have a bunch of time to spend on it.
I'll put a patch, not guaranteed to work, at http://puffin.external.hp.com/~bame/, if anyone's interested, hopefully tomorrow. Or e-mail me if there's a better place to send this possibly broken patch (besides sending it to Rusty when it seems to be working well).
when i run make it gives me this error
/bin/sh: shopt: command not found
Copying ring1 functions from kernel directory...
make: *** [image/ring1] Error 1
any ideas? looks like it is hanging on line 81 of the Makefile.
use LaTeX? want an online reference manager that
-- john
previously it was failing on rh 6.2. the make file has made it to the ring3 functions on mandrake 7.2.
use LaTeX? want an online reference manager that
-- john
it finally crapped out on mandrake 7.2 after it finished classifying the rings. i'm trying it on redhat 7.0 now. so far it has made it past the point where redhat 6.2 died.
use LaTeX? want an online reference manager that
-- john
Now if you're talking about a printer with 256MB, then that's something...
--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
I'm not sure it's such a great way to visualize anything. There is no design information presented in the diagram; just the entire call graph of the program, which you can tell almost as easily from looking at the code.
Any more information in the diagram--its arrangement into concentric circles and radial slices, for instance--was likely added manually (although I'm just guessing here).
Surely there are diagrams which capture the design abstractions of a system better than a call graph?
--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
Linus is actually guilty of a fairly major logic error here. Just because he can fix a bug once in Linux doesn't instantly mean the whole source is understood by him, much less actually understood by anyone. You only have to look on Kernel Traffic to see there are still bugs in the 2.4.x kernel (has anyone actually found all the filesystem corruption bugs yet?) that no one is quite sure of the solution to - just none of them are showstoppers.
Nothing in Linus' speech takes anything from Win2k either - it is entirely possible that a similar bug could be found in Win2k and fixed in just as fast a time (ping of death was fixed in under 24 hours for example). That doesn't instantly mean the Win2k source is completely simple - it just means that one bug was fixed quickly.
If you read "Inside Windows 2000 - 3rd edition" you'll start to see that the guts of Win2k actually are fairly well separated, possibly even better than the current Linux kernel. There is a clean separation between most components of the executive and the kernel and if there was a plot printed, my guess would be that it would look more like meatballs than spaghetti - lots of tightly coupled chunks of code with well defined interfaces between them. On a project as large as Win2k there is simply no other way you can effectively work.
Kudos to Linus for fixing a bug in the 2.0 kernel so quickly, but I'm afraid there is just no logical step you can make to the statement that "No one understands NT".
Fear: When you see B8 00 4C CD 21 and know what it means
Actually, they aren't the ones I was talking about. They are the strawmen generally set up when people don't want to admit bugs that are actually there. Look at these links:
http://kt.linuxcare.com/kernel-traffic/kt20010202_ 105.epl#5
http://www.uwsg.indiana.edu/hypermail/linux/kernel /0102.0/0220.html
Maybe your 'summary' was really a strawman and the fact is that Linux is getting complex enough that no one person can fully understand it?
Fear: When you see B8 00 4C CD 21 and know what it means
Your comment is incorrect by the simple fact that Win2k exists. If the collective knowledge of how it works does not exist then it is impossible that it was ever written.
The other fact is that it is relatively easy to get a high level view of how Win2k works (despite your unfounded rhetoric to the contrary). Read the book I mentioned in my original post.
Fear: When you see B8 00 4C CD 21 and know what it means
NOOBODY expects the spanish inquisition. I did why do you think I don't live in spain. ;P
Elephant: a mouse built to government specs
hrm. 'till the end of the world?
(re: the sig, in case you're wondering)
There's two ways to avoid being modded down around here.
Either make sure the main point of your message is how great Linux is or that Micro$oft (MUST use the dollar sign) really suck...
...or mention somewhere in your post that 'I know i'm going to get modded down for this but...'
Still, i'll probably get modded down for saying it...
(and never, never, try to be funny)
PigPog.
Come to think of it, a clone of Linus would really speed up development, wouldn't it? Or would we have to clone Alan Cox too?
You may also want to clone Andy Tannenbaum. Now that's either funny or trolling... not sure which...
(ping of death was fixed in under 24 hours for example).
Ummmmm... You misspelled "2 years" as "under 24 hours".
Ordinarily I don't bother with spelling corrections,
but this does totally change your post.
---CONFLICT!!---
My Lisp Machine has a database that it keeps for the *entire operating system*, not just the kernel, which is called WHO-CALLS. It's just that -- a db of what function calls what.
The object investigator uses this db to provide an in-depth view of every single random thing within the operating system. It's quite useful when hacking on something that has a lot of interconnections to other parts of the system.
Of course, the debugger is fantastically sophisticated as well. It provides a similar level of functionality. Too bad the Unix people never paid attention to their betters. Maybe someday they'll learn, or someone will write an easily portable Lisp-based OS.
err, flamebait? did i miss something, admittedly i spelt 'posters' wrong, but come on ...
Fry: heh, Yakov Smirnoff said it
Leela: No he didn't.
Maybe we should concentrate on "cloning" a bathtub for the Cox who's already here...
Ha! This is the funniest post I've read all day. Must have taken all of 5 minutes for this server to die.
Did you read the linked page before you posted to the topic? The poster at ThinkGeek has the actual contents of ~(1/2) the linux source (acct.c thru module.c). The schematic poster contains all the functions found within the linux source with some designation of how they all call each other.
Semper Ubi Sub Ubi
We better clone Mr. Gates so that the cloned Linus would keep up motivated (in the reverse direction).
Yes, it is. It's called the tux kernel poster. Big penguin thing, top left corner.
I am !amused.
counterpoint taken. :)
-
the story is an interesting one and I'm fascinated by it, but, on a side note i think this anecdote is an exqample of why we need to start thinking about an open group that could take up the mantle of responsibility for kernel development. I'm not saying this should reponsibility should be taken FROM Linus but for Linus. I can imagine that eventually he will grow weary of it. I'm not making predictions but even i got tired of my childhood toys. (no I'm not calling Linux a Linus' toy, my analogy is just poor but i think you get the point) I'm thinking along the lines of some kind of board or committee with Linus at the head that would oversee kernel dev. the idea has two benefits.
:)) if they knew there would be someone to go to even if Linus is unavailable.
1. Linus doesn't have to exhaust himself doing two jobs or feel obligated to the community as I'm certain he feels now. He would be free to loosen the reins a bit and relax.
2.I think companies would be more ready to move to Linux (isn't that our goal, world domination
I know that anyone could look at the kernel and make the appropriate adjustments but, Linus was bale to do it in under 48 hours. how long would the USPS have to wait if Linus was unavailable and they were forced to hunt down a competent coder to do the work that he could do in a short time. with a board available they would have multiple options and a list of names that they could be certain could fulfill their needs.
just imagine if linus had been unavailable. what if during the time he had taken a vaction to a deserted island with no net connection for a month in an effort to unwind. you may thin kthe USPS is slow but look at the volume they deal in. a week or a month of not being able to properly use my software and I start thinking "this is not the reliable easy to fix software i had heard it was. lets switch to solaris or *bsd."
do you understand what i mean? Linus if you're reading do you or are you so full of yourself that you don't care and think that there's nothing that could happen you couldn't fix in no time flat. if he's in a car crash and ends up in traction for a year kernel dev stops. If I'm a fortune 500 company that depends on kernel updates and new advances being implemented quickly i worry that there is no one to go to.
i think I've more than made my point. let the flamage begin.
-
dopp
-- If a god of love and life ever did exist, he's long since dead. Someone, something, rules in his place
Rusty
...
.c files. Perhaps thin faint arrows showing which functions call which funtions within the file. No external functions, or maybe just thinner/fainter arrows pointing in the direction of the called external function.
Very cool work - thanks ! Very Nasty Code - thanks !
Can you give us more of a description of *why* the code is doing, as opposed to *what* ? What are the deciding factors for the layout of the function blocks ? What about the colored lines within ? I know that forks represent code forks, but the curves ?
For example, I took a look at drivers/net/tokenring/olympic.c and it shows one function sprintf_info as a large block with a simple green spiral in it. No if/switch statements, so no forks in the line. Does the length of the line/spiral represent the length of the function ? I thought that was the size of the box
Need Input !
Possible enhancement - show partial call graphs, just within
94TT
Gotcha. I started poking through the code some more, but missed that :( Ah well.
Different issue now - the cut marks. I'm assuming you're supposed to cut at the lines pointed to by the arrows, right ? If you cut off the left and bottom margins, the bottom of the page still has the upper arrow of the cut-mark pointing down, and the right arrow pointing left at the left margin. These are within the viewable area.
Shouldn't the cut marks only have arrows in the discardable part of the image ?
94TT
Or you could use Ximian's Dia, which is FREE FREE FREE.
--
Hail Eris, full of mischief...
E pluribus sanguinem
Actually, there is a tool that does something like this. "Application Mining Suite" by a french outfit called CAST. Sadly, they are very Microsoft focused in their endeavours.
CAST website: http://www.castsoftware.com/This is my sig. Read it and weep.
Come to think of it, a clone of Linus would really speed up development, wouldn't it? Or would we have to clone Alan Cox too?
I don't think SMP would work with Linuses or Alans.
Could you imagine the power of a Beowulf cluster of Linus Clones?
"I'm The Bounty Bear. I will find him anywhere. I'm searching."
If we had an obfuscated post contest --> you would be in the top ten ;-)
"My mother never saw the irony in calling me a son-of-a-bitch." - Jack Nicholson
Wallpaper for the computer room anywone?
;-)
Reminds me of the Mandelbrot set and raytracing images I've seen written in .ps. As it takes a while to render those on my K6, I wonder what the
old printers at our college would think of them..
--
Escher was the first MC and Giger invented the HR department.
This is cool and I just started working for a company that sells really big printers. I print 100 meg files all the time. ;-). Does anyone have a fast connection they can offer the postscript file for download?
~Bryan Starbuck
A program change PS to a graphics format (like a virtual printer, substitutes *.bmp or *.xpm pixels for printer dots) would be handy -- does one exist?
(Does anyone want to make one?)
Changing any other (graphics) format would then be simple as [load] and [save-as] with any graphics editor.
Cloning Alan Cox would be a bad idea; though not as bad as cloning RMS .
You know they don't call it GNU/Linux for no reason..
--
One future, two choices. Oppose them or let them destroy us.
Actually, we once wrote an application server entirely in PostScript, including an object-oriented database, an object system with multiple inheritance, mod-loadable signed applications, an image processing library, and other goodies. It was in PostScript because it was designed to run inside devices that already ran PostScript.
We wrote some of the code directly in PostScript, but we wrote other parts of it in a language called PdB, which was a C++-like syntax to PostScript compiler. We worked with the guy who wrote the compiler, but eventually he quit the project and went to work for Sun on the Oak project and wrote their compiler -- startlingly similar syntax. The guy who wrote the compiler was named Arthur van Hoff... Eventually when Java came out we re-wrote the whole thing in Java.
Someone trying to do this with Windows 2000? Ever seen a picture of a really, REALLY pot of spaghetti?
40 million lines of code. It may be flamebait, but it's TRUE flamebait.
He who joyfully marches in rank and file has already earned my contempt. - "Big Al" Einstein
BTW, it took us about 5 hours to get that file to print at a print shop down at LWE
Exactly how old is their equipment? Modern wide format printers can print several square meters per hour, and I've ripped 250+MB combined CMYK bitmap and vector files (with meshed CMYK gradients and other complicated goodies) on a Fiery ZX in under 10 minutes.
In any case, compress that thing before sending since vector PS files compress quite well.
So it will have to render in bands.
You should have seen it when it only had 4 MB RAM.
Rendering on the host is much better choice.
And so I finally convinced my new employer to at least buy a host-based RIP. Things are much nicer now and big files crunch really fast. If only they would upgrade their hub to 100Mbps so it doesn't take forever for GB files to get over the network to the RIP.
TIFF would just be the rasterized data. You're just moving the processing from the printer to the workstation producing the TIFF.
PostScript vectors are rendered ... one-pixel accurate.
You set curve flatness in the creating program or let the RIP choose its default according to resolution. A flatness of one pixel on on this thing could kill many RIPs if they were processing this for high-resolution (3600+dpi) film. A flatness of 1 on a probably 720dpi wide format printer isn't much of a problem for a good RIP.
Most plotters nowdays are wide-format inkjets with the same raster backend as other printers.
Our 3-year-old wide format printer (you're correct, it's a really big inkjet) has an internal rasterizer with 32MB RAM and it can take a day to output a complex file. But complex 1GB+ PS files with the separate workstation RIP are no problem. This thing should only take minutes, not hours, to RIP. Depending on ink, size and quality settings, maybe an hour to print.
Methinks the service bureau used a wide format with an internal rasterizer, and that's pretty pathetic for a commercial SB. Maybe it was someplace that's only used to outputting architectural drawings, which don't get quite this complicated?
Where did you get the PS fiel? Generated it yourself with the script?
I'm not on the kernel 2.4 yet, but I'd like to get my hands on the PS or HP file. Can you help me?
O they do, I didn't say that. It's just not as efficient a language for vector drawing. Very good at page setting, and vector text.
I fail to see the flamebait in this; practically anyone in Europe who has ever ordered something from across the ocean is used to either unavailability or age-long delays.
As a state gets corrupt, its laws multiply; the most corrupt states have the most numerous laws. (Tacitus, Annales 3:27)
A quick glance at the Makefile says 'yes'. If you want to try running it without the complete source you can change the line in the Makefile from: RING3:=arch/alpha arch/arm arch/i386 arch/ia64 arch/m68k arch/mips arch/mips64 a rch/parisc arch/ppc arch/s390 arch/sh arch/sparc arch/sparc64 to RING3:=arch/i386 Haven't tried it, so I can't say for certian that it will work. It's worth a shot though.
I am running into consistant trouble when it is perfroming the ring 3 calculations. it always seems to crap out looking for the other platforms. I am running mandrake 7.2 and it craps out in the same place with the new script as well as the old script. Do I not have the entire source? Linux Newbie so be gentle :-)
Go to the linuxcare site...he's got 2.4.0a out now. It fixes all of the RHL6.2 bugs. I'm running it right now. WOOHOO...Got to go buy a ream so I can run ./postersize letter 10
I considered something like this a while back - basically take a graphics tablet and pen-type stylus and hand-write away at it. Then produce a statistic model for acceleration as you write each letterform. Then you turn *that* into a T1 font that not only superficially resembles your own handwriting style, but also contains "random variation" giving it a more natural feel too.
You not only have to vary the form each time a glyph is invoked, but also keep track of context between glyphs. The amount of source input necessary is probably considerable to get a good model, and the preprocessing non-trivial. But I always thought it would be a really cool thing to do even if I can't immediately see any useful applications.
The main problem I saw was that most devices attempt to cache font renderings so you can't actually get different shapes on subsequent invocations of the same glyph. If you can afford the speed hit of disabling your font cache (and your engine supports this - the font engine is usually subject to weird and proprietary optimisations and not easily fiddled with - the idea could fly though.
This is my World Wide Web of Whatever
doxygen can do that: Is has an option to emit class graphs for the dot graph layouter.
Marquise
-- I need a new sig.
Pardon my ingratitude towards Rusty ( I realize this must have been a herculean effort ), but I fail to see why this script should work exclusively on kernel source. This script would be of infinite use to coders everywhere if it could be rewritten to handle any source. Maybe it'll be my next project.
"The genes are the master programmers, and they are programming for their lives" - Richard Dawkins
FreeBSD already has something similar and a bit more useful. There is a hypertext, cross referenced presentation of the entire CURRENT branch of the kernel. It is not quite as pretty as the image of the linux kernel: http://lxr.linux.no/freebsd/source
Our 3-year-old wide format printer ... has an internal rasterizer with 32MB RAM
Assuming 720 dpi and 4 primary colors, there is enough RAM for only 129 square inches (without compression or MEt), not enough even for tabloid 11x17 paper.
So it will have to render in bands.
But to render in bands, PostScript needs to store the whole file (or the graphics primitives generated by the interpreter). 180MB will not fit into 32MB. There are three choices now: 1) printer hard disk, if available; 2) use image compression; 3) die.
Primitives file just maybe may fit: 12M vectors, assuming short vectors, smart encoding and dropping subpixel vectors... but then you have close to no memory for the raster buffer. It will take a long long time to print that file.
Rendering on the host is much better choice.
Original Apple LaserWriter had Motorolla 68000 at 11.16MHz and 1.5MB of memory, more then high-end personal computers at the time (1984).
Ah hah! Now I know why I got bad grades in all my programming classes!
---- Just another spud server.
I really have to get the source, as I really want to know how he tracked function pointers.
Just because I can imagine doing a hippopotamus, doesn't mean I'd like to do it.
Hmm. I think I am going to modify this and see how it works on the FreeBSD kernel. If I have some free time. I usually get about 5 hours of sleep a day as it is, usually less. I don't know if I could survive another pet project that will produce something I will never use.
{Then again, I could make the file and print them on the school's printers. I will just have to run when the admin bursts out of the office wondering wtf is going on. Why is some one printing a 100+MB file?!?!?!}
---
"Do not meddle in the affairs of sysadmins,
---
"Do not meddle in the affairs of sysadmins,
for they are subtle and quick to anger."
I found that this didn't work on my Slackware 7.0 box, as it couldn't find the mktemp command. However, as an earlier post suggested, TMPFILE=tmp$$ seems to have done the job.
Now I just have to wait another few hours for it to render...
Stories like this don't build confidence that the Linux development process is fault-tolerant of human failures.
What happens to the Linux OS when Linus isn't around anymore?
Are they now going to email these 180MB vector postscript files to everyone?
...
O dear
...
Does anyone know where I can get a new Hard Drive like Really fast? =/
If an experiment works, something has gone wrong.
For the Windows world, you might try Understand for C++ from Scitools (www.scitools.com), or CC-Rider from Western Wares (www.westernwares.com). Both allow you to generate function call graphs for a body of C or C++ source code. Understand for C++ seems a little less picky than CC-Rider in terms of dealing with missing include files, whereas CC-Rider seems to be a little more stable overall, but both are pretty cool tools.
Well. I think that is a really nice thing. I would really like to have this tool for C,fortran,perl, etc.. and there should be an option for output in ascii and there should be smart settings for recursive functions etc... A really nice thing. And you should NOT complain about postscript. There is a postscript webbserver! And there is a ... well look at my nick to find out what language it is written in.
So, how long will it take until I can order one of these posters from ThinkGeek or Copyleft? I want one!
Alex Bischoff
---
Alex Bischoff
HTML/CSS coder for hire
I'm looking for a program that instead of using the directory structure uses the class heirarchy to draw a map of a program.
I wonder how difficult that would be to implement ?
About as difficult as a debugger, I'd imagine...
I think you'd end up watching a dots move around the subsystems displaying the screen saver, for the most part.
I forget what 8 was for.
that's the *text of the kernel, not a map of the kernel.
This is just like television, only you can see much further.
The Makefile uses /bin/sh, which is a symlink to bash on a RedHat 6.2 system. Bash doesn't understand shopt, but bash2 does. Assuming you have bash2 installed, login as root and change the /bin/sh symlink so it points to /bin/bash2. That should make things work under RH 6.2.
update that works for redhat 6.2 http://lgp.linuxcare.com.au/lgp-2.4.0a.tar.bz2
use LaTeX? want an online reference manager that
-- john
the author sent me a patch to take care of the tempfile stuff in rh 6.2
download patch here
use LaTeX? want an online reference manager that
-- john
http://sage.che.pitt.edu/~harrold/mirrors/Final-0. 2-30pct-index_32.png
use LaTeX? want an online reference manager that
-- john
I dunno, the image just strikes me as sort of...
-This sig intentionally left blank
I usually never even see AC posts, but fortunately for you I fscked up my browsing settings. (They're fixed now, BTW.) No, I don't have a link, but it's been tossed around on the mailing lists several times. You can go to http://gcc.gnu.org/ and search the lists. I don't think it ever got formalized to one of the extensions listed on the Extensions page.
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
I've been looking at Doxygen to help document the guts of the new replacement libstdc++-v3 library. These scripts would also help, in a big way.
I very much want to run the code for the compiler itself through these scripts and doxygen.
Many people, over the last year-and-some-odd, have made good progress towards implementing a new back-end target in GCC: an XML generator for your code. Rather than creating assembly, GCC would create XML. (And you'd better damn well believe that the first thing we'd run through it would be the sources to the compiler itself! :-)
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
Are you suggesting that Win2k is not just spaghetti, but something like the platonic ideal of spaghetti?
I can buy that.
I don't need large brains to have a good time.
grin!
...) on active postscript fonts. These fonts would update their font metrics pseudorandomly after each character, thus retaining their general shape yet never printing the exact same way twice.
Guido Van Rossum's brother apparently did some work (or worked for a company that
Kinda neat.
You can probably chase it down from python.org
The kernel doesn't stop with out him. Most of the day to day development isnt done by Linus, it's don by the maintainers of the specific subsystems. Linus does organize final releases, but that isn't even soley his job. One of the late 2.2 kernels(17 I think) was actually released by Alan Cox before Linus gave it final blessing.
The bug mentioned here was fixed by Linus, but he is certainly not the only one capable of fixing it. He probably fixed it because he was the contact for that part of the kernel and he was the one who found the solution first. If he wasn't reached RedHat would have brought it to someone else.
If Linus was in a car accident, some slow down may occur in areas where Linus would normally be the standard contact, but other developers would take up the slack. It would be much like the head of the NT Executive team being in a car accident. A very valuable programmer(and human being) would be injured, but the project would go on without it. No one talks about the NT kernel team much though.
treke
Wankers claiming that anti-MS stuff always gets modded up... or conversely that pro-MS stuff get modded down. /.? I've noticed a slight trend here.
/.? Mindless humorless trolls overreacting, and spouting abuse at anyone who disagrees with them.
Do you actually read
Stupid fuckers moaning about how they are about to get modded down.
Learn to take a joke.
Why don't you just fucking kill yourself, and save the world the pain of suffering your presence any longer.
If i had to live life as you apparantly do, with no humor, and without the guts to even speak as myself (AC) then i probably would. Pitiful.
How about another thing to expect on
PigPog.
Also, why would it not work for kernel threads ? You could use one of the debugging tools.
[self emitOpinion:
[Opinion opinionAgreeingTo:
[[Thread currentThread] previousPost]];
1 reply beneath your current threshold.
Doesn't it strike anyone else as ... well not really smart, to print this in PS ?
For ze dUdes out there, large printers are called plotters, and they prefer languages like HPGL/2-RTL, CALS or even straight TIFF. Much better suited languages for that kind of work.
5 hours, Jesus H Christ !
The poster was hanging up on the linuxcare booth. They had a spliced together version which was put together from a bunch of standard letter size printouts. They also had a glossy poster version but the print quality was not as detailed as the spliced version. The tech told me they had tried to print it off a computer with a quarter gig of ram and the thing just choked... This was one of the *coolest* things I saw from the expo and I am absolutely going to pick one up. I wonder if thinkgeek.com is going to put one out?
They had this at the LinuxCare booth at Linux expo, it looks really cool, like a set of conentric circle. The best part of course was that Linus wandered over to look at it while I was there!
.ps file so that the poor guy doesn't get slashdotted. with Email
Could some one please mirror the
The difference between Canada and the USA is that in Canada healthcare is a right and gun ownership is a privilege.
Hey! I can do annoying pseudocode posts too. I'll do mine in SQL:
SELECT nickname + ' is a complete moron.'
FROM users
WHERE posting_style = 'half-assed pseudocode'
--Shoeboy
this reminds me of the back of the redhat FY1999 Annual Report. the letter to shareholders was on the front, and on the back was the source code to the original v0.1 kernel by Linus.
if i could find the link on corporate-ir.net, i'd link to the web version of the report, but it looks like they've dropped it and are only distributing the 10K.
pity. a lot of people really dug that poster, and have it hanging in their offices. i know a lot of people at redhat have them in their cubes.
- Entertaining Bits from the Ancient Kernel Tree
Actualy, I work for Microsoft, and have access to the win2k source code. I ran the tool over the code and code this killer source ring
Someone you trust is one of us.
will the paosters be available in Europe anytime soon?
Fry: heh, Yakov Smirnoff said it
Leela: No he didn't.
Congrats to Rusty for this, it couldn't have been easy...
rr (No relation :)
Quidquid latine dictum sit, altum videtur.
http://128.119.144.229/files/Final-0.2-30pct-index 32.png
Liberty.
Sorry for the offtopic post, but there is a PNG available of the 2.3.18 version he did originally. It's 1.5 mb, and I don't know how much bandwidth the server has, so you may want to mirror it.
Anyway, sorry about that, feel free to mod me down.
--Shoeboy
This program is dependent on a program called tempfile. I've tried running it.. But it complained of not finding that program.
Well. My guess is that tempfile just gives a temporary filename ready for use. So, the (not politically correct) fix would be a perl script called tempfile.
#!/usr/local/bin/perl
print "/tmp/",rand(100000);
Worked for me ! My poster is on the way.
Fo example:
- Miró: Simple programs, almost naive. Few calls, it needs more work.
- Klee: Asshole!!!, he wrote four functions and want me to approve him. Draw it again Sam.
- Picasso: He doesn't know in deep about structured programming. Better improve the code, it's a mess.
- Dalí: This guys knows about object oriented programming.
- Impressionist: It's a master in programming, but may be the code has too many functions and it's hard to understand. Better to crisp it slightly.
As you see, the program is useful too.--ricardo Estilo Dalí: muy bien estructurada u orientada a objetos. Impresionista: el hombre es un monstruo de la programación.
sgis ddo ekil t'nod i
"Send $24.95 to the human genome project for a printed copy of Linus Torvalds' complete genome! Straight from the sources! Only takes 2000 hours to render on an average Postscript printer."
Come to think of it, a clone of Linus would really speed up development, wouldn't it? Or would we have to clone Alan Cox too?
;-)
Someone trying to do this with Windows 2000? Ever seen a picture of a really, REALLY pot of spaghetti?
He who joyfully marches in rank and file has already earned my contempt. - "Big Al" Einstein
so that's what a slashdotting is like. I didn't even link it.
Liberty.
Of course, unless this actually helps you understand the code, and is better than pre-existing methods, why bother? Sure, it looks cool, but a similar representation of paths to local chinese restraunts may look as cool (you can take 5th st, or 15th st, represented as spikes off an oval, etc...)
If it really is an aid for comprehension, or even better, exposes structural flaws, then this is great! Let's make the FPS version, with a profiler coloring or texturizing (is that a word?) the environment, to show time taken in different subroutines (rooms?)
Anyway, cool idea, but lets give it a few months to see if it is just cool, or cool and useful.
Hi all,
.c files of the kernel.
1) This does not generate a call graph. It is a static rendering of all the functions in the
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.
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
Linux running on a LaserWriter, what a joke.
Je t'aime Stéphanie
I wonder how difficult that would be to implement ?
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
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?)