libwp: Tidy header includes
[openafs.git] / src / lwp / preempt.c
index 9b3a0bc..d9e9ec0 100644 (file)
@@ -1,27 +1,11 @@
-
-#ifndef lint
-#endif
-
 /*
-****************************************************************************
-*        Copyright IBM Corporation 1988, 1989 - All Rights Reserved        *
-*                                                                          *
-* Permission to use, copy, modify, and distribute this software and its    *
-* documentation for any purpose and without fee is hereby granted,         *
-* provided that the above copyright notice appear in all copies and        *
-* that both that copyright notice and this permission notice appear in     *
-* supporting documentation, and that the name of IBM not be used in        *
-* advertising or publicity pertaining to distribution of the software      *
-* without specific, written prior permission.                              *
-*                                                                          *
-* IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL *
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL IBM *
-* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY      *
-* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER  *
-* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING   *
-* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.    *
-****************************************************************************
-*/
+ * Copyright 2000, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ * This software has been released under the terms of the IBM Public
+ * License.  For details, see the LICENSE file in the top-level source
+ * directory or online at http://www.openafs.org/dl/license10.html
+ */
 
 /*******************************************************************\
 *                                                                  *
 *      Carnegie-Mellon University                                  *
 *                                                                  *
 \*******************************************************************/
+#include <afsconfig.h>
 #include <afs/param.h>
 
-#ifdef AFS_LINUX20_ENV
+#include <roken.h>
+
+
+#include "lwp.h"
+#include "preempt.h"
+
+#if defined(AFS_LINUX20_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
 int PRE_Block = 0;
+
+
+int
+PRE_InitPreempt(struct timeval *slice)
+{
+    return LWP_SUCCESS;
+}
+
+int
+PRE_EndPreempt(void)
+{
+    return LWP_SUCCESS;
+}
+
 #else
-#include <sys/time.h>
-#include <signal.h>
+#ifdef HAVE_UCONTEXT_H
 #include <ucontext.h>
-#include "lwp.h"
-#include "preempt.h"
+#endif
 
-#ifdef AFS_OSF_ENV
+#if defined(AFS_OSF_ENV) || defined(AFS_S390_LINUX20_ENV)
 int PRE_Block = 0;             /* used in lwp.c and process.s */
 #else
 char PRE_Block = 0;            /* used in lwp.c and process.s */
 #endif
 
-static void AlarmHandler(sig, st, scp)
-    int sig;
-    siginfo_t *st;
-    ucontext_t *scp;
-    {
-    if (PRE_Block == 0 && lwp_cpptr->level == 0)
-       {
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
+static void
+AlarmHandler(int sig, siginfo_t *st, ucontext_t *scp)
+#else
+static void
+AlarmHandler(int sig, int code, struct sigcontext *scp)
+#endif
+{
+    if (PRE_Block == 0 && lwp_cpptr->level == 0) {
        PRE_BeginCritical();
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
        sigprocmask(SIG_SETMASK, &scp->uc_sigmask, NULL);
+#else
+       sigsetmask(scp->sc_mask);
+#endif
        LWP_DispatchProcess();
        PRE_EndCritical();
-       }
-    
     }
 
-int PRE_InitPreempt(slice)
-    struct timeval *slice;
-    {
+}
+
+int
+PRE_InitPreempt(struct timeval *slice)
+{
     struct itimerval itv;
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
     struct sigaction action;
+#else
+    struct sigvec vec;
+#endif
+
+    if (lwp_cpptr == 0)
+       return (LWP_EINIT);
 
-    if (lwp_cpptr == 0) return (LWP_EINIT);
-    
-    if (slice == 0)
-       {
+    if (slice == 0) {
        itv.it_interval.tv_sec = itv.it_value.tv_sec = DEFAULTSLICE;
        itv.it_interval.tv_usec = itv.it_value.tv_usec = 0;
-       }
-    else
-       {
+    } else {
        itv.it_interval = itv.it_value = *slice;
-       }
+    }
 
-    bzero((char *)&action, sizeof(action));
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
+    memset(&action, 0, sizeof(action));
     action.sa_sigaction = AlarmHandler;
     action.sa_flags = SA_SIGINFO;
 
-    if ((sigaction(SIGALRM, &action, (struct sigaction *)0) == -1) ||
-       (setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0) == -1))
-       return(LWP_ESYSTEM);
+    if ((sigaction(SIGALRM, &action, NULL) == -1)
+       || (setitimer(ITIMER_REAL, &itv, NULL) == -1))
+       return (LWP_ESYSTEM);
+#else
+    memset(&vec, 0, sizeof(vec));
+    vec.sv_handler = AlarmHandler;
+    vec.sv_mask = vec.sv_onstack = 0;
 
-    return(LWP_SUCCESS);
-    }
+    if ((sigvec(SIGALRM, &vec, (struct sigvec *)0) == -1)
+       || (setitimer(ITIMER_REAL, &itv, (struct itimerval *)0) == -1))
+       return (LWP_ESYSTEM);
+#endif
 
-int PRE_EndPreempt()
-    {
+    return (LWP_SUCCESS);
+}
+
+int
+PRE_EndPreempt()
+{
     struct itimerval itv;
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
     struct sigaction action;
+#else
+    struct sigvec vec;
+#endif
+
+    if (lwp_cpptr == 0)
+       return (LWP_EINIT);
 
-    if (lwp_cpptr == 0) return (LWP_EINIT);
-    
     itv.it_value.tv_sec = itv.it_value.tv_usec = 0;
 
-    bzero((char *)&action, sizeof(action));
+#if HAVE_SIGACTION && defined(SA_SIGINFO)
+    memset(&action, 0, sizeof(action));
     action.sa_handler = SIG_DFL;
 
-    if ((setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0) == -1) ||
-       (sigaction(SIGALRM, &action, (struct sigaction *)0) == -1))
-       return(LWP_ESYSTEM);
+    if ((setitimer(ITIMER_REAL, &itv, NULL) == -1)
+       || (sigaction(SIGALRM, &action, NULL) == -1))
+       return (LWP_ESYSTEM);
 
-    return(LWP_SUCCESS);
-    }
+#else
+    memset(&vec, 0, sizeof(vec));
+    vec.sv_handler = SIG_DFL;
+    vec.sv_mask = vec.sv_onstack = 0;
+
+    if ((setitimer(ITIMER_REAL, &itv, (struct itimerval *)0) == -1)
+       || (sigvec(SIGALRM, &vec, (struct sigvec *)0) == -1))
+       return (LWP_ESYSTEM);
+#endif
+    return (LWP_SUCCESS);
+}
 
-#endif /* AFS_I386_LINUX20_ENV */
+#endif /* AFS_LINUX20_ENV */