rbb         99/06/30 12:46:00

  Modified:    apr      Makefile.in configure.in
               apr/include apr_config.h.in apr_win.h
               apr/misc/unix Makefile.in start.c
               apr/signal/win32 signal.c signal.def
               apr/test Makefile.in testsig.c
               include  apr_general.h
  Added:       apr/signal/unix Makefile.in signal.c
  Log:
  First pass at signals on Unix.  This only works if you have pthreads, but
  making it work everywhere is trivial.
  
  Revision  Changes    Path
  1.11      +1 -1      apache-apr/apr/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/Makefile.in,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Makefile.in       1999/06/16 19:13:45     1.10
  +++ Makefile.in       1999/06/30 19:45:30     1.11
  @@ -24,7 +24,7 @@
   #
   MODULES=lib file_io network_io threadproc locks misc time
   SUBDIRS=lib file_io/@OSDIR@ network_io/@OSDIR@ threadproc/@OSDIR@ \
  -        locks/@OSDIR@ misc/@OSDIR@ time/@OSDIR@
  +        locks/@OSDIR@ misc/@OSDIR@ time/@OSDIR@ signal/@OSDIR@
   
   #
   # Rules for turning inputs into outputs
  
  
  
  1.23      +3 -1      apache-apr/apr/configure.in
  
  Index: configure.in
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/configure.in,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- configure.in      1999/06/17 15:05:17     1.22
  +++ configure.in      1999/06/30 19:45:31     1.23
  @@ -155,6 +155,8 @@
   AC_CHECK_HEADERS(sys/types.h)
   AC_CHECK_HEADERS(sys/wait.h)
   
  +AC_CHECK_HEADERS(pthread.h)
  +
   dnl Checks for typedefs, structures, and compiler characteristics.
   AC_C_CONST
   AC_TYPE_SIZE_T
  @@ -177,4 +179,4 @@
   AC_OUTPUT(Makefile lib/Makefile file_io/$OSDIR/Makefile 
             network_io/$OSDIR/Makefile threadproc/$OSDIR/Makefile 
             locks/$OSDIR/Makefile misc/$OSDIR/Makefile 
  -          time/$OSDIR/Makefile test/Makefile)
  +          time/$OSDIR/Makefile signal/$OSDIR/Makefile test/Makefile)
  
  
  
  1.10      +2 -0      apache-apr/apr/include/apr_config.h.in
  
  Index: apr_config.h.in
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/include/apr_config.h.in,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- apr_config.h.in   1999/06/21 18:28:10     1.9
  +++ apr_config.h.in   1999/06/30 19:45:35     1.10
  @@ -66,6 +66,8 @@
   #undef HAVE_SYS_TYPES_H
   #undef HAVE_SYS_WAIT_H
   
  +#undef HAVE_PTHREAD_H
  +
   /*
    * List of features/library functions available, which we'll use if
    * they're compatible.
  
  
  
  1.6       +0 -1      apache-apr/apr/include/apr_win.h
  
  Index: apr_win.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/include/apr_win.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- apr_win.h 1999/06/29 15:52:07     1.5
  +++ apr_win.h 1999/06/30 19:45:36     1.6
  @@ -100,7 +100,6 @@
   typedef _off_t      off_t;
   typedef int         pid_t;
   typedef void (Sigfunc)(int);
  -typedef int ap_signum_t;
   
   #define __attribute__(__x) 
   #define APR_INLINE 
  
  
  
  1.5       +3 -3      apache-apr/apr/misc/unix/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/misc/unix/Makefile.in,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Makefile.in       1999/06/15 19:43:39     1.4
  +++ Makefile.in       1999/06/30 19:45:39     1.5
  @@ -52,6 +52,6 @@
   
   # DO NOT REMOVE
   start.o: start.c ../../../include/apr_general.h \
  - ../../../include/apr_errno.h ../../include/apr_pools.h \
  - ../../include/apr_lib.h ../../include/apr_config.h \
  - ../../include/hsregex.h
  + $(INCDIR)/apr_config.h ../../../include/apr_errno.h \
  + $(INCDIR)/apr_pools.h $(INCDIR)/apr_lib.h \
  + $(INCDIR)/hsregex.h misc.h ../../../include/apr_file_io.h
  
  
  
  1.8       +11 -0     apache-apr/apr/misc/unix/start.c
  
  Index: start.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/misc/unix/start.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- start.c   1999/06/21 17:45:55     1.7
  +++ start.c   1999/06/30 19:45:39     1.8
  @@ -57,6 +57,7 @@
   #include "apr_errno.h"
   #include "apr_pools.h"
   #include "misc.h"
  +#include <pthread.h>
   #include <errno.h>
   #include <string.h>
   
  @@ -145,3 +146,13 @@
       return APR_ENOCONT;
   }
   
  +#ifdef HAVE_PTHREAD_H 
  +ap_status_t ap_initialize(void)
  +{
  +    sigset_t sigset;
  +
  +    sigfillset(&sigset);
  +    pthread_sigmask(SIG_BLOCK, &sigset, NULL);
  +}
  +#endif
  + 
  
  
  
  1.1                  apache-apr/apr/signal/unix/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  #CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
  #LIBS=$(EXTRA_LIBS) $(LIBS1)
  #INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
  #LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
  
  [EMAIL PROTECTED]@
  [EMAIL PROTECTED]@
  [EMAIL PROTECTED]@
  [EMAIL PROTECTED]@ @CFLAGS@ @OPTIM@
  [EMAIL PROTECTED]@
  [EMAIL PROTECTED]@ $(LDLIBS)
  INCDIR=../../include
  INCDIR1=../../../include
  INCDIR2=../../file_io/unix
  INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I.
  
  LIB=../libsig.a
  
  OBJS=signal.o \
  
  .c.o:
        $(CC) $(CFLAGS) -c $(INCLUDES) $<
  
  all: $(LIB)
  
  clean:
        $(RM) -f *.o *.a *.so
  
  distclean: clean
        -$(RM) -f Makefile
  
  $(OBJS): Makefile
  
  $(LIB): $(OBJS)
        $(RM) -f $@
        $(AR) cr $@ $(OBJS)
        $(RANLIB) $@
  
  #
  # We really don't expect end users to use this rule.  It works only with
  # gcc, and rebuilds Makefile.tmpl.  You have to re-run Configure after
  # using it.
  #
  depend:
        cp Makefile.in Makefile.in.bak \
            && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.in > Makefile.new \
            && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \
            && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \
                   -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \
                > Makefile.in \
            && rm Makefile.new
  
  # DO NOT REMOVE
  
  
  
  1.1                  apache-apr/apr/signal/unix/signal.c
  
  Index: signal.c
  ===================================================================
  /* ====================================================================
   * Copyright (c) 1999 The Apache Group.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. All advertising materials mentioning features or use of this
   *    software must display the following acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * 4. The names "Apache Server" and "Apache Group" must not be used to
   *    endorse or promote products derived from this software without
   *    prior written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 6. Redistributions of any form whatsoever must retain the following
   *    acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Group.
   * For more information on the Apache Group and the Apache HTTP server
   * project, please see <http://www.apache.org/>.
   *
   */
  
  #include "apr_general.h"
  #include <string.h>
  
  #ifdef HAVE_PTHREAD_H
  
  ap_status_t ap_create_signal(ap_context_t *cont, ap_signum_t signum)
  {
      return APR_SUCCESS;
  }
  
  /* Signals can only be sent to the whole process group because I havne't 
   * figured out how to send to individual children on Winodws yet.  When
   * that is solved, this will change here.
   */
  ap_status_t ap_send_signal(ap_context_t *cont, ap_signum_t signum)
  {
      killpg(0, signum);
      return APR_SUCCESS;
  }
  
  ap_setup_signal(ap_context_t *cont, ap_signum_t signum, Sigfunc *func)
  {
      sigset_t newset;
  
      sigemptyset(&newset);
      sigaddset(&newset, signum);
  
      signal(signum, func);
  
      pthread_sigmask(SIG_UNBLOCK, &newset, NULL);
  
      return APR_SUCCESS;
  }
  #endif
  
  
  
  1.2       +2 -2      apache-apr/apr/signal/win32/signal.c
  
  Index: signal.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/signal/win32/signal.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- signal.c  1999/06/29 15:52:10     1.1
  +++ signal.c  1999/06/30 19:45:44     1.2
  @@ -89,7 +89,7 @@
       return APR_SUCCESS;
   }
   
  -ap_status_t ap_signal(ap_context_t *cont, ap_signum_t signum)
  +ap_status_t ap_send_signal(ap_context_t *cont, ap_signum_t signum)
   {
       HANDLE event;
       char *EventName;
  @@ -179,4 +179,4 @@
   int thread_ready(void)
   {
       return ready;
  -}
  \ No newline at end of file
  +}
  
  
  
  1.2       +1 -1      apache-apr/apr/signal/win32/signal.def
  
  Index: signal.def
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/signal/win32/signal.def,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- signal.def        1999/06/29 15:52:10     1.1
  +++ signal.def        1999/06/30 19:45:45     1.2
  @@ -8,5 +8,5 @@
        ap_create_signal   @1
       ap_setup_signal   @2
       SignalHandling   @3
  -    ap_signal    @4
  +    ap_send_signal    @4
       thread_ready   @5
  
  
  
  1.11      +8 -3      apache-apr/apr/test/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/Makefile.in,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Makefile.in       1999/06/15 19:43:46     1.10
  +++ Makefile.in       1999/06/30 19:45:50     1.11
  @@ -8,7 +8,7 @@
   [EMAIL PROTECTED]@
   [EMAIL PROTECTED]@
   [EMAIL PROTECTED]@ @CFLAGS@ @OPTIM@ 
  -LDLIBS=-L../network_io -lnetwork -L../threadproc -lthreadproc -L../file_io 
