13a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/*
23a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * Copyright (C) 2008 The Android Open Source Project
33a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * All rights reserved.
43a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *
53a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * Redistribution and use in source and binary forms, with or without
63a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * modification, are permitted provided that the following conditions
73a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * are met:
83a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *  * Redistributions of source code must retain the above copyright
93a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *    notice, this list of conditions and the following disclaimer.
103a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *  * Redistributions in binary form must reproduce the above copyright
113a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *    notice, this list of conditions and the following disclaimer in
123a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *    the documentation and/or other materials provided with the
133a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *    distribution.
143a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount *
153a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
163a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
173a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
183a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
193a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
203a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
213a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
223a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
233a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
243a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
253a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
263a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount * SUCH DAMAGE.
273a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount */
283a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#ifndef _SIGNAL_H_
293a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#define _SIGNAL_H_
303a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
313a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <sys/cdefs.h>
323a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <limits.h>		/* For LONG_BIT */
333a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <string.h>		/* For memset() */
343a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <sys/types.h>
353a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <asm/signal.h>
363a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
373a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#define __ARCH_SI_UID_T __kernel_uid32_t
383a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#include <asm/siginfo.h>
393a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#undef __ARCH_SI_UID_T
403a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
413a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount__BEGIN_DECLS
423a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
433a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccounttypedef int sig_atomic_t;
443a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
453a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/* crepy NIG / _NSIG handling, just to be safe */
463a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#ifndef NSIG
473a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#  define NSIG  _NSIG
483a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#endif
493a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#ifndef _NSIG
503a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#  define _NSIG  NSIG
513a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#endif
523a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
533a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern const char * const sys_siglist[];
543a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
553a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ int sigismember(sigset_t *set, int signum)
563a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
573a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    unsigned long *local_set = (unsigned long *)set;
583a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    signum--;
593a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return (int)((local_set[signum/LONG_BIT] >> (signum%LONG_BIT)) & 1);
603a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
613a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
623a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
633a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ int sigaddset(sigset_t *set, int signum)
643a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
653a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    unsigned long *local_set = (unsigned long *)set;
663a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    signum--;
673a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    local_set[signum/LONG_BIT] |= 1UL << (signum%LONG_BIT);
683a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return 0;
693a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
703a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
713a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
723a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ int sigdelset(sigset_t *set, int signum)
733a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
743a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    unsigned long *local_set = (unsigned long *)set;
753a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    signum--;
763a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    local_set[signum/LONG_BIT] &= ~(1UL << (signum%LONG_BIT));
773a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return 0;
783a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
793a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
803a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
813a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ int sigemptyset(sigset_t *set)
823a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
833a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    memset(set, 0, sizeof *set);
843a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return 0;
853a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
863a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
873a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ int sigfillset(sigset_t *set)
883a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
893a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    memset(set, ~0, sizeof *set);
903a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return 0;
913a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
923a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
933a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
943a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/* compatibility types */
953a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccounttypedef void  (*sig_t)(int);
963a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccounttypedef sig_t sighandler_t;
973a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
983a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/* differentiater between sysv and bsd behaviour 8*/
993a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern __sighandler_t sysv_signal(int, __sighandler_t);
1003a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern __sighandler_t bsd_signal(int, __sighandler_t);
1013a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1023a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/* the default is bsd */
1033a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountstatic __inline__ __sighandler_t signal(int s, __sighandler_t f)
1043a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount{
1053a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount    return bsd_signal(s,f);
1063a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount}
1073a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1083a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount/* the syscall itself */
1093a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern __sighandler_t __signal(int, __sighandler_t, int);
1103a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1113a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int sigprocmask(int, const sigset_t *, sigset_t *);
1123a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int sigaction(int, const struct sigaction *, struct sigaction *);
1133a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1143a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int sigpending(sigset_t *);
1153a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int sigsuspend(const sigset_t *);
1163a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int sigwait(const sigset_t *set, int *sig);
1173a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int siginterrupt(int  sig, int  flag);
1183a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1193a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int raise(int);
1203a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccountextern int kill(pid_t, int);
1213a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1223a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1233a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount__END_DECLS
1243a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount
1253a5dffc441568676ce19c6d3154a8c8a17afa323android-build SharedAccount#endif /* _SIGNAL_H_ */
126