Module: xenomai-forge
Branch: master
Commit: e921ba7a9431fc1f6506d99c038c9c09aa46b903
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=e921ba7a9431fc1f6506d99c038c9c09aa46b903

Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org>
Date:   Tue Nov 15 02:38:35 2011 +0100

cobalt: inline completely condition variables system calls

---

 kernel/cobalt/cond.c |   45 ++++++++-------------------------------------
 kernel/cobalt/cond.h |   29 ++++++++++++++++++++++++++++-
 2 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/kernel/cobalt/cond.c b/kernel/cobalt/cond.c
index d398afb..a5c6928 100644
--- a/kernel/cobalt/cond.c
+++ b/kernel/cobalt/cond.c
@@ -230,11 +230,11 @@ static int pthread_cond_destroy(pthread_cond_t * cnd)
        return 0;
 }
 
-static int cobalt_cond_timedwait_prologue(xnthread_t *cur,
-                                         cobalt_cond_t *cond,
-                                         cobalt_mutex_t *mutex,
-                                         int timed,
-                                         xnticks_t abs_to)
+static inline int cobalt_cond_timedwait_prologue(xnthread_t *cur,
+                                                cobalt_cond_t *cond,
+                                                cobalt_mutex_t *mutex,
+                                                int timed,
+                                                xnticks_t abs_to)
 {
        spl_t s;
        int err;
@@ -320,9 +320,9 @@ static int cobalt_cond_timedwait_prologue(xnthread_t *cur,
        return err;
 }
 
-static int cobalt_cond_timedwait_epilogue(xnthread_t *cur,
-                                         cobalt_cond_t *cond,
-                                         cobalt_mutex_t *mutex)
+static inline int cobalt_cond_timedwait_epilogue(xnthread_t *cur,
+                                                cobalt_cond_t *cond,
+                                                cobalt_mutex_t *mutex)
 {
        int err;
        spl_t s;
@@ -349,35 +349,6 @@ static int cobalt_cond_timedwait_epilogue(xnthread_t *cur,
        return err;
 }
 
-int cobalt_cond_deferred_signals(struct cobalt_cond *cond)
-{
-       unsigned long pending_signals;
-       int need_resched, i;
-
-       pending_signals = *(cond->pending_signals);
-
-       switch(pending_signals) {
-       case ~0UL:
-               need_resched =
-                       xnsynch_flush(&cond->synchbase, 0) == XNSYNCH_RESCHED;
-               break;
-
-       case 0:
-               need_resched = 0;
-               break;
-
-       default:
-               for(i = 0, need_resched = 0; i < pending_signals; i++)
-                       need_resched |=
-                               xnsynch_wakeup_one_sleeper(&cond->synchbase)
-                               != NULL;
-       }
-
-       *cond->pending_signals = 0;
-
-       return need_resched;
-}
-
 int cobalt_cond_init(union __xeno_cond __user *u_cnd,
                     const pthread_condattr_t __user *u_attr)
 {
diff --git a/kernel/cobalt/cond.h b/kernel/cobalt/cond.h
index 8d77ad9..0936579 100644
--- a/kernel/cobalt/cond.h
+++ b/kernel/cobalt/cond.h
@@ -67,7 +67,34 @@ typedef struct cobalt_cond {
        cobalt_kqueues_t *owningq;
 } cobalt_cond_t;
 
-int cobalt_cond_deferred_signals(struct cobalt_cond *cond);
+static inline int cobalt_cond_deferred_signals(struct cobalt_cond *cond)
+{
+       unsigned long pending_signals;
+       int need_resched, i;
+
+       pending_signals = *(cond->pending_signals);
+
+       switch(pending_signals) {
+       case ~0UL:
+               need_resched =
+                       xnsynch_flush(&cond->synchbase, 0) == XNSYNCH_RESCHED;
+               break;
+
+       case 0:
+               need_resched = 0;
+               break;
+
+       default:
+               for(i = 0, need_resched = 0; i < pending_signals; i++) {
+                       if (xnsynch_wakeup_one_sleeper(&cond->synchbase) == 
NULL)
+                               break;
+                       need_resched = 1;
+               }
+       }
+       *cond->pending_signals = 0;
+
+       return need_resched;
+}
 
 int cobalt_cond_init(union __xeno_cond __user *u_cnd,
                     const pthread_condattr_t __user *u_attr);


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to