[Xenomai-git] Philippe Gerum : cobalt/rtdm: fixup tracepoints after RTDM API changes

2014-05-17 Thread git repository hosting
Module: xenomai-forge
Branch: next
Commit: a42ea99d4b50ac9da062d3e009ec47c75525a4b9
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=a42ea99d4b50ac9da062d3e009ec47c75525a4b9

Author: Philippe Gerum r...@xenomai.org
Date:   Sat May 17 18:58:44 2014 +0200

cobalt/rtdm: fixup tracepoints after RTDM API changes

---

 include/cobalt/kernel/rtdm/fd.h   |   33 ++--
 kernel/cobalt/rtdm/core.c |   13 +++--
 kernel/cobalt/rtdm/device.c   |2 +-
 kernel/cobalt/rtdm/drvlib.c   |4 +-
 kernel/cobalt/rtdm/fd.c   |   67 ++--
 kernel/cobalt/trace/cobalt-rtdm.h |  101 +
 6 files changed, 99 insertions(+), 121 deletions(-)

diff --git a/include/cobalt/kernel/rtdm/fd.h b/include/cobalt/kernel/rtdm/fd.h
index f137b00..a107315 100644
--- a/include/cobalt/kernel/rtdm/fd.h
+++ b/include/cobalt/kernel/rtdm/fd.h
@@ -125,15 +125,15 @@ struct rtdm_fd_ops {
rtdm_fd_sendmsg_t *sendmsg_rt;
rtdm_fd_sendmsg_t *sendmsg_nrt;
int (*select_bind)(struct rtdm_fd *fd, struct xnselector *selector,
-   unsigned type, unsigned index);
+   unsigned int type, unsigned int index);
void (*close)(struct rtdm_fd *fd);
 };
 
 struct rtdm_fd {
-   unsigned magic;
+   unsigned int magic;
struct rtdm_fd_ops *ops;
struct xnsys_ppd *cont;
-   unsigned refs;
+   unsigned int refs;
struct list_head cleanup;
 };
 
@@ -150,9 +150,10 @@ static inline struct xnsys_ppd *rtdm_fd_owner(struct 
rtdm_fd *fd)
 }
 
 int rtdm_fd_enter(struct xnsys_ppd *p, struct rtdm_fd *rtdm_fd, int ufd,
-   unsigned magic, struct rtdm_fd_ops *ops);
+ unsigned int magic, struct rtdm_fd_ops *ops);
 
-struct rtdm_fd *rtdm_fd_get(struct xnsys_ppd *p, int ufd, unsigned magic);
+struct rtdm_fd *rtdm_fd_get(struct xnsys_ppd *p,
+   int ufd, unsigned int magic);
 
 int rtdm_fd_lock(struct rtdm_fd *fd);
 
@@ -160,24 +161,26 @@ void rtdm_fd_put(struct rtdm_fd *fd);
 
 void rtdm_fd_unlock(struct rtdm_fd *fd);
 
-int rtdm_fd_ioctl(struct xnsys_ppd *p, int fd, unsigned request, ...);
+int rtdm_fd_ioctl(struct xnsys_ppd *p, int fd, unsigned int request, ...);
 
-ssize_t rtdm_fd_read(struct xnsys_ppd *p, int fd, void __user *buf, size_t 
size);
+ssize_t rtdm_fd_read(struct xnsys_ppd *p, int fd,
+void __user *buf, size_t size);
 
-ssize_t
-rtdm_fd_write(struct xnsys_ppd *p, int fd, const void __user *buf, size_t 
size);
+ssize_t rtdm_fd_write(struct xnsys_ppd *p, int fd,
+ const void __user *buf, size_t size);
 
-int rtdm_fd_close(struct xnsys_ppd *p, int fd, unsigned magic);
+int rtdm_fd_close(struct xnsys_ppd *p, int fd, unsigned int magic);
 
-ssize_t
-rtdm_fd_recvmsg(struct xnsys_ppd *p, int fd, struct msghdr *msg, int flags);
+ssize_t rtdm_fd_recvmsg(struct xnsys_ppd *p, int fd,
+   struct msghdr *msg, int flags);
 
-ssize_t
-rtdm_fd_sendmsg(struct xnsys_ppd *p, int fd, const struct msghdr *msg, int 
flags);
+ssize_t rtdm_fd_sendmsg(struct xnsys_ppd *p, int fd,
+   const struct msghdr *msg, int flags);
 
 int rtdm_fd_valid_p(int ufd);
 
-int rtdm_fd_select_bind(int ufd, struct xnselector *selector, unsigned type);
+int rtdm_fd_select_bind(int ufd, struct xnselector *selector,
+   unsigned int type);
 
 void rtdm_fd_cleanup(struct xnsys_ppd *p);
 
