27 lines
866 B
C
27 lines
866 B
C
#ifndef COSMOPOLITAN_LIBC_RUNTIME_INTERRUPTIBLECALL_H_
|
|
#define COSMOPOLITAN_LIBC_RUNTIME_INTERRUPTIBLECALL_H_
|
|
#include "libc/runtime/runtime.h"
|
|
#include "libc/calls/struct/sigaction.h"
|
|
#include "libc/calls/calls.h"
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
struct InterruptibleCall {
|
|
struct InterruptibleCall *prev;
|
|
intptr_t returnval;
|
|
int sig;
|
|
int flags;
|
|
jmp_buf jb;
|
|
struct sigaction sa_new;
|
|
struct sigaction sa_old;
|
|
};
|
|
|
|
intptr_t interruptiblecall(struct InterruptibleCall *state,
|
|
intptr_t callback(intptr_t p1, intptr_t p2,
|
|
intptr_t p3, intptr_t p4),
|
|
intptr_t p1, intptr_t p2, intptr_t p3, intptr_t p4);
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_RUNTIME_INTERRUPTIBLECALL_H_ */
|