IoTivity-Lite
|
Modules | |
Local continuations | |
Local continuations form the basis for implementing protothreads. | |
Protothread semaphores | |
This module implements counting semaphores on top of protothreads. | |
Files | |
file | pt.h |
Protothreads implementation. | |
Macros | |
#define | PT_ENDED 3 |
#define | PT_EXITED 2 |
#define | PT_WAITING 0 |
#define | PT_YIELDED 1 |
Initialization | |
#define | PT_INIT(pt) |
Initialize a protothread. More... | |
Declaration and definition | |
#define | PT_THREAD(name_args) |
Declaration of a protothread. More... | |
#define | PT_BEGIN(pt) |
Declare the start of a protothread inside the C function implementing the protothread. More... | |
#define | PT_END(pt) |
Declare the end of a protothread. More... | |
Blocked wait | |
#define | PT_WAIT_UNTIL(pt, condition) |
Block and wait until condition is true. More... | |
#define | PT_WAIT_WHILE(pt, cond) |
Block and wait while condition is true. More... | |
Hierarchical protothreads | |
#define | PT_WAIT_THREAD(pt, thread) |
Block and wait until a child protothread completes. More... | |
#define | PT_SPAWN(pt, child, thread) |
Spawn a child protothread and wait until it exits. More... | |
Exiting and restarting | |
#define | PT_RESTART(pt) |
Restart the protothread. More... | |
#define | PT_EXIT(pt) |
Exit the protothread. More... | |
Calling a protothread | |
#define | PT_SCHEDULE(f) |
Schedule a protothread. More... | |
Yielding from a protothread | |
#define | PT_YIELD(pt) |
Yield from the current protothread. More... | |
#define | PT_YIELD_UNTIL(pt, cond) |
Yield from the protothread until a condition occurs. More... | |
#define PT_BEGIN | ( | pt | ) |
Declare the start of a protothread inside the C function implementing the protothread.
This macro is used to declare the starting point of a protothread. It should be placed at the start of the function in which the protothread runs. All C statements above the PT_BEGIN() invokation will be executed each time the protothread is scheduled.
pt | A pointer to the protothread control structure. |
#define PT_END | ( | pt | ) |
Declare the end of a protothread.
This macro is used for declaring that a protothread ends. It must always be used together with a matching PT_BEGIN() macro.
pt | A pointer to the protothread control structure. |
#define PT_EXIT | ( | pt | ) |
Exit the protothread.
This macro causes the protothread to exit. If the protothread was spawned by another protothread, the parent protothread will become unblocked and can continue to run.
pt | A pointer to the protothread control structure. |
#define PT_INIT | ( | pt | ) |
Initialize a protothread.
Initializes a protothread. Initialization must be done prior to starting to execute the protothread.
pt | A pointer to the protothread control structure. |
#define PT_RESTART | ( | pt | ) |
Restart the protothread.
This macro will block and cause the running protothread to restart its execution at the place of the PT_BEGIN() call.
pt | A pointer to the protothread control structure. |
#define PT_SCHEDULE | ( | f | ) |
Schedule a protothread.
This function schedules a protothread. The return value of the function is non-zero if the protothread is running or zero if the protothread has exited.
f | The call to the C function implementing the protothread to be scheduled |
#define PT_SPAWN | ( | pt, | |
child, | |||
thread | |||
) |
Spawn a child protothread and wait until it exits.
This macro spawns a child protothread and waits until it exits. The macro can only be used within a protothread.
pt | A pointer to the protothread control structure. |
child | A pointer to the child protothread's control structure. |
thread | The child protothread with arguments |
#define PT_THREAD | ( | name_args | ) |
Declaration of a protothread.
This macro is used to declare a protothread. All protothreads must be declared with this macro.
name_args | The name and arguments of the C function implementing the protothread. |
#define PT_WAIT_THREAD | ( | pt, | |
thread | |||
) |
Block and wait until a child protothread completes.
This macro schedules a child protothread. The current protothread will block until the child protothread completes.
pt | A pointer to the protothread control structure. |
thread | The child protothread with arguments |
#define PT_WAIT_UNTIL | ( | pt, | |
condition | |||
) |
Block and wait until condition is true.
This macro blocks the protothread until the specified condition is true.
pt | A pointer to the protothread control structure. |
condition | The condition. |
#define PT_WAIT_WHILE | ( | pt, | |
cond | |||
) |
Block and wait while condition is true.
This function blocks and waits while condition is true. See PT_WAIT_UNTIL().
pt | A pointer to the protothread control structure. |
cond | The condition. |
#define PT_YIELD | ( | pt | ) |
Yield from the current protothread.
This function will yield the protothread, thereby allowing other processing to take place in the system.
pt | A pointer to the protothread control structure. |
#define PT_YIELD_UNTIL | ( | pt, | |
cond | |||
) |
Yield from the protothread until a condition occurs.
pt | A pointer to the protothread control structure. |
cond | The condition. This function will yield the protothread, until the specified condition evaluates to true. |