-lfile -L../misc -lmisc -L../lib -lapr -L../time -ltime -L../locks -llock 
@LDLIBS@ 
  +LDLIBS=-L../network_io -lnetwork -L../threadproc -lthreadproc -L../file_io 
-lfile -L../misc -lmisc -L../lib -lapr -L../time -ltime -L../locks -llock 
-L../signal -lsig @LDLIBS@ 
   [EMAIL PROTECTED]@ $(LDLIBS)
   INCDIR=../include
   INCDIR1=../../include
  @@ -19,14 +19,16 @@
        [EMAIL PROTECTED]@ \
        [EMAIL PROTECTED]@ \
        [EMAIL PROTECTED]@ \
  -     [EMAIL PROTECTED]@
  +     [EMAIL PROTECTED]@ \
  +     [EMAIL PROTECTED]@
   
   OBJS= testfile.o \
        testproc.o \
        testsock.o \
        testthread.o \
        ab_apr.o \
  -     testtime.o
  +     testtime.o \
  +     testsig.o
   
   .c.o:
        $(CC) -c $(CFLAGS) $(INCLUDES) $<
  @@ -52,6 +54,9 @@
   
   [EMAIL PROTECTED]@: testtime.o
        $(CC) $(CFLAGS) testtime.o -o [EMAIL PROTECTED]@ $(LDFLAGS)
  +
  [EMAIL PROTECTED]@: testsig.o
  +     $(CC) $(CFLAGS) testsig.o -o [EMAIL PROTECTED]@ $(LDFLAGS) 
   
   clean:
        $(RM) -f *.o *.a *.so $(TARGETS)
  
  
  
  1.2       +4 -6      apache-apr/apr/test/testsig.c
  
  Index: testsig.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testsig.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- testsig.c 1999/06/29 15:52:11     1.1
  +++ testsig.c 1999/06/30 19:45:51     1.2
  @@ -86,13 +86,12 @@
   
       if (argc > 1) {
   
  -
           ap_setup_signal(context, APR_SIGHUP, hup_handler);
   
           while(time_to_die == 0) {
               sleep(1);
           }
  -        return (1);
  +        return(1);
       }
   
       fprintf(stdout, "Creating new signal.......");
  @@ -112,15 +111,14 @@
       args[1] = ap_pstrdup(context, "-X");
       args[2] = NULL;
       
  -    if (ap_create_process(context, "../testproc", args, NULL, attr, 
&newproc) != APR_SUCCESS) {
  +    if (ap_create_process(context, "./testsig", args, NULL, attr, &newproc) 
!= APR_SUCCESS) {
           fprintf(stderr, "Could not create the new process\n");
           exit(-1);
       }
   
  -/*    sleep(100);  /* Just wait a bit to let the child catch up.  Not a 
great idea, but
  -                  * this is just a test program, so it's okay in my book.  
:) */
       fprintf(stdout, "Sending the signal.......");
  -    ap_signal(context, APR_SIGHUP);    
  +    fflush(stdout);
  +    ap_send_signal(context, APR_SIGHUP);    
   
       ap_wait_proc(newproc, APR_WAIT);
   
  
  
  
  1.20      +2 -1      apache-apr/include/apr_general.h
  
  Index: apr_general.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_general.h,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- apr_general.h     1999/06/29 15:52:14     1.19
  +++ apr_general.h     1999/06/30 19:45:58     1.20
  @@ -108,6 +108,7 @@
   #endif
   
   typedef struct context_t  ap_context_t;
  +typedef int               ap_signum_t;
   
   #if SIGHUP
   #define APR_SIGHUP SIGHUP
  @@ -210,7 +211,7 @@
   ap_status_t ap_initialize(void);
   
   ap_status_t ap_create_signal(ap_context_t *, ap_signum_t);
  -ap_status_t ap_signal(ap_context_t *, ap_signum_t);
  +ap_status_t ap_send_signal(ap_context_t *, ap_signum_t);
   ap_status_t ap_setup_signal(ap_context_t *, ap_signum_t, Sigfunc *);
   
   #ifdef __cplusplus
  
  
  

Reply via email to