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

Author: Philippe Gerum <r...@xenomai.org>
Date:   Tue Sep  2 15:21:39 2014 +0200

cobalt/uapi: make cobalt_mutex, cobalt_cond 32/64bit-neutral

---

 include/cobalt/uapi/cond.h  |    8 ++++----
 include/cobalt/uapi/mutex.h |   10 ++++++----
 kernel/cobalt/posix/cond.c  |   13 ++++++-------
 kernel/cobalt/posix/cond.h  |    3 ++-
 lib/cobalt/cond.c           |   20 ++++++++++----------
 lib/cobalt/mutex.c          |    6 +++---
 6 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/include/cobalt/uapi/cond.h b/include/cobalt/uapi/cond.h
index 60e1ab4..cea0737 100644
--- a/include/cobalt/uapi/cond.h
+++ b/include/cobalt/uapi/cond.h
@@ -25,15 +25,15 @@
 union cobalt_cond_union {
        pthread_cond_t native_cond;
        struct cobalt_cond_shadow {
-               unsigned int magic;
+               __u32 magic;
                struct cobalt_condattr attr;
                xnhandle_t handle;
                union {
-                       unsigned int pending_signals_offset;
-                       unsigned long *pending_signals;
+                       __u32 pending_signals_offset;
+                       __u32 *pending_signals;
                };
                union {
-                       unsigned int mutex_datp_offset;
+                       __u32 mutex_datp_offset;
                        struct mutex_dat *mutex_datp;
                };
        } shadow_cond;
diff --git a/include/cobalt/uapi/mutex.h b/include/cobalt/uapi/mutex.h
index 130632c..383ad91 100644
--- a/include/cobalt/uapi/mutex.h
+++ b/include/cobalt/uapi/mutex.h
@@ -18,11 +18,13 @@
 #ifndef _COBALT_UAPI_MUTEX_H
 #define _COBALT_UAPI_MUTEX_H
 
+#include <cobalt/uapi/kernel/types.h>
+
 #define COBALT_MUTEX_MAGIC  0x86860303
 
 struct mutex_dat {
        atomic_t owner;
-       unsigned long flags;
+       __u32 flags;
 #define COBALT_MUTEX_COND_SIGNAL 0x00000001
 #define COBALT_MUTEX_ERRORCHECK  0x00000002
 };
@@ -30,11 +32,11 @@ struct mutex_dat {
 union cobalt_mutex_union {
        pthread_mutex_t native_mutex;
        struct cobalt_mutex_shadow {
-               unsigned int magic;
-               unsigned int lockcnt;
+               __u32 magic;
+               __u32 lockcnt;
                xnhandle_t handle;
                union {
-                       unsigned int dat_offset;
+                       __u32 dat_offset;
                        struct mutex_dat *dat;
                };
                struct cobalt_mutexattr attr;
diff --git a/kernel/cobalt/posix/cond.c b/kernel/cobalt/posix/cond.c
index 948bd71..6f5ad41 100644
--- a/kernel/cobalt/posix/cond.c
+++ b/kernel/cobalt/posix/cond.c
@@ -62,14 +62,13 @@ pthread_cond_init(struct cobalt_cond_shadow *cnd, const 
struct cobalt_condattr *
                return -ENOMEM;
 
        sys_ppd = cobalt_ppd_get(attr->pshared);
-       cond->pending_signals = (unsigned long *)
-               xnheap_alloc(&sys_ppd->sem_heap,
-                            sizeof(*(cond->pending_signals)));
-       if (!cond->pending_signals) {
+       cond->pending_signals = xnheap_alloc(&sys_ppd->sem_heap,
+                                            sizeof(*cond->pending_signals));
+       if (cond->pending_signals == NULL) {
                err = -EAGAIN;
                goto err_free_cond;
        }
-       *(cond->pending_signals) = 0;
+       *cond->pending_signals = 0;
 
        xnlock_get_irqsave(&nklock, s);
 
@@ -417,7 +416,7 @@ COBALT_SYSCALL(cond_wait_epilogue, primary,
 
 int cobalt_cond_deferred_signals(struct cobalt_cond *cond)
 {
-       unsigned long pending_signals;
+       __u32 pending_signals;
        int need_resched;
 
        pending_signals = *cond->pending_signals;
@@ -429,7 +428,7 @@ int cobalt_cond_deferred_signals(struct cobalt_cond *cond)
                                                            pending_signals);
                break;
 
-       case ~0UL:
+       case ~0U:
                need_resched =
                        xnsynch_flush(&cond->synchbase, 0) == XNSYNCH_RESCHED;
                *cond->pending_signals = 0;
diff --git a/kernel/cobalt/posix/cond.h b/kernel/cobalt/posix/cond.h
index 8db0b78..c98edf8 100644
--- a/kernel/cobalt/posix/cond.h
+++ b/kernel/cobalt/posix/cond.h
@@ -18,6 +18,7 @@
 #ifndef _COBALT_POSIX_COND_H
 #define _COBALT_POSIX_COND_H
 
+#include <linux/types.h>
 #include <linux/time.h>
 #include <linux/list.h>
 #include <cobalt/kernel/synch.h>
@@ -34,7 +35,7 @@ struct cobalt_cond {
        /** cobalt_condq */
        struct list_head link;
        struct list_head mutex_link;
-       unsigned long *pending_signals;
+       __u32 *pending_signals;
        struct cobalt_condattr attr;
        struct cobalt_mutex *mutex;
        struct cobalt_kqueues *owningq;
diff --git a/lib/cobalt/cond.c b/lib/cobalt/cond.c
index 8426507..1ebf794 100644
--- a/lib/cobalt/cond.c
+++ b/lib/cobalt/cond.c
@@ -55,11 +55,11 @@
 
 static pthread_condattr_t cobalt_default_condattr;
 
-static inline unsigned long *cond_get_signalsp(struct cobalt_cond_shadow 
*shadow)
+static inline __u32 *cond_get_signalsp(struct cobalt_cond_shadow *shadow)
 {
        if (shadow->attr.pshared)
-               return (unsigned long *)(cobalt_sem_heap[1]
-                                        + shadow->pending_signals_offset);
+               return (__u32 *)(cobalt_sem_heap[1]
+                                + shadow->pending_signals_offset);
 
        return shadow->pending_signals;
 }
@@ -112,8 +112,8 @@ COBALT_IMPL(int, pthread_cond_init, (pthread_cond_t *cond,
                                     const pthread_condattr_t * attr))
 {
        struct cobalt_cond_shadow *_cnd = &((union cobalt_cond_union 
*)cond)->shadow_cond;
-       unsigned long *pending_signalsp;
        struct cobalt_condattr kcattr;
+       __u32 *pending_signalsp;
        int err, tmp;
 
        if (attr == NULL)
@@ -134,7 +134,7 @@ COBALT_IMPL(int, pthread_cond_init, (pthread_cond_t *cond,
                return err;
 
        if (!_cnd->attr.pshared) {
-               pending_signalsp = (unsigned long *)
+               pending_signalsp = (__u32 *)
                        (cobalt_sem_heap[0] + _cnd->pending_signals_offset);
                _cnd->pending_signals = pending_signalsp;
        } else
@@ -399,10 +399,10 @@ COBALT_IMPL(int, pthread_cond_timedwait, (pthread_cond_t 
*cond,
 COBALT_IMPL(int, pthread_cond_signal, (pthread_cond_t *cond))
 {
        struct cobalt_cond_shadow *_cnd = &((union cobalt_cond_union 
*)cond)->shadow_cond;
-       unsigned long pending_signals, *pending_signalsp;
+       __u32 pending_signals, *pending_signalsp;
        struct mutex_dat *mutex_datp;
-       unsigned long flags;
        xnhandle_t cur;
+       __u32 flags;
 
        if (_cnd->magic != COBALT_COND_MAGIC)
                return EINVAL;
@@ -421,7 +421,7 @@ COBALT_IMPL(int, pthread_cond_signal, (pthread_cond_t 
*cond))
                mutex_datp->flags = flags | COBALT_MUTEX_COND_SIGNAL;
                pending_signalsp = cond_get_signalsp(_cnd);
                pending_signals = *pending_signalsp;
-               if (pending_signals != ~0UL)
+               if (pending_signals != ~0U)
                        *pending_signalsp = pending_signals + 1;
        }
 
@@ -450,8 +450,8 @@ COBALT_IMPL(int, pthread_cond_broadcast, (pthread_cond_t 
*cond))
 {
        struct cobalt_cond_shadow *_cnd = &((union cobalt_cond_union 
*)cond)->shadow_cond;
        struct mutex_dat *mutex_datp;
-       unsigned long flags;
        xnhandle_t cur;
+       __u32 flags;
 
        if (_cnd->magic != COBALT_COND_MAGIC)
                return EINVAL;
@@ -468,7 +468,7 @@ COBALT_IMPL(int, pthread_cond_broadcast, (pthread_cond_t 
*cond))
                                return EPERM;
                }
                mutex_datp->flags = flags | COBALT_MUTEX_COND_SIGNAL;
-               *cond_get_signalsp(_cnd) = ~0UL;
+               *cond_get_signalsp(_cnd) = ~0U;
        }
 
        return 0;
diff --git a/lib/cobalt/mutex.c b/lib/cobalt/mutex.c
index e529dfd..e52f615 100644
--- a/lib/cobalt/mutex.c
+++ b/lib/cobalt/mutex.c
@@ -250,7 +250,7 @@ COBALT_IMPL(int, pthread_mutex_lock, (pthread_mutex_t 
*mutex))
                        return EDEADLK;
 
                case PTHREAD_MUTEX_RECURSIVE:
-                       if (_mutex->lockcnt == UINT_MAX)
+                       if (_mutex->lockcnt == UINT32_MAX)
                                return EAGAIN;
                        ++_mutex->lockcnt;
                        return 0;
@@ -335,7 +335,7 @@ COBALT_IMPL(int, pthread_mutex_timedlock, (pthread_mutex_t 
*mutex,
                        return EDEADLK;
 
                case PTHREAD_MUTEX_RECURSIVE:
-                       if (_mutex->lockcnt == UINT_MAX)
+                       if (_mutex->lockcnt == UINT32_MAX)
                                return EAGAIN;
 
                        ++_mutex->lockcnt;
@@ -406,7 +406,7 @@ COBALT_IMPL(int, pthread_mutex_trylock, (pthread_mutex_t 
*mutex))
        }
 
        if (err == -EBUSY && _mutex->attr.type == PTHREAD_MUTEX_RECURSIVE) {
-               if (_mutex->lockcnt == UINT_MAX)
+               if (_mutex->lockcnt == UINT32_MAX)
                        return EAGAIN;
 
                ++_mutex->lockcnt;


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

Reply via email to