signotify.c revision 7fabbdb7f3578a397de372ae3fac157f486cc4bc
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include <sys/sysmacros.h>
#include <sys/schedctl.h>
/*ARGSUSED*/
static int
{
#ifdef _SYSCALL32_IMPL
int ret;
if (datamodel == DATAMODEL_NATIVE) {
#endif
#ifdef _SYSCALL32_IMPL
} else {
return (ret);
}
return (0);
#endif
}
/*
* To find secured 64 bit id for signotify() call
* This depends upon as_getmemid() which returns
*/
static u_longlong_t
{
u_longlong_t snid = 0;
}
return (snid);
}
int
{
proc_t *p;
switch (cmd) {
case SN_PROC:
/* get snid for the given user address of signotifyid_t */
mutex_enter(&p->p_lock);
mutex_exit(&p->p_lock);
}
}
mutex_exit(&p->p_lock);
}
}
/* The si_code value must indicate the signal will be queued */
/* Allocate signotify pool first time */
/* hang the pool head on proc */
} else {
/* another lwp allocated the pool, free ours */
}
} else {
}
}
/* fill the signotifyq_t fields */
/* complete the signotify_id_t fields */
break;
case SN_CANCEL:
case SN_SEND:
}
mutex_enter(&p->p_lock);
mutex_exit(&p->p_lock);
}
mutex_exit(&p->p_lock);
}
mutex_exit(&p->p_lock);
}
/* cmd == SN_CANCEL or signo == 0 (SIGEV_NONE) */
mutex_exit(&p->p_lock);
break;
default :
}
return (0);
}
int
{
int error;
goto bad;
}
} else {
goto bad;
}
goto bad;
}
}
goto bad;
}
mutex_enter(&p->p_lock);
mutex_exit(&p->p_lock);
t->t_sig_check = 1;
goto bad;
}
mutex_exit(&p->p_lock);
t->t_sig_check = 1;
return (0);
bad:
}