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

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

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

drivers/serial: adapt after RTDM API changes

Note: rt_imx_serial and mpc52xx were not compiled.
rt_imx_serial does not compile with either Linux 3.10 or Linux 3.14.

---

 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 =
-   

[Xenomai-git] Gilles Chanteperdrix : drivers/rtcan: adapt to RTDM API changes

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

Author: Gilles Chanteperdrix gilles.chanteperd...@xenomai.org
Date:   Sat May 17 20:33:30 2014 +0200

drivers/rtcan: adapt to RTDM API changes

---

 kernel/drivers/can/rtcan_module.c  |   29 +++---
 kernel/drivers/can/rtcan_raw.c |  199 +---
 kernel/drivers/can/rtcan_raw.h |3 +-
 kernel/drivers/can/rtcan_raw_dev.c |   19 ++--
 kernel/drivers/can/rtcan_socket.c  |8 +-
 kernel/drivers/can/rtcan_socket.h  |   14 +--
 6 files changed, 126 insertions(+), 146 deletions(-)

diff --git a/kernel/drivers/can/rtcan_module.c 
b/kernel/drivers/can/rtcan_module.c
index 4e5b837..6c57515 100644
--- a/kernel/drivers/can/rtcan_module.c
+++ b/kernel/drivers/can/rtcan_module.c
@@ -169,7 +169,7 @@ static const struct file_operations rtcan_proc_devices_ops 
= {
 static int rtcan_read_proc_sockets(struct seq_file *p, void *data)
 {
 struct rtcan_socket *sock;
-struct rtdm_dev_context *context;
+struct rtdm_fd *fd;
 struct rtcan_device *dev;
 char name[IFNAMSIZ] = not-bound;
 char rx_timeout[20], tx_timeout[20];
@@ -179,16 +179,16 @@ static int rtcan_read_proc_sockets(struct seq_file *p, 
void *data)
 if (down_interruptible(rtcan_devices_nrt_lock))
return -ERESTARTSYS;
 
-/* fd Name___ Filter ErrMask RX_Timeout TX_Timeout RX_BufFull TX_Lo
- *  0 rtcan0   1 0x00010 1234567890 1234567890 1234567890 12345
+/* Name___ Filter ErrMask RX_Timeout TX_Timeout RX_BufFull TX_Lo
+ * rtcan0   1 0x00010 1234567890 1234567890 1234567890 12345
  */
-seq_printf(p, fd Name___ Filter ErrMask RX_Timeout_ns 
+seq_printf(p, Name___ Filter ErrMask RX_Timeout_ns 
  TX_Timeout_ns RX_BufFull TX_Lo\n);
 
 rtdm_lock_get_irqsave(rtcan_recv_list_lock, lock_ctx);
 
 list_for_each_entry(sock, rtcan_socket_list, socket_list) {
-   context = rtcan_socket_context(sock);
+   fd = rtcan_socket_to_fd(sock);
if (rtcan_sock_is_bound(sock)) {
ifindex = atomic_read(sock-ifindex);
if (ifindex) {
@@ -204,8 +204,8 @@ static int rtcan_read_proc_sockets(struct seq_file *p, void 
*data)
   tx_timeout, sizeof(tx_timeout));
rtcan_get_timeout_name(sock-rx_timeout,
   rx_timeout, sizeof(rx_timeout));
-   seq_printf(p, %2d %-15s %6d 0x%05x %13s %13s %10d %5d\n,
-  context-fd, name, sock-flistlen, sock-err_mask,
+   seq_printf(p, %-15s %6d 0x%05x %13s %13s %10d %5d\n,
+  name, sock-flistlen, sock-err_mask,
   rx_timeout, tx_timeout, sock-rx_buf_full,
   rtcan_loopback_enabled(sock));
 }
@@ -286,23 +286,22 @@ static int rtcan_read_proc_filter(struct seq_file *p, 
void *data)
 {
 struct rtcan_device *dev = p-private;
 struct rtcan_recv *recv_listener = dev-recv_list;
-struct rtdm_dev_context *context;
+struct rtdm_fd *fd;
 rtdm_lockctx_t lock_ctx;
 
-/*  fd __CAN_ID__ _CAN_Mask_ Inv MatchCount
- *   3 0x12345678 0x12345678  no 1234567890
+/*  __CAN_ID__ _CAN_Mask_ Inv MatchCount
+ *  0x12345678 0x12345678  no 1234567890
  */
 
-seq_printf(p, fd __CAN_ID__ _CAN_Mask_ Inv MatchCount\n);
+seq_printf(p, __CAN_ID__ _CAN_Mask_ Inv MatchCount\n);
 
 rtdm_lock_get_irqsave(rtcan_recv_list_lock, lock_ctx);
 
 /* Loop over the reception list of the device */
 while (recv_listener != NULL) {
-   context = rtcan_socket_context(recv_listener-sock);
+   fd = rtcan_socket_to_fd(recv_listener-sock);
 
-   seq_printf(p, %2d 0x%08x 0x%08x %s %10d\n,
-  context-fd,
+   seq_printf(p, 0x%08x 0x%08x %s %10d\n,
   recv_listener-can_filter.can_id,
   recv_listener-can_filter.can_mask  ~CAN_INV_FILTER,
   (recv_listener-can_filter.can_mask  CAN_INV_FILTER) ?
@@ -394,7 +393,7 @@ static int rtcan_proc_register(void)
 }
 
 proc_create(devices, S_IFREG | S_IRUGO | S_IWUSR, rtcan_proc_root,
-   rtcan_proc_devices_ops);
+   rtcan_proc_devices_ops);
 proc_create(version, S_IFREG | S_IRUGO | S_IWUSR, rtcan_proc_root,
rtcan_proc_version_ops);
 proc_create(sockets, S_IFREG | S_IRUGO | S_IWUSR, rtcan_proc_root,
diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index d3cb88a..3864d0f 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -52,7 +52,7 @@
  * Set if socket wants to receive a high precision timestamp together with
  * CAN frames
  */
-#define RTCAN_GET_TIMESTAMP RTDM_USER_CONTEXT_FLAG
+#define RTCAN_GET_TIMESTAMP 0
 
 
 MODULE_AUTHOR(RT-Socket-CAN Development Team);
@@ -80,12 +80,17 @@ static 

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

2014-05-18 Thread git repository hosting
Module: xenomai-forge
Branch: master
Commit: 3ab8c031b0e9938c42bffa95cad9cca5c2a781e0
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=3ab8c031b0e9938c42bffa95cad9cca5c2a781e0

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

drivers/serial: adapt after RTDM API changes

Note: rt_imx_serial and mpc52xx were not compiled.
rt_imx_serial does not compile with either Linux 3.10 or Linux 3.14.

---

 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 =
-   

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

2014-05-18 Thread git repository hosting
Module: xenomai-forge
Branch: master
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);