Signed-off-by: Angus Salkeld <asalkeld(a)redhat.com>
---
check | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/check b/check
index c7c6da2..1b68619 100755
--- a/check
+++ b/check
@@ -50,7 +50,7 @@ fi
cd $up
set -e
-if [ ! -e install-sh ]
+if [ ! -e build-aux/install-sh ]
then
./autogen.sh
fi
@@ -185,7 +185,6 @@ check_coverity() {
--concurrency \
--all \
--aggressiveness-level high \
- --enable MISRA_CAST \
--security \
--wait-for-license
cov-format-errors --dir cov
@@ -210,6 +209,14 @@ check_clang() {
check_abi() {
ver1=$1
ver2=$2
+ if [ -z "$ver1" ] ; then
+ echo need two versions.
+ exit 1
+ fi
+ if [ -z "$ver2" ] ; then
+ echo need two versions.
+ exit 1
+ fi
TMPL=build-aux/abi-check-templ.xml
checker=abi-compliance-checker
@@ -251,7 +258,7 @@ check_abi() {
check_api_sanity() {
make
export CFLAGS="-Wall -ggdb2"
- api-sanity-autotest -l libqb -d build-aux/api-auto-test.xml -gen -build -run
+ api-sanity-checker -l libqb -d build-aux/api-auto-test.xml -gen -build -run
google-chrome test_results/libqb/master/test_results.html
google-chrome test_results/libqb/master/test_results.html
}
--
1.7.10.1
Show replies by date
- the way they are selected
- rpl_sem.c the error handling
Signed-off-by: Angus Salkeld <asalkeld(a)redhat.com>
---
lib/ringbuffer_helper.c | 16 ++++------------
lib/rpl_sem.c | 39 +++++++++++++++++++++++++++++++--------
tests/check_rb.c | 4 ----
3 files changed, 35 insertions(+), 24 deletions(-)
diff --git a/lib/ringbuffer_helper.c b/lib/ringbuffer_helper.c
index c466cde..c3c3428 100644
--- a/lib/ringbuffer_helper.c
+++ b/lib/ringbuffer_helper.c
@@ -264,9 +264,7 @@ qb_rb_sem_create(struct qb_ringbuffer_s * rb, uint32_t flags)
* 4) sysv sems (if we do NOT have semtimedop)
*
* if we need QB_RB_FLAG_SHARED_THREAD
- * then the order of choice is:
- * 1) real posix sem
- * 2) sems using pthread_cond_timedwait
+ * then always use posix sem (real or using pthread_cond_timedwait)
*/
if (flags & QB_RB_FLAG_SHARED_PROCESS) {
@@ -276,18 +274,12 @@ qb_rb_sem_create(struct qb_ringbuffer_s * rb, uint32_t flags)
#ifdef HAVE_SEMTIMEDOP
use_posix = QB_FALSE;
#else
- /* TODO still need to check whether or not
- * mutexes and cond support pshared
- */
+ #if defined(DISABLE_POSIX_THREAD_PROCESS_SHARED)
+#error you do not seem to have a usable shared process semaphore
+ #endif
use_posix = QB_TRUE;
#endif /* HAVE_SEMTIMEDOP */
#endif /* HAVE_SEM_TIMEDWAIT */
- } else {
-#ifdef HAVE_SEM_TIMEDWAIT
- use_posix = QB_TRUE;
-#else
- use_posix = QB_FALSE;
-#endif /* HAVE_SEM_TIMEDWAIT */
}
if (use_posix) {
rc = my_posix_sem_create(rb, flags);
diff --git a/lib/rpl_sem.c b/lib/rpl_sem.c
index 7c87d6e..95157c6 100644
--- a/lib/rpl_sem.c
+++ b/lib/rpl_sem.c
@@ -69,9 +69,11 @@ cleanup:
int
rpl_sem_wait(rpl_sem_t * sem)
{
- int retval = 0;
-
- pthread_mutex_lock(&sem->mutex);
+ int retval = pthread_mutex_lock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
/* wait for sem->count to be not zero, or error
*/
@@ -97,8 +99,11 @@ rpl_sem_wait(rpl_sem_t * sem)
int
rpl_sem_timedwait(rpl_sem_t * sem, const struct timespec *timeout)
{
- int retval = 0;
- pthread_mutex_lock(&sem->mutex);
+ int retval = pthread_mutex_lock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
/* wait for sem->count to be not zero, or error
*/
@@ -131,7 +136,11 @@ rpl_sem_timedwait(rpl_sem_t * sem, const struct timespec *timeout)
int
rpl_sem_trywait(rpl_sem_t * sem)
{
- pthread_mutex_lock(&sem->mutex);
+ int retval = pthread_mutex_lock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
if (sem->count) {
sem->count--;
pthread_mutex_unlock(&sem->mutex);
@@ -145,17 +154,31 @@ rpl_sem_trywait(rpl_sem_t * sem)
int
rpl_sem_post(rpl_sem_t * sem)
{
- pthread_mutex_lock(&sem->mutex);
+ int retval = pthread_mutex_lock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
sem->count++;
- pthread_cond_broadcast(&sem->cond);
+ retval = pthread_cond_broadcast(&sem->cond);
pthread_mutex_unlock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
return 0;
}
int
rpl_sem_getvalue(rpl_sem_t * sem, int *sval)
{
+ int retval = pthread_mutex_lock(&sem->mutex);
+ if (retval != 0) {
+ errno = retval;
+ return -1;
+ }
*sval = sem->count;
+ pthread_mutex_unlock(&sem->mutex);
return 0;
}
diff --git a/tests/check_rb.c b/tests/check_rb.c
index 97b6dd4..f72f647 100644
--- a/tests/check_rb.c
+++ b/tests/check_rb.c
@@ -105,10 +105,6 @@ START_TEST(test_ring_buffer2)
}
for (i = 0; i < 100; i++) {
l = qb_rb_chunk_peek(t, (void **)&new_data, 0);
- if (l < 0) {
- /* no more to read */
- break;
- }
ck_assert_int_eq(l, sizeof(v));
fail_unless(v == *new_data);
qb_rb_chunk_reclaim(t);
--
1.7.10.1