Fix lwevent_signalfd(): it should call sigprocmask()
This commit is contained in:
		
							parent
							
								
									7f76359388
								
							
						
					
					
						commit
						397939b4d5
					
				| 
						 | 
					@ -7,11 +7,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SIZEOF_SIG (_NSIG / 8)
 | 
				
			||||||
 | 
					#define SIZEOF_SIGSET (SIZEOF_SIG > sizeof(sigset_t) ? sizeof(sigset_t): SIZEOF_SIG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int signalfd(int fd, const sigset_t* mask)
 | 
					int signalfd(int fd, const sigset_t* mask)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    size_t sz;
 | 
					    return syscall(__NR_signalfd, fd, mask, SIZEOF_SIGSET);
 | 
				
			||||||
    sz = sizeof(sigset_t);
 | 
					 | 
				
			||||||
    return syscall(__NR_signalfd, fd, mask, sz);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,6 +76,8 @@ struct lwevent_signal* lwevent_signalfd(const sigset_t* mask, lwevent_signalcb c
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TEMP_FAILURE_RETRY( sigprocmask(SIG_BLOCK, &si->mask, 0) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lwevent_set_user(si->ev, si);
 | 
					    lwevent_set_user(si->ev, si);
 | 
				
			||||||
    return si;
 | 
					    return si;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue