summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/sigaddset.c
blob: 1c2632e673b2ddbe9dbb27ca6ea06c92218e00fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <signal.h>
#include <errno.h>

#define __sigmask(sig)		( ((unsigned long)1) << (((sig)-1) % (8*sizeof(unsigned long))) )
#define __sigword(sig)		( ((sig)-1) / (8*sizeof(unsigned long)) )

int sigaddset(sigset_t *set, int signo) {
  if ((signo<1)||(signo>SIGRTMAX)) {
    (*__errno_location())=EINVAL;
    return -1;
  } else {
    unsigned long __mask = __sigmask (signo);
    unsigned long __word = __sigword (signo);
    set->sig[__word]|=__mask;
    return 0;
  }
}