[Xenomai-git] Philippe Gerum : cobalt/kernel/select: turn queues into regular kernel lists

2013-06-21 Thread git repository hosting
Module: xenomai-forge
Branch: master
Commit: d8814f00c0d9c1f860272b2be234a3db30cea2e2
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=d8814f00c0d9c1f860272b2be234a3db30cea2e2

Author: Philippe Gerum 
Date:   Thu Jun 20 14:21:27 2013 +0200

cobalt/kernel/select: turn queues into regular kernel lists

---

 include/cobalt/kernel/select.h |   34 +++--
 kernel/cobalt/select.c |  100 ++-
 2 files changed, 64 insertions(+), 70 deletions(-)

diff --git a/include/cobalt/kernel/select.h b/include/cobalt/kernel/select.h
index 618b245..20398f4 100644
--- a/include/cobalt/kernel/select.h
+++ b/include/cobalt/kernel/select.h
@@ -22,12 +22,13 @@
  * \ingroup select
  */
 
-#ifndef _COBALT_KERNEL_XNSELECT_H
-#define _COBALT_KERNEL_XNSELECT_H
+#ifndef _COBALT_KERNEL_SELECT_H
+#define _COBALT_KERNEL_SELECT_H
 
 /*! \addtogroup select
  *@{*/
 
+#include 
 #include 
 
 #define XNSELECT_READ  0
@@ -41,8 +42,8 @@ struct xnselector {
fd_set expected;
fd_set pending;
} fds [XNSELECT_MAX_TYPES];
-   xnholder_t destroy_link;
-   xnqueue_t bindings; /* only used by xnselector_destroy */
+   struct list_head destroy_link;
+   struct list_head bindings; /* only used by xnselector_destroy */
 };
 
 #define __NFDBITS__(8 * sizeof(unsigned long))
@@ -85,7 +86,7 @@ static inline void __FD_ZERO__(__kernel_fd_set *__p)
 }
 
 struct xnselect {
-   xnqueue_t bindings;
+   struct list_head bindings;
 };
 
 #define DECLARE_XNSELECT(name) struct xnselect name
@@ -93,10 +94,10 @@ struct xnselect {
 struct xnselect_binding {
struct xnselector *selector;
struct xnselect *fd;
-   unsigned type;
-   unsigned bit_index;
-   xnholder_t link;  /* link in selected fds list. */
-   xnholder_t slink; /* link in selector list */
+   unsigned int type;
+   unsigned int bit_index;
+   struct list_head link;  /* link in selected fds list. */
+   struct list_head slink; /* link in selector list */
 };
 
 void xnselect_init(struct xnselect *select_block);
@@ -104,11 +105,11 @@ void xnselect_init(struct xnselect *select_block);
 int xnselect_bind(struct xnselect *select_block,
  struct xnselect_binding *binding,
  struct xnselector *selector,
- unsigned type,
- unsigned bit_index,
- unsigned state);
+ unsigned int type,
+ unsigned int bit_index,
+ unsigned int state);
 
-int __xnselect_signal(struct xnselect *select_block, unsigned state);
+int __xnselect_signal(struct xnselect *select_block, unsigned int state);
 
 /**
  * Signal a file descriptor state change.
@@ -121,10 +122,11 @@ int __xnselect_signal(struct xnselect *select_block, 
unsigned state);
  * @retval 0 otherwise.
  */
 static inline int
-xnselect_signal(struct xnselect *select_block, unsigned state)
+xnselect_signal(struct xnselect *select_block, unsigned int state)
 {
-   if (!emptyq_p(&select_block->bindings))
+   if (!list_empty(&select_block->bindings))
return __xnselect_signal(select_block, state);
+
return 0;
 }
 
@@ -146,4 +148,4 @@ int xnselect_umount(void);
 
 /*@}*/
 
