Re: Problem: plist_add undefined!

From: Steven Rostedt
Date: Wed Dec 21 2011 - 22:51:08 EST


On Tue, 2011-12-20 at 10:24 +0100, Monica Puig-Pey wrote:
> Hi there,
>
> As I told in previous posts in this list I'm developing drivers for the
>
> linux-rt kernel version in Ubuntu 10.04, based on 2.6.31 with rt_preempt
> patch.
>
> Currently I'm studying how to use priority lists (linux/plist.h) in a
> module. I read some pages from the Linux Kernel Development book to
> learn how linked list work in the kernel.
>
> I made and easy example, shown below, trying to put three elements, with
> their priorities, in a plist_head.
>
> Then, I had two problems:
>
> * First error:
>
> An error is produced when using the MACROs:
> - PLIST_HEAD_INIT(head, _lock)
> - PLIST_NODE_INIT(node, __prio)

Right, the macros are for static declarations. Either global variables
or a variable marked as static:

struct plist_head myhead = PLIST_HEAD_INIT(myhead, mylock);

or

int foo() {
static struct plist_head bar = PLIST_HEAD_INIT(bar, mylock);

[...]
}

or

struct foo bar = {
.zoop = PLIST_HEAD_INIT(bar.zoop, mylock),
};


>
> it says :
>
>
> /home/monica/Escritorio/plists/priolist.c: In function 'init_module':
> /home/monica/Escritorio/plists/priolist.c:67: error: expected expression
> before '.' token
>
>
> --> To solve this I used the functions:
>
>
> - static inline void plist_head_init(struct plist_head *head, struct
> spinlock *lock)
>
> - static inline void plist_node_init(struct plist_node *node, int prio)

Right, for runtime code you must use these.


>
> But I still have the problem with the MACRO
>
>
>
>
> * Second error, problem using plist_add:
>
> It says:
>
>
> âWARNING: "plist_add" [/home/monica/Escritorio/plists/priolist.ko]
> undefined! â

Simple, plist_add() isn't exported to modules.

Hmm, none of the plist functions are. I guess it wouldn't hurt to make
them EXPORT_SYMBOL_GPL()

Maybe we'll do that. Is this just for learning or are you planing on
adding a real GPL module to Linux that uses plists. For learning, it may
not be worth adding these symbols, but if you have a legit reason for
modules to use plists, than I don't see any harm in exporting them.

-- Steve

>
> I made the module GPL, I don't know what am I doing wrong.
>
> Does anybody have an idea what is happening?
>
> Thanks in advance for any help,
>
> Cheers,
>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/