[Xenomai-git] Philippe Gerum : lib/smokey: add timed wait on barrier

2016-03-06 Thread git repository hosting
Module: xenomai-3
Branch: wip/dovetail
Commit: 038bed1b65bc2830bf91b945e9adde1e0c396fda
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=038bed1b65bc2830bf91b945e9adde1e0c396fda

Author: Philippe Gerum 
Date:   Fri Feb 26 18:38:24 2016 +0100

lib/smokey: add timed wait on barrier

Add this chance, fix a potential UMR in smokey_barrier_wait().

---

 include/smokey/smokey.h |3 +++
 lib/smokey/helpers.c|   20 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/include/smokey/smokey.h b/include/smokey/smokey.h
index 82e2b64..8351563 100644
--- a/include/smokey/smokey.h
+++ b/include/smokey/smokey.h
@@ -226,6 +226,9 @@ void smokey_barrier_destroy(struct smokey_barrier *b);
 
 int smokey_barrier_wait(struct smokey_barrier *b);
 
+int smokey_barrier_timedwait(struct smokey_barrier *b,
+struct timespec *ts);
+  
 void smokey_barrier_release(struct smokey_barrier *b);

 #ifdef __cplusplus
diff --git a/lib/smokey/helpers.c b/lib/smokey/helpers.c
index b52afed..2b9985d 100644
--- a/lib/smokey/helpers.c
+++ b/lib/smokey/helpers.c
@@ -199,7 +199,7 @@ void smokey_barrier_destroy(struct smokey_barrier *b)
 
 int smokey_barrier_wait(struct smokey_barrier *b)
 {
-   int ret;
+   int ret = 0;

__RT(pthread_mutex_lock(&b->lock));
 
@@ -214,6 +214,24 @@ int smokey_barrier_wait(struct smokey_barrier *b)
return ret;
 }
 