-#endif /* _COBALT_KERNEL_XNSELECT_H */
+#endif /* _COBALT_KERNEL_SELECT_H */
diff --git a/kernel/cobalt/select.c b/kernel/cobalt/select.c
index f44a428..b3838c3 100644
--- a/kernel/cobalt/select.c
+++ b/kernel/cobalt/select.c
@@ -46,19 +46,16 @@
  * housekeeping.
  *@{*/
 
+#include 
+#include   /* For hweight_long */
 #include 
 #include 
 #include 
 #include 
 #include 
-#include 
-#include   /* For hweight_long */
-
-static xnqueue_t xnselectors;
-static int xnselect_apc;
 
-#define link2binding(baddr, memb)  \
-   container_of(baddr, struct xnselect_binding, memb)
+static LIST_HEAD(selector_list);
+static int deletion_apc;
 
 /**
  * Initialize a @a struct @a xnselect structure.
@@ -70,7 +67,7 @@ static int xnselect_apc;
  */
 void xnselect_init(struct xnselect *select_block)
 {
-   initq(&select_block->bindings);
+   INIT_LIST_HEAD(&select_block->bindings);
 }
 EXPORT_SYMBOL_GPL(xnselect_init);
 
@@ -122,11 +119,9 @@ int xnselect_bind(struct xnselect *select_block,
binding->fd = select_block;
binding->type = type;
binding->bit_index = index;
-   inith(&binding->link);
-   inith(&binding->slink);
 
-   appendq(&selector->bindings, &binding->slink);
-   appendq(&select_block->bindings, &binding->link);
+   list_add_tail(&binding->slink, &selector->bindings);
+   list_add_tail(&binding->link, &select_block->bindings);
__FD_SET__(index, &selector->fds[type].expected);
if (state) {
__FD_SET__(index, &selector->fds[type].pending);
@@ -142,16 +137,11 @@ EXPORT_SYMBOL_GPL(xnselect_bind);
 /* Must be called with nklock locked irqs off */
 int __xnselect_signa

[Xenomai-git] Philippe Gerum : cobalt/kernel/select: turn queues into regular kernel lists

2013-06-21 Thread git repository hosting
Module: xenomai-forge
Branch: next
Commit: d8814f00c0d9c1f860272b2be234a3db30cea2e2
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=d8814f00c0d9c1f860272b2be234a3db30cea2e2

Author: Philippe Gerum 
Date:   Thu Jun 20 14:21:27 2013 +0200

cobalt/kernel/select: turn queues into regular kernel lists

---

 include/cobalt/kernel/select.h |   34 +++--
 kernel/cobalt/select.c |  100 ++-
 2 files changed, 64 insertions(+), 70 deletions(-)

diff --git a/include/cobalt/kernel/select.h b/include/cobalt/kernel/select.h
index 618b245..20398f4 100644
--- a/include/cobalt/kernel/select.h
+++ b/include/cobalt/kernel/select.h
@@ -22,12 +22,13 @@
  * \ingroup select
  */
 
-#ifndef _COBALT_KERNEL_XNSELECT_H
-#define _COBALT_KERNEL_XNSELECT_H
+#ifndef _COBALT_KERNEL_SELECT_H
+#define _COBALT_KERNEL_SELECT_H
 
 /*! \addtogroup select
  *@{*/
 
+#include 
 #include 
 
 #define XNSELECT_READ  0
@@ -41,8 +42,8 @@ struct xnselector {
fd_set expected;
fd_set pending;
} fds [XNSELECT_MAX_TYPES];
-   xnholder_t destroy_link;
-   xnqueue_t bindings; /* only used by xnselector_destroy */
+   struct list_head destroy_link;
+   struct list_head bindings; /* only used by xnselector_destroy */
 };
 
 #define __NFDBITS__(8 * sizeof(unsigned long))
@@ -85,7 +86,7 @@ static inline void __FD_ZERO__(__kernel_fd_set *__p)
 }
 
 struct xnselect {
-   xnqueue_t bindings;
+   struct list_head bindings;
 };
 
 #define DECLARE_XNSELECT(name) struct xnselect name
@@ -93,10 +94,10 @@ struct xnselect {
 struct xnselect_binding {
struct xnselector *selector;
struct xnselect *fd;
-   unsigned type;
-   unsigned bit_index;
-   xnholder_t link;  /* link in selected fds list. */
-   xnholder_t slink; /* link in selector list */
+   unsigned int type;
+   unsigned int bit_index;
+   struct list_head link;  /* link in selected fds list. */
+   struct list_head slink; /* link in selector list */
 };
 
 void xnselect_init(struct xnselect *select_block);
@@ -104,11 +105,11 @@ void xnselect_init(struct xnselect *select_block);
 int xnselect_bind(struct xnselect *select_block,
  struct xnselect_binding *binding,
  struct xnselector *selector,
- unsigned type,
- unsigned bit_index,
- unsigned state);
+ unsigned int type,
+ unsigned int bit_index,
+ unsigned int state);
 
-int __xnselect_signal(struct xnselect *select_block, unsigned state);
+int __xnselect_signal(struct xnselect *select_block, unsigned int state);
 
 /**
  * Signal a file descriptor state change.
@@ -121,10 +122,11 @@ int __xnselect_signal(struct xnselect *select_block, 
unsigned state);
  * @retval 0 otherwise.
  */
 static inline int
-xnselect_signal(struct xnselect *select_block, unsigned state)
+xnselect_signal(struct xnselect *select_block, unsigned int state)
 {
-   if (!emptyq_p(&select_block->bindings))
+   if (!list_empty(&select_block->bindings))
return __xnselect_signal(select_block, state);
+
return 0;
 }
 
@@ -146,4 +148,4 @@ int xnselect_umount(void);
 
 /*@}*/
 
-#endif /* _COBALT_KERNEL_XNSELECT_H */
+#endif /* _COBALT_KERNEL_SELECT_H */
diff --git a/kernel/cobalt/select.c b/kernel/cobalt/select.c
index f44a428..b3838c3 100644
--- a/kernel/cobalt/select.c
+++ b/kernel/cobalt/select.c
@@ -46,19 +46,16 @@
  * housekeeping.
  *@{*/
 
+#include 
+#include   /* For hweight_long */
 #include 
 #include 
 #include 
 #include 
 #include 
-#include 
-#include   /* For hweight_long */
-
-static xnqueue_t xnselectors;
-static int xnselect_apc;
 
-#define link2binding(baddr, memb)  \
-   container_of(baddr, struct xnselect_binding, memb)
+static LIST_HEAD(selector_list);
+static int deletion_apc;
 
 /**
  * Initialize a @a struct @a xnselect structure.
@@ -70,7 +67,7 @@ static int xnselect_apc;
  */
 void xnselect_init(struct xnselect *select_block)
 {
-   initq(&select_block->bindings);
+   INIT_LIST_HEAD(&select_block->bindings);
 }
 EXPORT_SYMBOL_GPL(xnselect_init);
 
@@ -122,11 +119,9 @@ int xnselect_bind(struct xnselect *select_block,
binding->fd = select_block;
binding->type = type;
binding->bit_index = index;
-   inith(&binding->link);
-   inith(&binding->slink);
 
-   appendq(&selector->bindings, &binding->slink);
-   appendq(&select_block->bindings, &binding->link);
+   list_add_tail(&binding->slink, &selector->bindings);
+   list_add_tail(&binding->link, &select_block->bindings);
__FD_SET__(index, &selector->fds[type].expected);
if (state) {
__FD_SET__(index, &selector->fds[type].pending);
@@ -142,16 +137,11 @@ EXPORT_SYMBOL_GPL(xnselect_bind);
 /* Must be called with nklock locked irqs off */
 int __xnselect_signal(