GOS: einfacher preemptive multitasking scheduler

OP #609246
Lesenswert?

hallo,

erstmal vielen danke für alle beiträge hier, das ist alles sehr 
interessant :-)

ich dachte, ich revanchiere mich mal, und poste auch mal was kleines 
feines...
ich bin für jeden kommentar dankbar (optimierungen, verbesserungen, 
vorschläge)

das hier ist ein kleiner multitasking scheduler.
ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines 
(sinnloses) sample:
1
#include "tasks.h"
2

3
TaskSignal s;
4

5
Task ts;
6
void fs()
7
{
8
  unsigned char d = 0;
9
  for (;;)
10
  {
11
    taskWait(&s);
12
    PORTB = d++;
13
  }
14
}
15

16
Task tw;
17
void fw()
18
{
19
  unsigned char d = 0;
20
  for (;;)
21
  {
22
    PORTB = d--;
23
    taskSignal(&s);
24
  }
25
}
26

27
int main()
28
{
29
  taskCreate(&ts, fs, TaskPrioHighHigh);
30
  taskCreate(&tw, fw, TaskPrioHighHigh);
31
  taskSwitch();
32
  return 0;
33
}

auch zu finden unter:
http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=1032
Gast #609506
Lesenswert?

@Paul:
Es ist natürlich kein Problem, ich wollte bloß sagen, wenn man hier was 
veröffentlich macht, dann bitte wirklich um einen funktionierenden, 
"öffentlichen" Link einfügen.

@Günter:
Danke sehr für Attachment!

Karoly
OP #612148
Lesenswert?

hallo,

50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön, 
und "no news is good news", d.h. keiner hat fehler entdeckt ?!?
aber hat denn keiner irgendwelche anregungen wünsche oder verbesserungen 
?
wenns alles perfekt geht, freut mich das, aber zumindest positives 
feedback für mein ego wäre schön :-)))

cu, gg
Gast #612326
Lesenswert?

Hallo Günter,

Habe auch geladen, aber noch nicht getestet (morgen fahre ich nach 
Irland). Nach dem Urlaub kann ich es evtl. "besser" durchlesen, und/oder 
testen.

Zum ersten Blick ist es gar nicht schlecht. :)))

Karoly
#612881
Lesenswert?

Günter Greschenz wrote:

> 50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön,
> und "no news is good news", d.h. keiner hat fehler entdeckt ?!?

Naja, ich denke, die meisten gucken wien Schwein ins Uhrwerk und sagen 
deshalb nichts.


> ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines
>(sinnloses) sample:

Würde ich daher nicht zustimmen.

Ne Erklärung (kann ruhig weniger als 64738 worte sein) und ein 
sinnvolles Beispiel wären äußerst hilfreich bei einem so komplizierten 
Thema.


Wenns ein taskCreate gibt, muß es dann nicht auch ein taskAnnihilate 
geben ?


Peter
OP #612962
Lesenswert?

hallo peda,

ja, hast schon recht, eine kleine docu wäre schon angebracht...
leider hab ich nur noch 3 tage urlaub und die sind schon verplant :-)
ich denke ich komm demnächst mal dazu.
eine (mini) docu steht ja in den sourcen selbst drin, die werde ich dann 
mal erweitern...

kurz zum thema "taskAnnihilate":
da das für kleinst-systeme gedacht ist, die selten bis gar nicht in die 
verlegenheit kommen tasks dynamisch zu erzeugen und zu killen, habe ich 
nur ein create implementiert. das design eines programmes sollte also 
schon am anfang feststehen.

aber ich bin da ja zum glück recht flexibel :-) wenn jemand den 
dringenden bedarf nach dynamischen tasks hat: info zu mir ! ich mach mir 
dann mal gedanken.
allerdings isses (denk ich) dann nicht so einfach, mein ziel (möglichst 
kleiner speicherbedarf) beizubehalten. dynamisch hört sich für mich an 
wie "malloc" und "free", und das habe ich bewusst aussen vor gelassen.

cu, gg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren