28 lines
500 B
C
28 lines
500 B
C
|
#pragma once
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
// stack flags
|
||
|
#define ST_SYSTEM 0x0001 // System Stack Segment
|
||
|
#define ST_FREE 0x0002 // Stack Segment is not in use, may be reallocated to new thread
|
||
|
|
||
|
#define STACK_TOP(stack) (&stack->base[stack->size - 1])
|
||
|
|
||
|
struct stStack
|
||
|
{
|
||
|
uint8_t *base;
|
||
|
uint16_t size;
|
||
|
|
||
|
uint16_t flags;
|
||
|
|
||
|
struct stStack *next;
|
||
|
};
|
||
|
typedef struct stStack avrStack;
|
||
|
|
||
|
|
||
|
uint16_t stack_system_resize(uint16_t size);
|
||
|
avrStack* stack_alloc(uint16_t size);
|
||
|
void stack_free(avrStack *stack);
|
||
|
|
||
|
|