diff --git a/kernel/cobalt/rtdm/core.c b/kernel/cobalt/rtdm/core.c
index 97cfe7e..c05d80d 100644
--- a/kernel/cobalt/rtdm/core.c
+++ b/kernel/cobalt/rtdm/core.c
@@ -60,11 +60,10 @@ void __rt_dev_close(struct rtdm_fd *fd)
 {
struct rtdm_dev_context *context = rtdm_fd_to_context(fd);
context-reserved.close(fd);
-   trace_cobalt_fd_closed(context);
cleanup_instance(context-device, context);
 }
 
-void __rt_dev_unref(struct rtdm_fd *fd, unsigned idx)
+void __rt_dev_unref(struct rtdm_fd *fd, unsigned int idx)
 {
if (fd-magic != RTDM_FD_MAGIC)
return;
@@ -158,7 +157,7 @@ int __rt_dev_open(struct xnsys_ppd *p, int ufd, const char 
*path, int oflag)
goto cleanup_out;
ufd = ret;
 
-   trace_cobalt_fd_open(current, context, oflag);
+   trace_cobalt_fd_open(current, context-fd, ufd, oflag);
 
ret = device-open(context-fd, oflag);
 
@@ -168,7 +167,7 @@ int __rt_dev_open(struct xnsys_ppd *p, int ufd, const char 
*path, int oflag)
if (unlikely(ret  0))
goto cleanup_out;
 
-   trace_cobalt_fd_created(context);
+   trace_cobalt_fd_created(context-fd, ufd);
 
return ufd;
 
@@ -197,7 +196,7 @@ int __rt_dev_socket(struct xnsys_ppd *p, int ufd, int 
protocol_family,
goto cleanup_out;
ufd = ret;
 
-   trace_cobalt_fd_socket(current, context, protocol_family);
+   trace_cobalt_fd_socket(current, context-fd, ufd, protocol_family);
 
ret = 

[Xenomai-git] Philippe Gerum : cobalt/rtdm: fixup tracepoints after RTDM API changes

2014-05-17 Thread git repository hosting
Module: xenomai-forge
Branch: next
Commit: ccacefe39f4531079bc58534c1bcd76ba46e769a
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=ccacefe39f4531079bc58534c1bcd76ba46e769a

Author: Philippe Gerum r...@xenomai.org
Date:   Sat May 17 18:58:44 2014 +0200

cobalt/rtdm: fixup tracepoints after RTDM API changes

---

 include/cobalt/kernel/rtdm/driver.h |   49 ++---
 include/cobalt/kernel/rtdm/fd.h |   33 ++--
 kernel/cobalt/rtdm/core.c   |   13 +++--
 kernel/cobalt/rtdm/device.c |2 +-
 kernel/cobalt/rtdm/drvlib.c |   54 ++-
 kernel/cobalt/rtdm/fd.c |   67 +--
 kernel/cobalt/trace/cobalt-rtdm.h   |  101 ---
 7 files changed, 143 insertions(+), 176 deletions(-)

diff --git a/include/cobalt/kernel/rtdm/driver.h 
b/include/cobalt/kernel/rtdm/driver.h
index e3ccc9c..6c805d8 100644
--- a/include/cobalt/kernel/rtdm/driver.h
+++ b/include/cobalt/kernel/rtdm/driver.h
@@ -1466,22 +1466,9 @@ void rtdm_event_signal(rtdm_event_t *event);
 
 void rtdm_event_clear(rtdm_event_t *event);
 
-#ifndef DOXYGEN_CPP /* Avoid static inline tags for RTDM in doxygen */
-void __rtdm_synch_flush(struct xnsynch *synch, unsigned long reason);
-
-static inline void rtdm_event_pulse(rtdm_event_t *event)
-{
-   trace_cobalt_driver_event_pulse(event);
-   __rtdm_synch_flush(event-synch_base, 0);
-}
+void rtdm_event_pulse(rtdm_event_t *event);
 
-static inline void rtdm_event_destroy(rtdm_event_t *event)
-{
-   trace_cobalt_driver_event_destroy(event);
-   __rtdm_synch_flush(event-synch_base, XNRMID);
-   xnselect_destroy(event-select_block);
-}
-#endif /* !DOXYGEN_CPP */
+void rtdm_event_destroy(rtdm_event_t *event);
 
 /* --- semaphore services --- */
 
@@ -1499,14 +1486,7 @@ int rtdm_sem_timeddown(rtdm_sem_t *sem, nanosecs_rel_t 
timeout,
   rtdm_toseq_t *timeout_seq);
 void rtdm_sem_up(rtdm_sem_t *sem);
 
-#ifndef DOXYGEN_CPP /* Avoid static inline tags for RTDM in doxygen */
-static inline void rtdm_sem_destroy(rtdm_sem_t *sem)
-{
-   trace_cobalt_driver_sem_destroy(sem);
-   __rtdm_synch_flush(sem-synch_base, XNRMID);
-   xnselect_destroy(sem-select_block);
-}
-#endif /* !DOXYGEN_CPP */
+void rtdm_sem_destroy(rtdm_sem_t *sem);
 
 /* --- mutex services --- */
 
@@ -1518,27 +1498,8 @@ void rtdm_mutex_init(rtdm_mutex_t *mutex);
 int rtdm_mutex_lock(rtdm_mutex_t *mutex);
 int rtdm_mutex_timedlock(rtdm_mutex_t *mutex, nanosecs_rel_t timeout,
 rtdm_toseq_t *timeout_seq);
-
-#ifndef DOXYGEN_CPP /* Avoid static inline tags for RTDM in doxygen */
-static inline void rtdm_mutex_unlock(rtdm_mutex_t *mutex)
-{
-   if (!XENO_ASSERT(RTDM, !xnsched_interrupt_p()))
-   return;
-
-   trace_cobalt_driver_mutex_release(mutex);
-
-   if (unlikely(xnsynch_release(mutex-synch_base,
-xnsched_current_thread()) != NULL))
-   xnsched_run();
-}
-
-static inline void rtdm_mutex_destroy(rtdm_mutex_t *mutex)
-{
-   trace_cobalt_driver_mutex_destroy(mutex);
-
-   __rtdm_synch_flush(mutex-synch_base, XNRMID);
-}
-#endif /* !DOXYGEN_CPP */
+void rtdm_mutex_unlock(rtdm_mutex_t *mutex);
+void rtdm_mutex_destroy(rtdm_mutex_t *mutex);
 
 /* --- utility functions --- */
 
diff --git a/include/cobalt/kernel/rtdm/fd.h b/include/cobalt/kernel/rtdm/fd.h
index f137b00..a107315 100644
--- a/include/cobalt/kernel/rtdm/fd.h
+++ b/include/cobalt/kernel/rtdm/fd.h
@@ -125,15 +125,15 @@ struct rtdm_fd_ops {
rtdm_fd_sendmsg_t *sendmsg_rt;
rtdm_fd_sendmsg_t *sendmsg_nrt;
int (*select_bind)(struct rtdm_fd *fd, struct xnselector *selector,
-   unsigned type, unsigned index);
+   unsigned int type, unsigned int index);
void (*close)(struct rtdm_fd *fd);
 };
 
 struct rtdm_fd {
-   unsigned magic;
+   unsigned int magic;
struct rtdm_fd_ops *ops;
struct xnsys_ppd *cont;
-   unsigned refs;
+   unsigned int refs;
struct list_head cleanup;
 };
 
@@ -150,9 +150,10 @@ static inline struct xnsys_ppd *rtdm_fd_owner(struct 
rtdm_fd *fd)
 }
 
 int rtdm_fd_enter(struct xnsys_ppd *p, struct rtdm_fd *rtdm_fd, int ufd,
-   unsigned magic, struct rtdm_fd_ops *ops);
+ unsigned int magic, struct rtdm_fd_ops *ops);
 
