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
WARNING: multiple messages have this Message-ID (diff)
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");
}
next reply other threads:[~2011-12-20 9:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-20 9:24 Monica Puig-Pey [this message]
2011-12-20 9:24 ` Problem: plist_add undefined! Monica Puig-Pey
2011-12-21 21:46 ` Fwd: " Julie Sullivan
2011-12-21 22:34 ` Jonathan Neuschäfer
2011-12-22 3:51 ` Steven Rostedt
2011-12-22 3:51 ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.