Linux, replying to pj:Ah so. How about the following "sym(addr, buf)" macro? This could make it more practical to include kernel symbols within ordinary printk's. On a silly little test with: { char b1[32], b2[32], b3[32]; printk(">>>>>> Testing sym(): A. %s, B. %s, C. %s\n", sym(&pid_max, b1), sym(0xffffffff80615750, b2), /* an addr in my System.map */ sym(0, b3)); } the kernel printed: >>>>>> Testing sym(): A. pid_max+0x0/0x4, B. trampoline_base+0x0/0x10, C. 0x0 =========================================================================== --- linux.orig/include/linux/kallsyms.h 2008-06-23 15:16:49.885666712 -0700 +++ linux/include/linux/kallsyms.h 2008-06-25 00:48:09.446807842 -0700 @@ -32,6 +32,12 @@ extern int sprint_symbol(char *buffer, u /* Look up a kernel symbol and print it to the kernel messages. */ extern void __print_symbol(const char *fmt, unsigned long address); +/* Convert address to kernel symbol; can printk result with "%s" format */ +#define sym(address, namebuf) ({ \ + sprint_symbol((namebuf), (unsigned long)(address)); \ + (namebuf); \ +}) + int lookup_symbol_name(unsigned long addr, char *symname); int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); -- I won't rest till it's the best ... Programmer, Linux Scalability Paul Jackson <pj@sgi.com> 1.940.382.4214 --
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Linus Torvalds | Linux 2.6.27-rc5 |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| David Miller | Slow DOWN, please!!! |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Natalie Protasevich | [BUG] New Kernel Bugs |
