krnl 1
Loading...
Searching...
No Matches
semmutexb.ino
Go to the documentation of this file.
1#include <krnl.h>
2// mutual exclusion by semaphore :-)
3// two tasks want to acces serial line
4// they have to reserce the serial port by aquiring a semaphore and release afterwards
5//
6
7struct k_t *t1, *t2, *mutexSem;
8
9char stak1[100], stak2[100];
10
11void t1Code() {
12 while (1) {
13 k_wait(mutexSem,0); // lets get the serial port - we will wait forever until granted access
14 Serial.println("nr 1 :-)");
15 Serial.println("nr 1. :-)");
16 Serial.println("nr 1.. :-)");
17 Serial.println("nr 1... :-)");
18 k_signal(mutexSem); // release port again
19 }
20}
21
22void t2Code() {
23 while (1) {
25 // delay(1000); // w´busy waiting a second - not the way to wait
26 Serial.println("nr 2 :-)");
27 Serial.println("nr 2. :-)");
28 Serial.println("nr 2.. :-)");
29 Serial.println("nr 2... :-)");
31 }
32}
33
34void setup()
35{
36 k_init(5,5,5);
37 //k_init();
38 Serial.begin(9600);
39 mutexSem = k_crt_sem(1,10);
40 t1 = k_crt_task(t1Code,10,stak1,100);
41 t2 = k_crt_task(t2Code,10,stak2,100);
42 k_start(10);
43}
44void loop()
45{
46}
47
char stak1[STKSZ]
char stak2[STKSZ]
int k_signal(struct k_t *sem)
Signal a semaphore w eventually task shift.
Definition krnl.c:636
int k_wait(struct k_t *sem, int timeout)
stand wait on semaphore call with timeout facility
Definition krnl.c:683
struct k_t * k_crt_task(void(*pTask)(void), char prio, char *pStk, int stkSize)
create a task - only to be called before k_start creates a task and put it in the active Q
Definition krnl.c:328
struct k_t * k_crt_sem(int init_val, int maxvalue)
change task priority and reinserts it in task Q and do a task shift
Definition krnl.c:544
int k_init(int nrTask, int nrSem, int nrMsg)
Definition krnl.c:1108
int k_start()
Definition krnl.c:1149
struct k_t * mutexSem
Definition mutex.ino:3
struct k_t * t1
Definition krnlgen.ino:3
struct k_t * t2
Definition krnlgen.ino:3
void t2Code()
Definition semmutex.ino:24
void t1Code()
Definition semmutex.ino:13
void t2Code()
Definition semmutexb.ino:22
void setup()
Definition semmutexb.ino:34
void t1Code()
Definition semmutexb.ino:11
void loop()
Definition semmutexb.ino:44
Definition krnl.h:323