Kyle, thanks for reffering,but it seems like GPL is not the case. 
I want to write a module to track netdevices present.
Sort of a protocol sitting there. It is GPL'ed, but register_pm_notifier usage ( as you can see in sources)
gives linker warning "pm_chain_head undefined",since register_pm_notifier is "static inline" and expanded 
to blocking_notifier_chain_unregister(&pm_chain_head, nb).
Why do you say pm_chain_head is static there ? Is it because it is not exported by EXPORT_SYMBOL ?
So what does it have to do with the license ( which is already GPL, but I just do not understand ). 
What should be my choices, if I want to stay within distro kernel.
Thanks a lot. 
 
 
 
On Feb 19, 2008 5:53 PM, Kyle McMartin <kyle@mcmartin.ca> wrote:
On Tue, Feb 19, 2008 at 01:41:15PM +0200, Eugene Goubine wrote:
> Hello , dear list users.
> >From my module I am trying to register for the system suspend using the *
> register_pm_notifier(nb)*
> which is expanded to *blocking_notifier_chain_register(&pm_chain_head, nb).*
> **
> I have a linker warning which tells "pm_chain_head" is undefined. I do
> see  pm_chain_head in my /proc/kallsyms.
> What do I miss? Thank you.

It's hard to comment on it if you don't attach the source code...

At a guess, you tried using register_pm_notifier, that failed to link,
so you tried to use the function that it calls, which won't work since
pm_chain_head is static to the kernel/power/main.c compilation unit.

License your module under the GPL and add MODULE_LICENSE("GPL") and
you'll be able to use the register_pm_notifier export...

regards, Kyle