-struct rtdm_fd *rtdm_fd_get(struct xnsys_ppd *p, int ufd, unsigned magic);
+struct rtdm_fd *rtdm_fd_get(struct xnsys_ppd *p,
+   int ufd, unsigned int magic);
 
 int rtdm_fd_lock(struct rtdm_fd *fd);
 
@@ -160,24 +161,26 @@ void rtdm_fd_put(struct rtdm_fd *fd);
 
 void rtdm_fd_unlock(struct rtdm_fd *fd);
 
-int rtdm_fd_ioctl(struct xnsys_ppd *p, int fd, unsigned request, ...);
+int rtdm_fd_ioctl(struct xnsys_ppd *p, int fd, unsigned int request, ...);
 
-ssize_t rtdm_fd_read(struct xnsys_ppd *p, int fd, void __user *buf, size_t 
size);
+ssize_t 

[Xenomai-git] Gilles Chanteperdrix : drivers/serial: adapt after RTDM API changes

2014-05-17 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge-fd-rework
Commit: f54a9bb4c98acd986e3a5011bd41bd0d1fc0ec55
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=f54a9bb4c98acd986e3a5011bd41bd0d1fc0ec55

Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org
Date:   Sat May 17 21:15:58 2014 +0200

drivers/serial: adapt after RTDM API changes

---

 kernel/drivers/serial/16550A.c   |   87 +++---
 kernel/drivers/serial/Kconfig|2 +-
 kernel/drivers/serial/mpc52xx_uart.c |   75 +
 kernel/drivers/serial/rt_imx_uart.c  |   77 ++
 4 files changed, 108 insertions(+), 133 deletions(-)

