OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [uclinux/] [uC-libc/] [sysdeps/] [sigstmsk.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
/* Copyright (C) 1993 Free Software Foundation, Inc.
2
This file is part of the GNU C Library.
3
 
4
The GNU C Library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public License as
6
published by the Free Software Foundation; either version 2 of the
7
License, or (at your option) any later version.
8
 
9
The GNU C Library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
Library General Public License for more details.
13
 
14
You should have received a copy of the GNU Library General Public
15
License along with the GNU C Library; see the file COPYING.LIB.  If
16
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17
Cambridge, MA 02139, USA.  */
18
 
19
#include <ansidecl.h>
20
#include <errno.h>
21
#include <signal.h>
22
 
23
/* Set the mask of blocked signals to MASK, returning the old mask.  */
24
int sigsetmask (int mask)
25
{
26
  register int sig;
27
  sigset_t set, oset;
28
 
29
  if (sizeof (mask) == sizeof (set))
30
    set = mask;
31
  else
32
    {
33
      if (sigemptyset(&set) < 0)
34
        return -1;
35
 
36
      for (sig = 1; sig < NSIG; ++sig)
37
        if ((mask & sigmask(sig)) &&
38
            sigaddset(&set, sig) < 0)
39
          return -1;
40
    }
41
 
42
  if (sigprocmask(SIG_SETMASK, &set, &oset) < 0)
43
    return -1;
44
 
45
  if (sizeof (mask) == sizeof (oset))
46
    mask = oset;
47
  else
48
    {
49
      mask = 0;
50
      for (sig = 1; sig < NSIG; ++sig)
51
        if (sigismember(&oset, sig) == 1)
52
          mask |= sigmask(sig);
53
    }
54
 
55
  return mask;
56
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.