Module: xenomai-jki Branch: for-upstream Commit: 812e716696c71c803a84b9cb58607108b7f7892c URL: http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=812e716696c71c803a84b9cb58607108b7f7892c
Author: Jan Kiszka <jan.kis...@siemens.com> Date: Sat Feb 27 12:26:01 2010 +0100 RTDM: Return EBADF instrea of EIDRM from rtdm_*_select_bind When an RTDM driver invalidates or even closes a device for which select()able semaphores or event objects exit, those will be destroyed as well. And that will make rtdm_*_select_bind return -EIDRM so far which is finally return by the select() frontend. But the correct return value of select() is EBADF in this case. To ease the implementation of the backends and to avoid error translations later on, already return EBADF from lowest level. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- ksrc/skins/rtdm/drvlib.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ksrc/skins/rtdm/drvlib.c b/ksrc/skins/rtdm/drvlib.c index 637f99e..20b2db9 100644 --- a/ksrc/skins/rtdm/drvlib.c +++ b/ksrc/skins/rtdm/drvlib.c @@ -1051,7 +1051,8 @@ EXPORT_SYMBOL(rtdm_event_clear); * * @return 0 on success, otherwise: * - * - -EIDRM is returned if @a event has been destroyed. + * - -EBADF is returned if @a sem has been destroyed, invalidating the + * related file descriptor. * * - -ENOMEM is returned if there is insufficient memory to establish the * dynamic binding. @@ -1081,7 +1082,7 @@ int rtdm_event_select_bind(rtdm_event_t *event, rtdm_selector_t *selector, xnlock_get_irqsave(&nklock, s); if (unlikely(testbits(event->synch_base.status, RTDM_SYNCH_DELETED))) - err = -EIDRM; + err = -EBADF; else err = xnselect_bind(&event->select_block, binding, selector, type, fd_index, @@ -1337,7 +1338,8 @@ EXPORT_SYMBOL(rtdm_sem_up); * * @return 0 on success, otherwise: * - * - -EIDRM is returned if @a sem has been destroyed. + * - -EBADF is returned if @a sem has been destroyed, invalidating the + * related file descriptor. * * - -ENOMEM is returned if there is insufficient memory to establish the * dynamic binding. @@ -1367,7 +1369,7 @@ int rtdm_sem_select_bind(rtdm_sem_t *sem, rtdm_selector_t *selector, xnlock_get_irqsave(&nklock, s); if (unlikely(testbits(sem->synch_base.status, RTDM_SYNCH_DELETED))) - err = -EIDRM; + err = -EBADF; else err = xnselect_bind(&sem->select_block, binding, selector, type, fd_index, (sem->value > 0)); _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git