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

Reply via email to