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