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