+int smokey_barrier_timedwait(struct smokey_barrier *b, struct timespec *ts)
+{
+   int ret = 0;
+   
+   __RT(pthread_mutex_lock(&b->lock));
+
+   while (!b->signaled) {
+   ret = __RT(pthread_cond_timedwait(&b->barrier,
+ &b->lock, ts));
+   if (ret)
+   break;
+   }
+
+   __RT(pthread_mutex_unlock(&b->lock));
+
+   return ret;
+}
+
 void smokey_barrier_release(struct smokey_barrier *b)
 {
__RT(pthread_mutex_lock(&b->lock));


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


[Xenomai-git] Philippe Gerum : lib/smokey: add timed wait on barrier

2016-02-26 Thread git repository hosting
Module: xenomai-3
Branch: wip/prioceil
Commit: 3847e618c2789a9c4f633d267179312db06ff64d
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=3847e618c2789a9c4f633d267179312db06ff64d

Author: Philippe Gerum 
Date:   Fri Feb 26 18:38:24 2016 +0100

lib/smokey: add timed wait on barrier

Add this chance, fix a potential UMR in smokey_barrier_wait().

---

 include/smokey/smokey.h |3 +++
 lib/smokey/helpers.c|   20 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/include/smokey/smokey.h b/include/smokey/smokey.h
index 82e2b64..8351563 100644
--- a/include/smokey/smokey.h
+++ b/include/smokey/smokey.h
@@ -226,6 +226,9 @@ void smokey_barrier_destroy(struct smokey_barrier *b);
 
 int smokey_barrier_wait(struct smokey_barrier *b);
 
+int smokey_barrier_timedwait(struct smokey_barrier *b,
+struct timespec *ts);
+  
 void smokey_barrier_release(struct smokey_barrier *b);

 #ifdef __cplusplus
diff --git a/lib/smokey/helpers.c b/lib/smokey/helpers.c
index b52afed..2b9985d 100644
--- a/lib/smokey/helpers.c
+++ b/lib/smokey/helpers.c
@@ -199,7 +199,7 @@ void smokey_barrier_destroy(struct smokey_barrier *b)
 
 int smokey_barrier_wait(struct smokey_barrier *b)
 {
-   int ret;
+   int ret = 0;

__RT(pthread_mutex_lock(&b->lock));
 
@@ -214,6 +214,24 @@ int smokey_barrier_wait(struct smokey_barrier *b)
return ret;
 }
 
+int smokey_barrier_timedwait(struct smokey_barrier *b, struct timespec *ts)
+{
+   int ret = 0;
+   
+   __RT(pthread_mutex_lock(&b->lock));
+
+   while (!b->signaled) {
+   ret = __RT(pthread_cond_timedwait(&b->barrier,
+ &b->lock, ts));
+   if (ret)
+   break;
+   }
+
+   __RT(pthread_mutex_unlock(&b->lock));
+
+   return ret;
+}
+
 void smokey_barrier_release(struct smokey_barrier *b)
 {
__RT(pthread_mutex_lock(&b->lock));


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


[Xenomai-git] Philippe Gerum : lib/smokey: add timed wait on barrier

2016-02-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 038bed1b65bc2830bf91b945e9adde1e0c396fda
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=038bed1b65bc2830bf91b945e9adde1e0c396fda

Author: Philippe Gerum 
Date:   Fri Feb 26 18:38:24 2016 +0100

lib/smokey: add timed wait on barrier

Add this chance, fix a potential UMR in smokey_barrier_wait().

---

 include/smokey/smokey.h |3 +++
 lib/smokey/helpers.c|   20 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/include/smokey/smokey.h b/include/smokey/smokey.h
index 82e2b64..8351563 100644
--- a/include/smokey/smokey.h
+++ b/include/smokey/smokey.h
@@ -226,6 +226,9 @@ void smokey_barrier_destroy(struct smokey_barrier *b);
 
 int smokey_barrier_wait(struct smokey_barrier *b);
 
+int smokey_barrier_timedwait(struct smokey_barrier *b,
+struct timespec *ts);
+  
 void smokey_barrier_release(struct smokey_barrier *b);

 #ifdef __cplusplus
diff --git a/lib/smokey/helpers.c b/lib/smokey/helpers.c
index b52afed..2b9985d 100644
--- a/lib/smokey/helpers.c
+++ b/lib/smokey/helpers.c
@@ -199,7 +199,7 @@ void smokey_barrier_destroy(struct smokey_barrier *b)
 
 int smokey_barrier_wait(struct smokey_barrier *b)
 {
-   int ret;
+   int ret = 0;

__RT(pthread_mutex_lock(&b->lock));
 
@@ -214,6 +214,24 @@ int smokey_barrier_wait(struct smokey_barrier *b)
return ret;
 }
 
+int smokey_barrier_timedwait(struct smokey_barrier *b, struct timespec *ts)
+{
+   int ret = 0;
+   
+   __RT(pthread_mutex_lock(&b->lock));
+
+   while (!b->signaled) {
+   ret = __RT(pthread_cond_timedwait(&b->barrier,
+ &b->lock, ts));
+   if (ret)
+   break;
+   }
+
+   __RT(pthread_mutex_unlock(&b->lock));
+
+   return ret;
+}
+
 void smokey_barrier_release(struct smokey_barrier *b)
 {
__RT(pthread_mutex_lock(&b->lock));


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


[Xenomai-git] Philippe Gerum : lib/smokey: add timed wait on barrier

2016-02-26 Thread git repository hosting
Module: xenomai-3
Branch: stable-3.0.x
Commit: 3847e618c2789a9c4f633d267179312db06ff64d
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=3847e618c2789a9c4f633d267179312db06ff64d

Author: Philippe Gerum 
Date:   Fri Feb 26 18:38:24 2016 +0100

lib/smokey: add timed wait on barrier

Add this chance, fix a potential UMR in smokey_barrier_wait().

---

 include/smokey/smokey.h |3 +++
 lib/smokey/helpers.c|   20 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/include/smokey/smokey.h b/include/smokey/smokey.h
index 82e2b64..8351563 100644
--- a/include/smokey/smokey.h
+++ b/include/smokey/smokey.h
@@ -226,6 +226,9 @@ void smokey_barrier_destroy(struct smokey_barrier *b);
 
 int smokey_barrier_wait(struct smokey_barrier *b);
 
+int smokey_barrier_timedwait(struct smokey_barrier *b,
+struct timespec *ts);
+  
 void smokey_barrier_release(struct smokey_barrier *b);

 #ifdef __cplusplus
diff --git a/lib/smokey/helpers.c b/lib/smokey/helpers.c
index b52afed..2b9985d 100644
--- a/lib/smokey/helpers.c
+++ b/lib/smokey/helpers.c
@@ -199,7 +199,7 @@ void smokey_barrier_destroy(struct smokey_barrier *b)
 
 int smokey_barrier_wait(struct smokey_barrier *b)
 {
-   int ret;
+   int ret = 0;

__RT(pthread_mutex_lock(&b->lock));
 
@@ -214,6 +214,24 @@ int smokey_barrier_wait(struct smokey_barrier *b)
return ret;
 }
 
+int smokey_barrier_timedwait(struct smokey_barrier *b, struct timespec *ts)
+{
+   int ret = 0;
+   
+   __RT(pthread_mutex_lock(&b->lock));
+
+   while (!b->signaled) {
+   ret = __RT(pthread_cond_timedwait(&b->barrier,
+ &b->lock, ts));
+   if (ret)
+   break;
+   }
+
+   __RT(pthread_mutex_unlock(&b->lock));
+
+   return ret;
+}
+
 void smokey_barrier_release(struct smokey_barrier *b)
 {
__RT(pthread_mutex_lock(&b->lock));


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