Example #1
0
void *	
cpu_sendsig_getframe(struct lwp *l, int signo, bool *onstack)
{
	struct trapframe * const tf = l->l_md.md_utf;
	struct proc * const p = l->l_proc;
 
	/* Do we need to jump onto the signal stack? */
	*onstack = (l->l_sigstk.ss_flags & (SS_DISABLE | SS_ONSTACK)) == 0
	    && (SIGACTION(p, signo).sa_flags & SA_ONSTACK) != 0;
	if (*onstack)
		return (char *)stack_align((intptr_t)l->l_sigstk.ss_sp + l->l_sigstk.ss_size);
	return (void *)(intptr_t)stack_align(tf->tf_sp);
}
int
main (void)
{
  standard ();
  stack_align ();
  gdb1253 ();
  gdb1718 ();
  gdb1338 ();
  jump_at_beginning ();
  return 0;
}
sc_cor*
sc_cor_pkg_qt::create( std::size_t stack_size, sc_cor_fn* fn, void* arg )
{
    sc_cor_qt* cor = new sc_cor_qt();
    cor->m_pkg = this;
    cor->m_stack_size = stack_size;
    cor->m_stack = new char[cor->m_stack_size];
    void* sto = stack_align( cor->m_stack, QUICKTHREADS_STKALIGN, 
    	&cor->m_stack_size );
    cor->m_sp = QUICKTHREADS_SP(sto, cor->m_stack_size - QUICKTHREADS_STKALIGN);
    cor->m_sp = QUICKTHREADS_ARGS( cor->m_sp, arg, cor, (qt_userf_t*) fn,
			 sc_cor_qt_wrapper );
    return cor;
}