WISP ERT (Client)  1.0.0
The WISP Extended Runtime (WISP side)
ucontext.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include <signal.h>
5 
7 #define getcontext(ctx) (getmcontext(&(ctx)->uc_mcontext))
8 #define setcontext(ctx) (setmcontext(&(ctx)->uc_mcontext))
10 
12 typedef struct mcontext {
14  uint32_t pc;
16  uint32_t sp;
17 
19  uint32_t r4;
21  uint32_t r5;
23  uint32_t r6;
25  uint32_t r7;
27  uint32_t r8;
29  uint32_t r9;
31  uint32_t r10;
33  uint32_t r11;
35  uint32_t r12;
37  uint32_t r13;
39  uint32_t r14;
41  uint32_t r15;
42 } mcontext_t;
43 
45 typedef struct ucontext {
50 } ucontext_t;
51 
58 extern int getmcontext(
59  mcontext_t* ctx
60 );
61 
68 extern int setmcontext(
69  const mcontext_t* ctx
70 );
71 
81 extern void makecontext(
82  ucontext_t* ctx,
83  void (*func)(),
84  int argc,
85  ...
86 );
87 
94 extern int swapcontext(
95  ucontext_t* octx,
96  const ucontext_t* ctx
97 );
uint32_t sp
Stack pointer.
Definition: ucontext.h:16
int swapcontext(ucontext_t *octx, const ucontext_t *ctx)
Swap user context.
Definition: ucontext.c:74
uint32_t r7
R7 register.
Definition: ucontext.h:25
int getmcontext(mcontext_t *ctx)
Get machine context.
uint32_t r13
R13 register.
Definition: ucontext.h:37
uint32_t r6
R6 register.
Definition: ucontext.h:23
uint32_t r14
R14 register.
Definition: ucontext.h:39
stack_t uc_stack
Stack used by this context.
Definition: ucontext.h:47
uint32_t pc
Program counter.
Definition: ucontext.h:14
MSP430 stack type.
Definition: signal.h:6
uint32_t r15
R15 register.
Definition: ucontext.h:41
ERT user context type.
Definition: ucontext.h:45
mcontext_t uc_mcontext
Machine context.
Definition: ucontext.h:49
uint32_t r9
R9 register.
Definition: ucontext.h:29
uint32_t r12
R12 register.
Definition: ucontext.h:35
uint32_t r11
R11 register.
Definition: ucontext.h:33
uint32_t r10
R10 register.
Definition: ucontext.h:31
uint32_t r8
R8 register.
Definition: ucontext.h:27
int setmcontext(const mcontext_t *ctx)
Set machine context.
uint32_t r4
R4 register.
Definition: ucontext.h:19
ERT machine context type.
Definition: ucontext.h:12
void makecontext(ucontext_t *ctx, void(*func)(), int argc,...)
Make user context.
Definition: ucontext.c:7
uint32_t r5
R5 register.
Definition: ucontext.h:21