F_SETSIG broken/changed in 2.6 for UDP and TCP sockets?

From: Russell Leighton (russ_at_elegant-software.com)
Date: 05/31/04

  • Next message: Colin Gibbs: "nfsd readahead"
    Date:	Mon, 31 May 2004 14:45:08 -0400
    To: linux-kernel@vger.kernel.org
    
    

    I have a program that works fine under stock rh9 (2.4.2-8) but has
    issues getting signaled under FedoraCore2 (2.6.5-1.358)
    using SETSIG to a Posix RT signal.

    The program does the standard:

      /* hook to process */
      if ( fcntl(fdcallback->fd, F_SETOWN, mon->handler_q.thread->pid) == -1 ) {
        aw_log(fdcallback->handler->logger, AW_ERROR_LOG_LEVEL,
           "cannot set owner on fd (%s)",
           strerror(errno));
      }/* end if */

      /* make async */
      if ( fcntl(fdcallback->fd, F_SETFL, (O_NONBLOCK | O_ASYNC) ) == -1 ) {
        aw_log(fdcallback->handler->logger, AW_ERROR_LOG_LEVEL,
           "cannot set async on fd (%s)",
           strerror(errno));
      }/* end if */

      /* hook to signal */
      if ( fcntl(fdcallback->fd, F_SETSIG, AW_SIG_FD) == -1 ) {
        aw_log(fdcallback->handler->logger, AW_ERROR_LOG_LEVEL,
           "cannot set signal on fd (%s)",
           strerror(errno));
      }/* end if */

    Under Fedora things work well for raw sockets (much lower latency than
    in 2.4!) but are inconsistent with udp or tcp sockets.

    In the udp case, I when I listen for multicast packets my app only
    receives them when I am running a tcpdump (bizarre!).

    In the tcp case, I don't get signaled if I do the F_SETSIG on more than
    1 fd.

    Any tips on tracking this down would be much appreciated.

    Thx

    Russ

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Colin Gibbs: "nfsd readahead"

    Relevant Pages