On 12/10/13, 9:47 PM, Punit Mutha wrote:
> hello,
> i have a naive doubt about adding printk in zfs module.
> 
> i am trying to add debug statements in zfs code and
> 
> facing this weird compiler error.
> 
> .../../module/zfs/dmu.c: In function ‘dmu_object_size_from_db’:
> .../../module/zfs/dmu.c:2006: error: ‘KERN_INFO’ undeclared (first use
> in this function)
> .../../module/zfs/dmu.c:2006: error: expected ‘)’ before string constant
> .../../module/zfs/dmu.c:2018: error: expected ‘)’ before string constant
> 
> so it is complaining about usage of printk in dmu.c
> 
> but it didnt complained about printk usage in zvol.c
> 
> as far as i see there are no difference in compilation flags.
> 
> google search tells that i need to include /lib/modules in makefile..
> 
> but i think all arguments are same for zvol.c and that for dmu.c

Hi Punit,

printk is Linux-specific and thus might not work well in the ZFS code
base (and will certainly break if ported onto other kernels). I
recommend either using cmn_err(9F) (this is Solaris-specific, but since
ZFS originated there, the Linux port already includes compatibility for
it)
[http://docs.oracle.com/cd/E19253-01/816-5180/cmn-err-9f/index.html],
or, if you're just debugging something, try to use dynamic tracer
instead, such as DTrace or SystemTap - this will save you a ton of time
rather than rerolling new kernel modules each time you've progressed in
your debugging process.

Quick addendum: cmn_err works exactly the same as printk, so these are
two equivalent statements:

printk(KERN_INFO, "Value of int is: %d\n", x);
cmn_err(CE_NOTE, "Value of int is: %d", x);

Notice that with cmn_err you don't need to add a \n at the end - it's
appended automatically.

Cheers,
-- 
Saso
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to