forked from Imagelibrary/rtems
Patch from Eric Norum <eric@cls.usask.ca> to fix bug reported by
Ian Lance Taylor <ian@airs.com>: Ian Lance Taylor wrote: > > In rtems-19990528, sbwait sets SB_WAIT in sb_flags. sowakeup checks > it. Why doesn't socket_select set it? > > I don't know that this is a bug--I haven't tried to create a test > case. However, it certainly looks odd. > > Ian Yes, there's a bug there. Sorry about that. It was introduced when I did some cleanup on the sleep/wakeup handling in rtems_glue.c.
This commit is contained in:
@@ -56,12 +56,14 @@ socket_select (struct socket *so, int which, rtems_id tid)
|
||||
case FREAD:
|
||||
if (soreadable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_rcv.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
case FWRITE:
|
||||
if (sowriteable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_snd.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
|
||||
@@ -56,12 +56,14 @@ socket_select (struct socket *so, int which, rtems_id tid)
|
||||
case FREAD:
|
||||
if (soreadable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_rcv.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
case FWRITE:
|
||||
if (sowriteable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_snd.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
|
||||
@@ -56,12 +56,14 @@ socket_select (struct socket *so, int which, rtems_id tid)
|
||||
case FREAD:
|
||||
if (soreadable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_rcv.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
case FWRITE:
|
||||
if (sowriteable(so))
|
||||
return (1);
|
||||
so->so_rcv.sb_flags |= SB_WAIT;
|
||||
so->so_snd.sb_sel.si_pid = tid;
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user