All of lore.kernel.org
 help / color / mirror / Atom feed
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");

}

             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.