SIGRETURN(2) UNIX Programmer's Manual SIGRETURN(2) NAME sigreturn - return from signal SYNOPSIS #include struct sigcontext { int sc_onstack; long sc_mask; int sc_sp; int sc_fp; int sc_ap; int sc_pc; int sc_ps; }; sigreturn(scp); struct sigcontext *scp; DESCRIPTION _S_i_g_r_e_t_u_r_n allows users to atomically unmask, switch stacks, and return from a signal context. The processes signal mask and stack status are restored from the context. The system call does not return; the users stack pointer, frame pointer, argument pointer, and processor status longword are restored from the context. Execution resumes at the speci- fied pc. This system call is used by the trampoline code, and _l_o_n_g_j_m_p(3) when returning from a signal to the previ- ously executing program. NOTES This system call is not available in 4.2BSD, hence it should not be used if backward compatibility is needed. The definition of the _s_i_g_c_o_n_t_e_x_t structure is machine depen- dent (the structure cited above is that for a VAX running 4.3BSD); no program should depend on its internal structure. _S_e_t_j_m_p(3) may be used to build sigcontext structures in a machine independent manner. RETURN VALUE If successful, the system call does not return. Otherwise, a value of -1 is returned and _e_r_r_n_o is set to indicate the error. ERRORS _S_i_g_r_e_t_u_r_n will fail and the process context will remain unchanged if one of the following occurs. [EFAULT] _S_c_p points to memory that is not a valid part of the process address space. Printed 11/26/99 June 30, 1985 1 SIGRETURN(2) UNIX Programmer's Manual SIGRETURN(2) [EINVAL] The process status longword is invalid or would improperly raise the privilege level of the process. SEE ALSO sigvec(2), setjmp(3) NOTES (PDP-11) On the PDP-11 the field _s_c__a_p (argument pointer) does not exist and the field _s_c__f_p (frame pointer) is the PDP-11 register _r_5. Additionally, three new fields _s_c__r_0, _s_c__r_1 and _s_c__o_v_n_o are present on the PDP-11 which hold register values r0 and r1 and the text overlay number to restore (see _l_d(1)). struct sigcontext { int sc_onstack; /* sigstack state to restore */ long sc_mask; /* signal mask to restore */ int sc_sp; /* sp to restore */ int sc_fp; /* fp to restore */ int sc_r1; /* r1 to restore */ int sc_r0; /* r0 to restore */ int sc_pc; /* pc to restore */ int sc_ps; /* psl to restore */ int sc_ovno /* overlay to restore */ }; Printed 11/26/99 June 30, 1985 2