From: Monica Puig-Pey <puigpeym@unican.es>
To: <linux-rt-users@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Problem: plist_add undefined!
Date: Tue, 20 Dec 2011 10:24:53 +0100 [thread overview]
Message-ID: <4EF05465.7050507@unican.es> (raw)
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)
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)
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! ”
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,
Monica
CODE:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/ioport.h>
#include <linux/plist.h>
#include <linux/spinlock.h>
MODULE_LICENSE("GPL");
#define pid_miguel 1
#define fichero_miguel 1
#define prio_miguel 10
#define pid_monica 2
#define fichero_monica 1
#define prio_monica 30
#define pid_hector 3
#define fichero_hector 1
#define prio_hector 20
static DEFINE_SPINLOCK(lock);
struct misdatos
{
int pid;
int fichero;
struct plist_node token_del_plist;
};
int init_module(void)
{
struct plist_head mi_lista_de_datos;
//struct spinlock lock;
struct misdatos datos_miguel;
struct misdatos datos_monica;
struct misdatos datos_hector;
struct misdatos *elemento_iterador;
// Inicializo mi lista
//PLIST_HEAD_INIT( mi_lista_de_datos, lock);
plist_head_init( &mi_lista_de_datos, &lock);
// Creo mis datos
datos_miguel.pid = pid_miguel;
datos_miguel.fichero = fichero_miguel;
datos_monica.pid = pid_monica;
datos_monica.fichero = fichero_monica;
datos_hector.pid = pid_hector;
datos_hector.fichero = fichero_hector;
// Inicializamos los nodos CON LA PRIORIDAD
//PLIST_NODE_INIT(datos_miguel.token_del_plist, prio_miguel);
//PLIST_NODE_INIT(datos_monica.token_del_plist, prio_monica);
//PLIST_NODE_INIT(datos_hector.token_del_plist, prio_hector);
plist_node_init(&datos_miguel.token_del_plist, prio_miguel);
plist_node_init(&datos_monica.token_del_plist, prio_monica);
plist_node_init(&datos_hector.token_del_plist, prio_hector);
// Los agnadimos
plist_add(&(datos_miguel.token_del_plist), &mi_lista_de_datos);
plist_add(&(datos_monica.token_del_plist), &mi_lista_de_datos);
plist_add(&(datos_hector.token_del_plist), &mi_lista_de_datos);
plist_for_each_entry(elemento_iterador, &mi_lista_de_datos, token_del_plist)
{
printk(KERN_INFO "El pid es : %d, con prioridad %d\n",
elemento_iterador->pid, elemento_iterador->token_del_plist.prio);
}
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "cleanup_module() called\n");
}
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next reply other threads:[~2011-12-20 9:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-20 9:24 Monica Puig-Pey [this message]
2011-12-22 3:51 ` Problem: plist_add undefined! Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EF05465.7050507@unican.es \
--to=puigpeym@unican.es \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).