60 #define KRNL_VRS 20240525
94 #define WDT_PERIOD WDTO_1S
124 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) \
125 || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1284P__)\
126 || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__)\
127 || defined(__AVR_ATmega328__)
130 #elif defined(__AVR_ATmega32U4__)
132 #error "32u4 hmm AVR cpu type - bad place to come"
134 #error "unknown AVR cpu type - bad place to come"
285 #define sbi(r, b) r |= _BV(b)
289 #define cbi(r, b) r &= ~_BV(b)
293 #define cbi(r, b) r &= ~_BV(b)
302 #define ZOMBI_PRIO (QHD_PRIO - 1)
303 #define DMY_PRIO (QHD_PRIO - 2)
306 #define DMY_STK_SZ 90
308 #define STAK_HASH 0x5c
309 #define MAX_SEM_VAL 30000
310 #define MAX_INT 0x7FFF
312 #define CEILINGFAILNOTCEIL -3
313 #define CEILINGFAILPRIO -4
367 struct k_t *rdwrSem, *rdSem, *fifoSem;
486 #define lo8(X) ((unsigned char)((unsigned int)(X)))
487 #define hi8(X) ((unsigned char)((unsigned int)(X) >> 8))
489 #define DI() __asm__ volatile("cli")
490 #define EI() __asm__ volatile("sei")
491 #define RETI() __asm__ volatile("reti")
499 #define K_CHG_STAK() \
501 if (pRun != AQ.next) { \
511 #define K_CHG_STAK() \
512 if (pRun != AQ.next) { \
535 #if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || \
536 defined(__AVR_ATmega2561__)
542 __asm__ volatile("push r1 \n\t" \
544 "in r0, __SREG__ \n\t" \
547 "in r0 , 0x3b \n\t" \
549 "in r0 , 0x3c \n\t" \
584 __asm__ volatile("pop r31 \n\t" \
615 "out 0x3c , r0 \n\t " \
617 "out 0x3b , r0 \n\t " \
619 "out __SREG__ , r0 \n\t " \
623 #elif defined(__AVR_ATmega1284P__)
629 __asm__ volatile("push r1 \n\t" \
631 "in r0, __SREG__ \n\t" \
634 "in r0 , 0x3b \n\t" \
669 __asm__ volatile("pop r31 \n\t" \
700 "out 0x3b , r0 \n\t " \
702 "out __SREG__ , r0 \n\t " \
706 #elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__) \
707 || defined(__AVR_ATmega328__) || defined(__AVR_ATmega32U4__)
710 __asm__ volatile("push r1 \n\t" \
712 "in r0, __SREG__ \n\t" \
748 __asm__ volatile("pop r31 \n\t" \
779 "out __SREG__ , r0 \n\t " \
784 #error "unknown arch"
956 int k_mut_ceil(
struct k_t *sem,
int timeout,
void (*fct)(
void));
1000 int k_wait(
struct k_t *sem,
int timeout);
1225 void k_rwInit(
struct k_rwlock_t *lock);
1230 int k_rwRdEnter(
struct k_rwlock_t *lock,
int timeout);
1235 int k_rwWrEnter(
struct k_rwlock_t *lock,
int timeout);
1240 int k_rwRdLeave(
struct k_rwlock_t *lock);
1245 int k_rwWrLeave(
struct k_rwlock_t *lock);
1263 int k_init(
int nrTask,
int nrSem,
int nrMsg);
void k_sem_clip(unsigned char nr, int nrClip)
unsigned long k_millis(void)
int k_signal(struct k_t *sem)
unsigned long ki_millis(void)
void k_eat_msec(unsigned int eatTime)
volatile char krnl_preempt_flag
int k_stk_chk(struct k_t *t)
int ki_semval(struct k_t *sem)
int k_msg_count(struct k_msg_t *m)
volatile char k_wdt_enabled
int k_mut_ceil_set(struct k_t *sem, char prio)
char k_receive(struct k_msg_t *pB, void *el, int timeout, int *lost_msg)
struct k_t * k_crt_mut(char ceiling_prio, int init_val, int maxvalue)
int ki_signal(struct k_t *sem)
int k_wait2(struct k_t *sem, int timeout, int *nrClip)
char ki_receive(struct k_msg_t *pB, void *el, int *lost_msg)
struct k_t * k_crt_sem(int init_val, int maxvalue)
int k_semval(struct k_t *sem)
void __attribute__((weak)) k_wdt_enable(int t)
int k_set_prio(char prio)
char ki_send(struct k_msg_t *pB, void *el)
int k_wait(struct k_t *sem, int timeout)
int k_clear_msg_Q(struct k_msg_t *pB)
int ki_unused_stak(struct k_t *t)
int k_mut_ceil_leave(struct k_t *sem)
struct k_msg_t * k_crt_send_Q(int nr_el, int el_size, void *pBuf)
void k_set_coop_multitask(unsigned char onn)
void ki_task_shift(void) __attribute__((naked))
void k_round_robbin(void)
struct k_t * k_crt_task(void(*pTask)(void), char prio, char *pS, int stkSize)
int ki_msg_count(struct k_msg_t *msgbuffer)
int k_set_sem_timer(struct k_t *sem, int val)
int k_unused_stak(struct k_t *t)
char k_send(struct k_msg_t *pB, void *el)
int k_sem_signals_lost(struct k_t *sem)
int k_mut_ceil_enter(struct k_t *sem, int timeout)
int k_mut_ceil(struct k_t *sem, int timeout, void(*fct)(void))
struct k_msg_t * send_pool
int k_init(int nrTask, int nrSem, int nrMsg)
int ki_wait(struct k_t *sem, int timeout)
int ki_clear_msg_Q(struct k_msg_t *pB)
int k_clear_sem(struct k_t *sem)
unsigned long k_millis_counter