[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-30 Thread git repository hosting
Module: xenomai-3
Branch: master
Commit: 10078a95d180c0bfbc2b1068ba1b46d842e87fe9
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=10078a95d180c0bfbc2b1068ba1b46d842e87fe9

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h  |2 +-
 .../arch/x86/include/asm/xenomai/syscall32-table.h |1 -
 kernel/cobalt/posix/mqueue.c   |   79 +++-
 kernel/cobalt/posix/mqueue.h   |7 --
 kernel/cobalt/posix/syscall.c  |5 +-
 kernel/cobalt/posix/syscall32.c|   21 --
 kernel/cobalt/posix/syscall32.h|4 -
 lib/cobalt/mq.c|   19 -
 8 files changed, 29 insertions(+), 109 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h 
b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
index 1c84ef3..9f2f000 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
@@ -37,7 +37,6 @@ __COBALT_CALL32emu_THUNK(mutex_timedlock)
 __COBALT_CALL32emu_THUNK(cond_wait_prologue)
 __COBALT_CALL32emu_THUNK(mq_open)
 __COBALT_CALL32emu_THUNK(mq_getattr)
-__COBALT_CALL32emu_THUNK(mq_setattr)
 __COBALT_CALL32emu_THUNK(mq_timedsend)
 __COBALT_CALL32emu_THUNK(mq_timedreceive)
 __COBALT_CALL32emu_THUNK(mq_notify)
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index 33d8310..b922d5c 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
 

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-29 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 10078a95d180c0bfbc2b1068ba1b46d842e87fe9
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=10078a95d180c0bfbc2b1068ba1b46d842e87fe9

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h  |2 +-
 .../arch/x86/include/asm/xenomai/syscall32-table.h |1 -
 kernel/cobalt/posix/mqueue.c   |   79 +++-
 kernel/cobalt/posix/mqueue.h   |7 --
 kernel/cobalt/posix/syscall.c  |5 +-
 kernel/cobalt/posix/syscall32.c|   21 --
 kernel/cobalt/posix/syscall32.h|4 -
 lib/cobalt/mq.c|   19 -
 8 files changed, 29 insertions(+), 109 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h 
b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
index 1c84ef3..9f2f000 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
@@ -37,7 +37,6 @@ __COBALT_CALL32emu_THUNK(mutex_timedlock)
 __COBALT_CALL32emu_THUNK(cond_wait_prologue)
 __COBALT_CALL32emu_THUNK(mq_open)
 __COBALT_CALL32emu_THUNK(mq_getattr)
-__COBALT_CALL32emu_THUNK(mq_setattr)
 __COBALT_CALL32emu_THUNK(mq_timedsend)
 __COBALT_CALL32emu_THUNK(mq_timedreceive)
 __COBALT_CALL32emu_THUNK(mq_notify)
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index 33d8310..b922d5c 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
   

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-28 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 091b20ab67377f65b589e9a7648554b102d4f154
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=091b20ab67377f65b589e9a7648554b102d4f154

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   19 --
 4 files changed, 27 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_noti

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-26 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 05b263d76b55a49014a9f4bd8ad3ec5167933521
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=05b263d76b55a49014a9f4bd8ad3ec5167933521

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   19 --
 4 files changed, 27 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_noti

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-25 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 80190d3a2bd5a7e4269c0d5937558ac01df6b251
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=80190d3a2bd5a7e4269c0d5937558ac01df6b251

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   19 --
 4 files changed, 27 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_noti

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-25 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 10131f2e6095945bb336616c2775503c2a2e3cd1
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=10131f2e6095945bb336616c2775503c2a2e3cd1

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   19 --
 4 files changed, 27 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_noti

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-25 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: e80f952eafe8c7d467e50e00ff100d7b4289c61b
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=e80f952eafe8c7d467e50e00ff100d7b4289c61b

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   19 --
 4 files changed, 27 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_noti

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-25 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: b6c2a3084430998d80b735c3992d17f1e443cc1e
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=b6c2a3084430998d80b735c3992d17f1e443cc1e

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   21 +--
 4 files changed, 29 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_not

[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags

2014-10-25 Thread git repository hosting
Module: xenomai-gch
Branch: for-forge
Commit: 79da6afda4b680c3c028917d80145e503d3fb8b6
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=79da6afda4b680c3c028917d80145e503d3fb8b6

Author: Gilles Chanteperdrix 
Date:   Sat Oct 25 21:52:07 2014 +0200

cobalt/mqueue: use rtdm fd flags

---

 include/cobalt/uapi/syscall.h |2 +-
 kernel/cobalt/posix/mqueue.c  |   79 +
 kernel/cobalt/posix/syscall.c |2 --
 lib/cobalt/mq.c   |   23 ++--
 4 files changed, 31 insertions(+), 75 deletions(-)

diff --git a/include/cobalt/uapi/syscall.h b/include/cobalt/uapi/syscall.h
index 025d2ff..0f74f37 100644
--- a/include/cobalt/uapi/syscall.h
+++ b/include/cobalt/uapi/syscall.h
@@ -63,7 +63,7 @@
 #define sc_cobalt_mq_close 40
 #define sc_cobalt_mq_unlink41
 #define sc_cobalt_mq_getattr   42
-#define sc_cobalt_mq_setattr   43
+/* 43 unimp */
 #define sc_cobalt_mq_timedsend 44
 #define sc_cobalt_mq_timedreceive  45
 #define sc_cobalt_mq_notify46
diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c
index f5a69f9..5d17ec7 100644
--- a/kernel/cobalt/posix/mqueue.c
+++ b/kernel/cobalt/posix/mqueue.c
@@ -31,7 +31,7 @@
 
 #define COBALT_MSGMAX  65536
 #define COBALT_MSGSIZEMAX  (16*1024*1024)
-#define COBALT_MSGPRIOMAX  32768
+#define COBALT_MSGPRIOMAX  32768
 
 struct cobalt_mq {
unsigned magic;
@@ -62,7 +62,6 @@ struct cobalt_mq {
 };
 
 struct cobalt_mqd {
-   long flags;
struct cobalt_mq *mq;
struct rtdm_fd fd;
 };
@@ -228,7 +227,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
switch(type) {
case XNSELECT_READ:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_WRONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_WRONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->read_select, binding,
@@ -240,7 +239,7 @@ mqd_select(struct rtdm_fd *fd, struct xnselector *selector,
 
case XNSELECT_WRITE:
err = -EBADF;
-   if ((mqd->flags & COBALT_PERMS_MASK) == O_RDONLY)
+   if ((rtdm_fd_flags(fd) & COBALT_PERMS_MASK) == O_RDONLY)
goto unlock_and_error;
 
err = xnselect_bind(&mq->write_select, binding,
@@ -275,7 +274,7 @@ static inline int mqd_create(struct cobalt_mq *mq, unsigned 
long flags, int ufd)
if (mqd == NULL)
return -ENOSPC;
 
-   mqd->flags = flags;
+   mqd->fd.oflags = flags;
mqd->mq = mq;
 
return rtdm_fd_enter(&mqd->fd, ufd, COBALT_MQD_MAGIC, &mqd_ops);
@@ -416,7 +415,7 @@ mq_trysend(struct cobalt_mqd *mqd, size_t len)
unsigned flags;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_WRONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -442,7 +441,7 @@ mq_tryrcv(struct cobalt_mqd *mqd, size_t len)
struct cobalt_mq *mq;
 
mq = mqd->mq;
-   flags = mqd->flags & COBALT_PERMS_MASK;
+   flags = rtdm_fd_flags(&mqd->fd) & COBALT_PERMS_MASK;
 
if (flags != O_RDONLY && flags != O_RDWR)
return ERR_PTR(-EBADF);
@@ -485,7 +484,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -614,7 +613,7 @@ redo:
if (msg != ERR_PTR(-EAGAIN))
goto out;
 
-   if (mqd->flags & O_NONBLOCK)
+   if (rtdm_fd_flags(&mqd->fd) & O_NONBLOCK)
goto out;
 
if (fetch_timeout) {
@@ -668,36 +667,13 @@ static inline int mq_getattr(struct cobalt_mqd *mqd, 
struct mq_attr *attr)
mq = mqd->mq;
*attr = mq->attr;
xnlock_get_irqsave(&nklock, s);
-   attr->mq_flags = mqd->flags;
+   attr->mq_flags = rtdm_fd_flags(&mqd->fd);
attr->mq_curmsgs = mq->nrqueued;
xnlock_put_irqrestore(&nklock, s);
 
return 0;
 }
 
-static inline int mq_setattr(struct cobalt_mqd *mqd,
-const struct mq_attr *__restrict__ attr,
-struct mq_attr *__restrict__ oattr)
-{
-   struct cobalt_mq *mq;
-   long flags;
-   spl_t s;
-
-   xnlock_get_irqsave(&nklock, s);
-   mq = mqd->mq;
-   if (oattr) {
-   *oattr = mq->attr;
-   oattr->mq_flags = mqd->flags;
-   oattr->mq_curmsgs = mq->nrqueued;
-   }
-   flags = (mqd->flags & COBALT_PERMS_MASK)
-   | (attr->mq_flags & ~COBALT_PERMS_MASK);
-   mqd->flags = flags;
-   xnlock_put_irqrestore(&nklock, s);
-
-   return 0;
-}
-
 static inline int
 mq_no