~xnox/ubuntu/trusty/gcc-arm-linux-androideabi/dima

« back to all changes in this revision

Viewing changes to android/bionic/libc/include/signal.h

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-07-05 10:12:24 UTC
  • Revision ID: package-import@ubuntu.com-20130705101224-6qo3e8jbz8p31aa1
Tags: upstream-0.20130705.1
ImportĀ upstreamĀ versionĀ 0.20130705.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2008 The Android Open Source Project
 
3
 * All rights reserved.
 
4
 *
 
5
 * Redistribution and use in source and binary forms, with or without
 
6
 * modification, are permitted provided that the following conditions
 
7
 * are met:
 
8
 *  * Redistributions of source code must retain the above copyright
 
9
 *    notice, this list of conditions and the following disclaimer.
 
10
 *  * Redistributions in binary form must reproduce the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer in
 
12
 *    the documentation and/or other materials provided with the
 
13
 *    distribution.
 
14
 *
 
15
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
16
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
17
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 
18
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 
19
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 
20
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 
21
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 
22
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 
23
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 
24
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 
25
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
26
 * SUCH DAMAGE.
 
27
 */
 
28
#ifndef _SIGNAL_H_
 
29
#define _SIGNAL_H_
 
30
 
 
31
#include <sys/cdefs.h>
 
32
#include <limits.h>             /* For LONG_BIT */
 
33
#include <string.h>             /* For memset() */
 
34
#include <sys/types.h>
 
35
#include <asm/signal.h>
 
36
 
 
37
#define __ARCH_SI_UID_T __kernel_uid32_t
 
38
#include <asm/siginfo.h>
 
39
#undef __ARCH_SI_UID_T
 
40
 
 
41
__BEGIN_DECLS
 
42
 
 
43
typedef int sig_atomic_t;
 
44
 
 
45
/* _NSIG is used by the SIGRTMAX definition under <asm/signal.h>, however
 
46
 * its definition is part of a #if __KERNEL__ .. #endif block in the original
 
47
 * kernel headers and is thus not part of our cleaned-up versions.
 
48
 *
 
49
 * Looking at the current kernel sources, it is defined as 64 for all
 
50
 * architectures except for the 'mips' one which set it to 128.
 
51
 */
 
52
#ifndef _NSIG
 
53
#  define _NSIG  64
 
54
#endif
 
55
 
 
56
extern const char * const sys_siglist[];
 
57
extern const char * const sys_signame[];
 
58
 
 
59
static __inline__ int sigismember(sigset_t *set, int signum)
 
60
{
 
61
    unsigned long *local_set = (unsigned long *)set;
 
62
    signum--;
 
63
    return (int)((local_set[signum/LONG_BIT] >> (signum%LONG_BIT)) & 1);
 
64
}
 
65
 
 
66
 
 
67
static __inline__ int sigaddset(sigset_t *set, int signum)
 
68
{
 
69
    unsigned long *local_set = (unsigned long *)set;
 
70
    signum--;
 
71
    local_set[signum/LONG_BIT] |= 1UL << (signum%LONG_BIT);
 
72
    return 0;
 
73
}
 
74
 
 
75
 
 
76
static __inline__ int sigdelset(sigset_t *set, int signum)
 
77
{
 
78
    unsigned long *local_set = (unsigned long *)set;
 
79
    signum--;
 
80
    local_set[signum/LONG_BIT] &= ~(1UL << (signum%LONG_BIT));
 
81
    return 0;
 
82
}
 
83
 
 
84
 
 
85
static __inline__ int sigemptyset(sigset_t *set)
 
86
{
 
87
    memset(set, 0, sizeof *set);
 
88
    return 0;
 
89
}
 
90
 
 
91
static __inline__ int sigfillset(sigset_t *set)
 
92
{
 
93
    memset(set, ~0, sizeof *set);
 
94
    return 0;
 
95
}
 
96
 
 
97
 
 
98
/* compatibility types */
 
99
typedef void  (*sig_t)(int);
 
100
typedef sig_t sighandler_t;
 
101
 
 
102
/* differentiater between sysv and bsd behaviour 8*/
 
103
extern __sighandler_t sysv_signal(int, __sighandler_t);
 
104
extern __sighandler_t bsd_signal(int, __sighandler_t);
 
105
 
 
106
/* the default is bsd */
 
107
static __inline__ __sighandler_t signal(int s, __sighandler_t f)
 
108
{
 
109
    return bsd_signal(s,f);
 
110
}
 
111
 
 
112
/* the syscall itself */
 
113
extern __sighandler_t __signal(int, __sighandler_t, int);
 
114
 
 
115
extern int sigprocmask(int, const sigset_t *, sigset_t *);
 
116
extern int sigaction(int, const struct sigaction *, struct sigaction *);
 
117
 
 
118
extern int sigpending(sigset_t *);
 
119
extern int sigsuspend(const sigset_t *);
 
120
extern int sigwait(const sigset_t *set, int *sig);
 
121
extern int siginterrupt(int  sig, int  flag);
 
122
 
 
123
extern int raise(int);
 
124
extern int kill(pid_t, int);
 
125
extern int killpg(int pgrp, int sig);
 
126
extern int sigaltstack(const stack_t *ss, stack_t *oss);
 
127
 
 
128
 
 
129
__END_DECLS
 
130
 
 
131
#endif /* _SIGNAL_H_ */