[Xenomai-git] Gilles Chanteperdrix : cobalt/mqueue: use rtdm fd flags
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
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
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
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
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
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
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
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
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