summaryrefslogtreecommitdiff
path: root/src/setjmp/sigsetjmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/setjmp/sigsetjmp.c')
-rw-r--r--src/setjmp/sigsetjmp.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/setjmp/sigsetjmp.c b/src/setjmp/sigsetjmp.c
index 37c9727f..46eebeba 100644
--- a/src/setjmp/sigsetjmp.c
+++ b/src/setjmp/sigsetjmp.c
@@ -1,10 +1,32 @@
#include <setjmp.h>
+#include "signal.h"
+
+/** save program state with signal mask **/
int sigsetjmp(sigjmp_buf env, int savemask)
{
- (void)env; (void)savemask;
- return 0;
+ if (savemask) {
+ /* save mask to env */
+ }
+ return setjmp(env);
}
+
+/***
+saves the current state of the calling environment in the
+TYPEDEF(sigjmp_buf) ARGUMENT(env). If ARGUMENT(savemask) is nonzero, the saved
+environment includes the signal mask of the current thread.
+***/
+
/*
+CONSTRAINT: entire controlling expression of a selection or iteration statement
+CONSTRAINT: one operand of a relational or equality operator which is the entire controlling expression of a selction or iteration statement
+CONSTRAINT: the operand of a unary ! as the entire controlling expression of a selection or iteration statement
+CONSTRAINT: an entire expression statement
+
+UNSPECIFIED(Whether THIS() is a macro or identifier with external linkage)
+
+UNDEFINED(A macro definition of THIS() is suppressed in order to access an actual function)
+UNDEFINED(A program defines an external identifier named LITERAL(setjmp))
+
POSIX(1)
*/