[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

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

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..d3cb88a 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+cobalt_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+cobalt_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..141a8bf 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   cobalt_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   cobalt_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

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

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..d3cb88a 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+cobalt_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+cobalt_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..141a8bf 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   cobalt_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   cobalt_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

2014-04-24 Thread git repository hosting
Module: xenomai-forge
Branch: rtdm-api-waitqueues
Commit: e31409412306dc3d93b5e9f2817b48caae5655f7
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=e31409412306dc3d93b5e9f2817b48caae5655f7

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..fc9ac16 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+rtdm_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+rtdm_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..62a54a6 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   rtdm_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   rtdm_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

2014-04-12 Thread git repository hosting
Module: xenomai-forge
Branch: rtdm-api-waitqueues
Commit: 3f371edf468fda08828452314d78ef69fbd6ba05
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=3f371edf468fda08828452314d78ef69fbd6ba05

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..fc9ac16 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+rtdm_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+rtdm_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..62a54a6 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   rtdm_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   rtdm_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

2014-04-10 Thread git repository hosting
Module: xenomai-forge
Branch: rtdm-api-rework
Commit: 38abdd627bebfcc03b28fe29e0f81d28b2f40945
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=38abdd627bebfcc03b28fe29e0f81d28b2f40945

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..fc9ac16 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+rtdm_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+rtdm_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..62a54a6 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   rtdm_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   rtdm_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : drivers/can: move to new-style atomic sections

2014-04-10 Thread git repository hosting
Module: xenomai-forge
Branch: rtdm-api-rework
Commit: 171aadbece60ed92d6a6dcbf5e64df98aabe7825
URL:
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=171aadbece60ed92d6a6dcbf5e64df98aabe7825

Author: Philippe Gerum 
Date:   Thu Apr 10 11:41:15 2014 +0200

drivers/can: move to new-style atomic sections

---

 kernel/drivers/can/rtcan_raw.c|   13 -
 kernel/drivers/can/rtcan_socket.c |   13 ++---
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/can/rtcan_raw.c b/kernel/drivers/can/rtcan_raw.c
index 960b7a6..fc9ac16 100644
--- a/kernel/drivers/can/rtcan_raw.c
+++ b/kernel/drivers/can/rtcan_raw.c
@@ -800,6 +800,7 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 struct rtcan_device *dev;
 int ifindex = 0;
 int ret  = 0;
+spl_t s;
 
 
 if (flags & MSG_OOB)   /* Mirror BSD error message compatibility */
@@ -912,8 +913,9 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context *context,
 /* If socket was not closed recently, register the task at the
  * socket's TX wait queue and decrement the TX semaphore. This must be
  * atomic. Finally, the task must be deregistered again (also atomic). */
-RTDM_EXECUTE_ATOMICALLY(
-   if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
+rtdm_atomic_enter(s);
+
+if (likely(!test_bit(RTDM_CLOSING, &context->context_flags))) {
 
list_add(&tx_wait.tx_wait_list, &sock->tx_wait_head);
 
@@ -929,10 +931,11 @@ ssize_t rtcan_raw_sendmsg(struct rtdm_dev_context 
*context,
/* The socket was closed. */
ret = -EBADF;
 
-   } else
+} else
/* The socket was closed. */
-   ret = -EBADF;
-   );
+   ret = -EBADF;
+
+rtdm_atomic_leave(s);
 
 /* Error code returned? */
 if (ret != 0) {
diff --git a/kernel/drivers/can/rtcan_socket.c 
b/kernel/drivers/can/rtcan_socket.c
index d78d1f6..62a54a6 100644
--- a/kernel/drivers/can/rtcan_socket.c
+++ b/kernel/drivers/can/rtcan_socket.c
@@ -74,12 +74,11 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
 /* Wake up sleeping senders. This is re-entrant-safe. */
 do {
-   RTDM_EXECUTE_ATOMICALLY(
-   /* Is someone there? */
-   if (list_empty(&sock->tx_wait_head))
+   rtdm_atomic_enter(lock_ctx);
+   /* Is someone there? */
+   if (list_empty(&sock->tx_wait_head))
tx_list_empty = 1;
-
-   else {
+   else {
tx_list_empty = 0;
 
/* Get next entry pointing to a waiting task */
@@ -91,8 +90,8 @@ void rtcan_socket_cleanup(struct rtdm_dev_context *context)
 
/* Wake task up (atomic section is left implicitly) */
rtdm_task_unblock(tx_waiting->rt_task);
-   }
-   );
+   }
+   rtdm_atomic_leave(lock_ctx);
 } while (!tx_list_empty);
 
 rtdm_sem_destroy(&sock->recv_sem);


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git