diff --git a/kernel/drivers/serial/16550A.c b/kernel/drivers/serial/16550A.c
index 8ee1c21..693f878 100644
--- a/kernel/drivers/serial/16550A.c
+++ b/kernel/drivers/serial/16550A.c
@@ -312,9 +312,7 @@ static int rt_16550_set_config(struct rt_16550_context *ctx,
rtdm_lock_get_irqsave(ctx-lock, lock_ctx);
 
if (config-config_mask  RTSER_SET_BAUD) {
-   int dev_id = container_of(((void *)ctx),
- struct rtdm_dev_context,
- dev_private)-device-device_id;
+   int dev_id = rtdm_fd_device(rtdm_private_to_fd(ctx))-device_id;
int baud_div;
 
ctx-config.baud_rate = config-baud_rate;
@@ -439,16 +437,15 @@ void rt_16550_cleanup_ctx(struct rt_16550_context *ctx)
rtdm_mutex_destroy(ctx-out_lock);
 }
 
-int rt_16550_open(struct rtdm_dev_context *context,
- rtdm_user_info_t * user_info, int oflags)
+int rt_16550_open(struct rtdm_fd *fd, int oflags)
 {
struct rt_16550_context *ctx;
-   int dev_id = context-device-device_id;
+   int dev_id = rtdm_fd_device(fd)-device_id;
int err;
uint64_t *dummy;
rtdm_lockctx_t lock_ctx;
 
-   ctx = (struct rt_16550_context *)context-dev_private;
+   ctx = rtdm_fd_to_private(fd);
 
/* IPC initialisation - cannot fail with used parameters */
rtdm_lock_init(ctx-lock);
@@ -480,8 +477,8 @@ int rt_16550_open(struct rtdm_dev_context *context,
rt_16550_set_config(ctx, default_config, dummy);
 
err = rtdm_irq_request(ctx-irq_handle, irq[dev_id],
-  rt_16550_interrupt, irqtype[dev_id],
-  context-device-proc_name, ctx);
+   rt_16550_interrupt, irqtype[dev_id],
+   rtdm_fd_device(fd)-proc_name, ctx);
if (err) {
/* reset DTR and RTS */
rt_16550_reg_out(rt_16550_io_mode_from_ctx(ctx), ctx-base_addr,
@@ -504,8 +501,7 @@ int rt_16550_open(struct rtdm_dev_context *context,
return 0;
 }
 
-int rt_16550_close(struct rtdm_dev_context *context,
-  rtdm_user_info_t * user_info)
+void rt_16550_close(struct rtdm_fd *fd)
 {
struct rt_16550_context *ctx;
unsigned long base;
@@ -513,7 +509,7 @@ int rt_16550_close(struct rtdm_dev_context *context,
uint64_t *in_history;
rtdm_lockctx_t lock_ctx;
 
-   ctx = (struct rt_16550_context *)context-dev_private;
+   ctx = rtdm_fd_to_private(fd);
base = ctx-base_addr;
mode = rt_16550_io_mode_from_ctx(ctx);
 
@@ -539,13 +535,9 @@ int rt_16550_close(struct rtdm_dev_context *context,
rt_16550_cleanup_ctx(ctx);
 
kfree(in_history);
-
-   return 0;
 }
 
-int rt_16550_ioctl(struct rtdm_dev_context *context,
-  rtdm_user_info_t * user_info,
-  unsigned int request, void *arg)
+int rt_16550_ioctl(struct rtdm_fd *fd, unsigned int request, void *arg)
 {
rtdm_lockctx_t lock_ctx;
struct rt_16550_context *ctx;
@@ -553,15 +545,15 @@ int rt_16550_ioctl(struct rtdm_dev_context *context,
unsigned long base;
int mode;
 
-   ctx = (struct rt_16550_context *)context-dev_private;
+   ctx = rtdm_fd_to_private(fd);
base = ctx-base_addr;
mode = rt_16550_io_mode_from_ctx(ctx);
 
switch (request) {
case RTSER_RTIOC_GET_CONFIG:
-   if (user_info)
+   if (rtdm_fd_is_user(fd))
err =
-   rtdm_safe_copy_to_user(user_info, arg,
+   rtdm_safe_copy_to_user(fd, arg,
   ctx-config,
   sizeof(struct
  rtser_config));
@@ -577,9 +569,9 @@ int rt_16550_ioctl(struct rtdm_dev_context *context,
 
config = (struct rtser_config *)arg;
 
-   if (user_info) {
+   if (rtdm_fd_is_user(fd)) {
err =
-   rtdm_safe_copy_from_user(user_info, config_buf,
+   rtdm_safe_copy_from_user(fd, config_buf,