public inbox for ecos-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug 1001914] New: cyg_io_select behaves as "device ready" when the device driver actually doesn't support select?
@ 2013-11-10 23:46 bugzilla-daemon
  0 siblings, 0 replies; 2+ messages in thread
From: bugzilla-daemon @ 2013-11-10 23:46 UTC (permalink / raw)
  To: ecos-bugs

Please do not reply to this email, use the link below.

http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001914

            Bug ID: 1001914
           Summary: cyg_io_select behaves as "device ready" when the
                    device driver actually doesn't support select?
           Product: eCos
           Version: 3.0
            Target: All
  Architecture/Host Other
                OS:
            Status: UNCONFIRMED
          Severity: normal
          Priority: low
         Component: Other
          Assignee: unassigned@bugs.ecos.sourceware.org
          Reporter: vlad_a_pudovkin@hotmail.com
                CC: ecos-bugs@ecos.sourceware.org

The cyg_io_select seems to be not covered by the official eCos reference guide;
the only sort of "spec" I found for it was this snippet from the header
packages/io/common/<version>/include/io.h:

// Test a device for readiness    
cyg_bool cyg_io_select(cyg_io_handle_t handle,
                       cyg_uint32 which,
                       CYG_ADDRWORD info);


The code of this function (file packages/io/common/<version>/src/iosys.c) seems
to try to encode one "special value" into type cyg_bool:

cyg_bool
cyg_io_select(cyg_io_handle_t handle, cyg_uint32 which, CYG_ADDRWORD info)
{
    cyg_devtab_entry_t *t = (cyg_devtab_entry_t *)handle;
    // Validate request
    if (!t->handlers->select) {
        return -EDEVNOSUPP;
    }

    return t->handlers->select( handle, which, info );
}

There are two issues with this "special value":
1) This return statement issues a compiler warning like this:
    implicit conversion from 'int' to 'cyg_bool' (aka 'unsigned char') changes
value from -202 to 54

2) It is somewhat confusing to have one peculiar "true" value to actually
indicate an error while other "true" values mean that the device is ready. The
whole ecos code does not seem to contain examples of using the return value of
this function, which otherwise could help figuring out the "recommended" way of
using that return value.

This lack of cyg_io_select usage examples in the whole ecos code makes me
wonder whether this is a widely used function or rather a work in progress?

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug 1001914] New: cyg_io_select behaves as "device ready" when the device driver actually doesn't support select?
@ 2013-11-10 23:46 bugzilla-daemon
  0 siblings, 0 replies; 2+ messages in thread
From: bugzilla-daemon @ 2013-11-10 23:46 UTC (permalink / raw)
  To: unassigned

Please do not reply to this email, use the link below.

http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001914

            Bug ID: 1001914
           Summary: cyg_io_select behaves as "device ready" when the
                    device driver actually doesn't support select?
           Product: eCos
           Version: 3.0
            Target: All
  Architecture/Host Other
                OS:
            Status: UNCONFIRMED
          Severity: normal
          Priority: low
         Component: Other
          Assignee: unassigned@bugs.ecos.sourceware.org
          Reporter: vlad_a_pudovkin@hotmail.com
                CC: ecos-bugs@ecos.sourceware.org

The cyg_io_select seems to be not covered by the official eCos reference guide;
the only sort of "spec" I found for it was this snippet from the header
packages/io/common/<version>/include/io.h:

// Test a device for readiness    
cyg_bool cyg_io_select(cyg_io_handle_t handle,
                       cyg_uint32 which,
                       CYG_ADDRWORD info);


The code of this function (file packages/io/common/<version>/src/iosys.c) seems
to try to encode one "special value" into type cyg_bool:

cyg_bool
cyg_io_select(cyg_io_handle_t handle, cyg_uint32 which, CYG_ADDRWORD info)
{
    cyg_devtab_entry_t *t = (cyg_devtab_entry_t *)handle;
    // Validate request
    if (!t->handlers->select) {
        return -EDEVNOSUPP;
    }

    return t->handlers->select( handle, which, info );
}

There are two issues with this "special value":
1) This return statement issues a compiler warning like this:
    implicit conversion from 'int' to 'cyg_bool' (aka 'unsigned char') changes
value from -202 to 54

2) It is somewhat confusing to have one peculiar "true" value to actually
indicate an error while other "true" values mean that the device is ready. The
whole ecos code does not seem to contain examples of using the return value of
this function, which otherwise could help figuring out the "recommended" way of
using that return value.

This lack of cyg_io_select usage examples in the whole ecos code makes me
wonder whether this is a widely used function or rather a work in progress?

-- 
You are receiving this mail because:
You are the assignee for the bug.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-11-10 23:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-10 23:46 [Bug 1001914] New: cyg_io_select behaves as "device ready" when the device driver actually doesn't support select? bugzilla-daemon
  -- strict thread matches above, loose matches on Subject: below --
2013-11-10 23:46 bugzilla-daemon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).