[Xenomai-git] Philippe Gerum : cobalt/kernel/select: turn queues into regular kernel lists
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
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(