Home | History | Annotate | Download | only in lapi
      1 /*
      2  * Copyright (c) 2018 Cyril Hrubis <chrubis (at) suse.cz>
      3  */
      4 
      5 #ifndef SAFE_RT_SIGNAL_H__
      6 #define SAFE_RT_SIGNAL_H__
      7 
      8 #include <signal.h>
      9 #include "lapi/rt_sigaction.h"
     10 
     11 static inline int safe_rt_sigaction(const char *file, const int lineno,
     12                                     int signum, const struct sigaction *act,
     13                                     struct sigaction *oact, size_t sigsetsize)
     14 {
     15 	int ret;
     16 
     17 	ret = ltp_rt_sigaction(signum, act, oact, sigsetsize);
     18 	if (ret < 0) {
     19 		tst_brk(TBROK | TERRNO,
     20 			"%s:%d: ltp_rt_sigaction(%i, %p, %p, %zu) failed",
     21 			file, lineno, signum, act, oact, sigsetsize);
     22 	}
     23 
     24 	return ret;
     25 }
     26 
     27 #define SAFE_RT_SIGACTION(signum, act, oldact, sigsetsize) \
     28 	safe_rt_sigaction(__FILE__, __LINE__, signum, act, oldact, sigsetsize)
     29 
     30 
     31 static inline int safe_rt_sigprocmask(const char *file, const int lineno,
     32                                       int how, const sigset_t *set,
     33                                       sigset_t *oldset, size_t sigsetsize)
     34 {
     35 	int ret;
     36 
     37 	ret = tst_syscall(__NR_rt_sigprocmask, how, set, oldset, sigsetsize);
     38 	if (ret < 0) {
     39 		tst_brk(TBROK | TERRNO,
     40 		        "%s:%d: rt_sigprocmask(%i, %p, %p, %zu) failed",
     41 			file, lineno, how, set, oldset, sigsetsize);
     42 	}
     43 
     44 	return ret;
     45 }
     46 
     47 #define SAFE_RT_SIGPROCMASK(how, set, oldset, sigsetsize) \
     48 	safe_rt_sigprocmask(__FILE__, __LINE__, how, set, oldset, sigsetsize)
     49 
     50 #endif /* SAFE_RT_SIGNAL_H__ */
     51