annotate test/hoge.c @ 704:6e6dc2d644ed

*** empty log message ***
author kono
date Wed, 24 Oct 2007 00:13:06 +0900
parents cb3809f4ec97
children 6b7372e17970
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
658
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
1 #include <stdio.h>
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
2 // #include "hoge.h"
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
3 // #include "task.h"
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
4
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
5 typedef
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
6 struct pkt {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
7 int val;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
8 __code (*next)(struct pkt *,struct task *);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
9 } Pkt, *PktPtr;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
10
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
11
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
12 typedef
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
13 struct task {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
14 int val;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
15 __code (*next)(struct pkt *,struct task *);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
16 } Task, *TaskPtr;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
17
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
18 int count = 5;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
19
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
20 void *env;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
21 __code (*exit0)(int);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
22
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
23 __code scheduler(PktPtr pkt, TaskPtr task)
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
24 {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
25 if (count-->0)
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
26 goto pkt->next(pkt,task);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
27 goto exit0(0),env;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
28 }
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
29
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
30 __code modulo(PktPtr pkt, TaskPtr current_task);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
31
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
32 __code increment(PktPtr pkt, TaskPtr current_task)
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
33 {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
34 pkt->val++;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
35 printf("inc: %d\n", pkt->val);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
36 pkt->next = modulo;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
37 goto scheduler(pkt, current_task);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
38 }
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
39
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
40 __code modulo(PktPtr pkt, TaskPtr current_task)
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
41 {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
42 pkt->val %= 10;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
43 pkt->val = pkt->val % 10;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
44 printf("mod: %d\n", pkt->val);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
45 pkt->next = increment;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
46 goto scheduler(pkt, current_task);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
47 }
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
48
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
49 static Pkt pkt;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
50 static Task task;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
51
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
52 int
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
53 main()
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
54 {
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
55 exit0 = return;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
56 env = environment;
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
57 goto increment(&pkt,&task);
cb3809f4ec97 *** empty log message ***
kono
parents:
diff changeset
58 }