1185029Spjd/*- 2185029Spjd * Copyright (c) 2008 Pawel Jakub Dawidek <pjd@FreeBSD.org> 3185029Spjd * All rights reserved. 4185029Spjd * 5185029Spjd * Redistribution and use in source and binary forms, with or without 6185029Spjd * modification, are permitted provided that the following conditions 7185029Spjd * are met: 8185029Spjd * 1. Redistributions of source code must retain the above copyright 9185029Spjd * notice, this list of conditions and the following disclaimer. 10185029Spjd * 2. Redistributions in binary form must reproduce the above copyright 11185029Spjd * notice, this list of conditions and the following disclaimer in the 12185029Spjd * documentation and/or other materials provided with the distribution. 13185029Spjd * 14185029Spjd * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 15185029Spjd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16185029Spjd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17185029Spjd * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 18185029Spjd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19185029Spjd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20185029Spjd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21185029Spjd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22185029Spjd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23185029Spjd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24185029Spjd * SUCH DAMAGE. 25185029Spjd * 26185029Spjd * $FreeBSD$ 27185029Spjd */ 28185029Spjd 29185029Spjd#ifndef _OPENSOLARIS_SYS_SIG_H_ 30185029Spjd#define _OPENSOLARIS_SYS_SIG_H_ 31185029Spjd 32185029Spjd#ifdef _KERNEL 33185029Spjd 34185029Spjd#include <sys/param.h> 35185029Spjd#include <sys/lock.h> 36185029Spjd#include <sys/mutex.h> 37185029Spjd#include <sys/proc.h> 38185029Spjd#include <sys/signalvar.h> 39185029Spjd#include <sys/debug.h> 40185029Spjd 41185029Spjd#define FORREAL 0 42185029Spjd#define JUSTLOOKING 1 43185029Spjd 44185029Spjdstatic __inline int 45185029Spjdissig(int why) 46185029Spjd{ 47185029Spjd struct thread *td = curthread; 48185029Spjd struct proc *p; 49185029Spjd int sig; 50185029Spjd 51185029Spjd ASSERT(why == FORREAL || why == JUSTLOOKING); 52185029Spjd if (SIGPENDING(td)) { 53185029Spjd if (why == JUSTLOOKING) 54185029Spjd return (1); 55185029Spjd p = td->td_proc; 56185029Spjd PROC_LOCK(p); 57185029Spjd mtx_lock(&p->p_sigacts->ps_mtx); 58248470Sjhb sig = cursig(td); 59185029Spjd mtx_unlock(&p->p_sigacts->ps_mtx); 60185029Spjd PROC_UNLOCK(p); 61185029Spjd if (sig != 0) 62185029Spjd return (1); 63185029Spjd } 64185029Spjd return (0); 65185029Spjd} 66185029Spjd 67185029Spjd#endif /* _KERNEL */ 68185029Spjd 69185029Spjd#endif /* _OPENSOLARIS_SYS_SIG_H_ */ 70