[BACK]Return to uipc_socket.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/uipc_socket.c between version 1.56.2.3 and 1.56.2.4

version 1.56.2.3, 2002/01/10 20:00:14 version 1.56.2.4, 2002/03/15 21:36:11
Line 1125  soo_kqfilter(struct file *fp, struct kno
Line 1125  soo_kqfilter(struct file *fp, struct kno
 {  {
         struct socket   *so;          struct socket   *so;
         struct sockbuf  *sb;          struct sockbuf  *sb;
         int             s;  
   
         so = (struct socket *)kn->kn_fp->f_data;          so = (struct socket *)kn->kn_fp->f_data;
         switch (kn->kn_filter) {          switch (kn->kn_filter) {
Line 1143  soo_kqfilter(struct file *fp, struct kno
Line 1142  soo_kqfilter(struct file *fp, struct kno
         default:          default:
                 return (1);                  return (1);
         }          }
         s = splnet();           /* XXXLUKEM: maybe splsoftnet() ? */  
         SLIST_INSERT_HEAD(&sb->sb_sel.si_klist, kn, kn_selnext);          SLIST_INSERT_HEAD(&sb->sb_sel.si_klist, kn, kn_selnext);
         sb->sb_flags |= SB_KNOTE;          sb->sb_flags |= SB_KNOTE;
         splx(s);  
         return (0);          return (0);
 }  }
   
Line 1154  static void
Line 1151  static void
 filt_sordetach(struct knote *kn)  filt_sordetach(struct knote *kn)
 {  {
         struct socket   *so;          struct socket   *so;
         int             s;  
   
         so = (struct socket *)kn->kn_fp->f_data;          so = (struct socket *)kn->kn_fp->f_data;
         s = splnet();           /* XXXLUKEM: maybe splsoftnet() ? */  
         SLIST_REMOVE(&so->so_rcv.sb_sel.si_klist, kn, knote, kn_selnext);          SLIST_REMOVE(&so->so_rcv.sb_sel.si_klist, kn, knote, kn_selnext);
         if (SLIST_EMPTY(&so->so_rcv.sb_sel.si_klist))          if (SLIST_EMPTY(&so->so_rcv.sb_sel.si_klist))
                 so->so_rcv.sb_flags &= ~SB_KNOTE;                  so->so_rcv.sb_flags &= ~SB_KNOTE;
         splx(s);  
 }  }
   
 /*ARGSUSED*/  /*ARGSUSED*/
Line 1188  static void
Line 1182  static void
 filt_sowdetach(struct knote *kn)  filt_sowdetach(struct knote *kn)
 {  {
         struct socket   *so;          struct socket   *so;
         int             s;  
   
         so = (struct socket *)kn->kn_fp->f_data;          so = (struct socket *)kn->kn_fp->f_data;
         s = splnet();           /* XXXLUKEM: maybe splsoftnet() ? */  
         SLIST_REMOVE(&so->so_snd.sb_sel.si_klist, kn, knote, kn_selnext);          SLIST_REMOVE(&so->so_snd.sb_sel.si_klist, kn, knote, kn_selnext);
         if (SLIST_EMPTY(&so->so_snd.sb_sel.si_klist))          if (SLIST_EMPTY(&so->so_snd.sb_sel.si_klist))
                 so->so_snd.sb_flags &= ~SB_KNOTE;                  so->so_snd.sb_flags &= ~SB_KNOTE;
         splx(s);  
 }  }
   
 /*ARGSUSED*/  /*ARGSUSED*/
Line 1228  filt_solisten(struct knote *kn, long hin
Line 1219  filt_solisten(struct knote *kn, long hin
         struct socket   *so;          struct socket   *so;
   
         so = (struct socket *)kn->kn_fp->f_data;          so = (struct socket *)kn->kn_fp->f_data;
 #if 0  
         /*          /*
          * XXXLUKEM:    this was freebsd's code. it appears that they           * Set kn_data to number of incoming connections, not
          * XXXLUKEM:    modified the socket code to store the count           * counting partial (incomplete) connections.
          * XXXLUKEM:    of all connections in so_qlen, and separately           */
          * XXXLUKEM:    track the number of incompletes in so_incqlen.  
          * XXXLUKEM:    as we appear to keep only completed connections  
          * XXXLUKEM:    on so_qlen we can just return that.  
          * XXXLUKEM:    that said, a socket guru should double check for me :)  
          */  
         kn->kn_data = so->so_qlen - so->so_incqlen;  
         return (! TAILQ_EMPTY(&so->so_comp));  
 #else  
         kn->kn_data = so->so_qlen;          kn->kn_data = so->so_qlen;
         return (kn->kn_data > 0);          return (kn->kn_data > 0);
 #endif  
 }  }

Legend:
Removed from v.1.56.2.3  
changed lines
  Added in v.1.56.2.4

CVSweb <webmaster@jp.NetBSD.org>