Generating code dynamically that gets compiled and linked into the kernel just seems scary and error prone.
IMO, come up with an API that can express the different things that you want to find out. And oops, in a roundabout way you now are getting a small limited scripting language in the kernel from tracing events and what do you know? Dtrace does that as well.
No, I'm not saying do it how foo does it but I can't see how dynamically generating C code to make a kernel module is seen superior to a small audited scripting language built into the kernel.
Though if anyone besides Ingo had tried getting that scripting language into the kernel, I would laugh. _No Possible Way_. Seriously.
It would be as absurd as putting X drivers in the kernel did a few short years ago.