meopham 
meopham make tcobencht
javac Tcobench.java
java Tcobench -t -k 2 -n 2 -w 3 -m 2 -c 3

Thread and Coroutine Benchmark

loopmax        =   2 (k)
climax, sermax =   2 (n)
workmax        =   3 (w)
mpxmax         =   2 (m)
chnmax         =   3 (c)
delaymsecs     = 500 (d)

Bounce: Task created
Printer: Task created
RC01: Task created
RC02: Task created
RS01: Task created
RS02: Task created
WC01: Task created
WC02: Task created
WS01: Task created
WS02: Task created
M01:  Task created
M02:  Task created
Controller: Task created

Ctrlmainco: Clock device created
Ctrlmainco: Clock packet period = 100 msecs
Ctrlmainco: Calibrating the bounce counter
Ctrlmainco: sending clockpkt to the clock

Ctrlmainco: countmax = 1969

M01:  Ready
M02:  Ready
RS01Log: ready
RS01W01: ready
RS01W02: ready
RS01W03: ready
RS01: Ready
RS02Log: ready
RS02W01: ready
RS02W02: ready
RS02W03: ready
RS02: Ready
WS01Log: ready
WS01W01: ready
WS01W02: ready
WS01W03: ready
WS01: Ready
WS02Log: ready
WS02W01: ready
WS02W02: ready
WS02W03: ready
WS02: Ready

RC01: Schedule of work
  S01M01C01  S02M02C01 DS01M01C02  S01M02C01  S02M02C03
  S02M01C03  S01M01C03  S02M01C02  S02M02C02  S01M02C03
  S01M02C02 dS02M01C01
RC01Root: Waiting to start schedule

RC02: Schedule of work
  S01M01C02  S01M02C03  S02M01C01  S02M02C01 dS02M01C02
  S01M01C03  S01M02C01  S02M02C02 DS02M01C03  S02M02C03
  S01M02C02  S01M01C01
RC02Root: Waiting to start schedule

WC01: Schedule of work
  S02M01C02 DS01M02C01  S01M02C02  S01M01C02  S02M02C03
  S02M01C03  S02M01C01  S02M02C02  S01M01C01 dS01M02C03
  S02M02C01  S01M01C03
WC01Root: Waiting to start schedule

WC02: Schedule of work
  S01M02C01  S01M02C03  S01M01C02 DS02M02C02  S02M02C03
  S01M01C01  S01M01C03  S02M02C01  S02M01C02  S02M01C01
 dS01M02C02  S02M01C03
WC02Root: Waiting to start schedule
Ctrlmainco: All tasks initialised

Start  time:  Tue Jun 28 12:52:23 BST 2005

Ctrlmainco: Release all read clients
Releasing RC01
RC01:    rqst M01C01->RS01->RC01
Releasing RC02
RC02:    rqst M01C02->RS01->RC02
Controller: Release all write clients

Releasing WC01
WC01:    0101 WC01->WS02->M01C02
Releasing WC02
WC02:    0102 WC02->WS01->M02C01

Controller: Starting the clock again

Bounce pkt received, count=1000
RS01W01: type=111 clino=1 serno=1 mpxno=1 chnno=1 data=0

RS01W01: busycount incremented to 1
RS01: Busy: W01
M01:     rqst M01C01->RS01->RC01
M01Root:     Buffers:
   M01C01: rqst: RS01
RS01W02: type=111 clino=2 serno=1 mpxno=1 chnno=2 data=0

RS01W02: busycount incremented to 2
RS01: Busy: W01 W02
M01:     rqst M01C02->RS01->RC02
M01Root:     Buffers:
   M01C01: rqst: RS01
   M01C02: rqst: RS01
WS02W01: type=113 clino=1 serno=2 mpxno=1 chnno=2 data=101

WS02W01: busycount incremented to 1
WS02: Busy: W01
WC01:  D 0201 WC01->WS01->M02C01
WS02W01: 0101 WC01->WS02->M01C02
M01:     dequeuing rqst M01C02->RS02->RC01
M01Root:     Buffers:
   M01C01: rqst: RS01
M01:     0101 WC01->WS02->M01C02->RS01->RC02
RS01W02: data 0101 M01C02->RS01->RC02
RC02:    rqst M02C03->RS01->RC02

RS01W02: rqst loggerlock
RS01W02: got  loggerlock
RS01W02: log 05 + 93
RS01W02: log 05 - 93
RS01W02: reply from logger = 05
RS01W02: freeing loggerlock

RS01W02: busycount decremented to 1
RS01Root: trying to increment count=0
RS01W02: Now free to accept another request:
RS01: Busy: W01
RS01W02: type=111 clino=2 serno=1 mpxno=2 chnno=3 data=0

RS01W02: busycount incremented to 2
RS01: Busy: W01 W02
M02:     rqst M02C03->RS01->RC02
M02Root:     Buffers:
   M02C03: rqst: RS01

WS02W01: rqst loggerlock
WS02W01: got  loggerlock
WS02W01: log 92 + 24
WS01W01: type=113 clino=2 serno=1 mpxno=2 chnno=1 data=102

WS01W01: busycount incremented to 1
WS01: Busy: W01
WC02:    0202 WC02->WS01->M02C03
WS01W01: 0102 WC02->WS01->M02C01
M02:     0102 WC02->WS01->M02C01
M02Root:     Buffers:
   M02C01: data: 0102 
   M02C03: rqst: RS01
WS01W02: type=114 clino=1 serno=1 mpxno=2 chnno=1 data=201

WS01W02: busycount incremented to 2
WS01: Busy: W01 W02
WS01W02: Delay 0201 WC01->WS01->M02C01 500 msecs

WS01W02: calling codelay(500)
WS02W01: log 92 - 24
WS02W01: reply from logger = 92
WS02W01: freeing loggerlock

WS02W01: busycount decremented to 0
WS02Root: trying to increment count=0
WS02W01: Now free to accept another request:
WS02: Busy:
WS01W03: type=113 clino=2 serno=1 mpxno=2 chnno=3 data=202

WS01W03: busycount incremented to 3
WS01: Busy: W01 W02 W03
WC02:    0302 WC02->WS01->M01C02
WS01W03: 0202 WC02->WS01->M02C03
M02:     dequeuing rqst M02C03->RS01->RC02
M02Root:     Buffers:
   M02C01: data: 0102 
M02:     0202 WC02->WS01->M02C03->RS01->RC02
RS01W02: data 0202 M02C03->RS01->RC02
RC02:    rqst M01C01->RS02->RC02

RS01W02: rqst loggerlock
RS01W02: got  loggerlock
RS01W02: log 72 + 40
RS02W01: type=111 clino=2 serno=2 mpxno=1 chnno=1 data=0

RS02W01: busycount incremented to 1
RS02: Busy: W01
M01:     rqst M01C01->RS02->RC02
M01Root:     Buffers:
   M01C01: rqst: RS01 RS02
RS01W02: log 72 - 40
RS01W02: reply from logger = 72
RS01W02: freeing loggerlock

RS01W02: busycount decremented to 1
RS01Root: trying to increment count=0
RS01W02: Now free to accept another request:
RS01: Busy: W01

WS01W01: rqst loggerlock
WS01W01: got  loggerlock
WS01W01: log 22 + 83
WS01W01: log 22 - 83
WS01W01: reply from logger = 22
WS01W01: freeing loggerlock

WS01W01: busycount decremented to 2
WS01Root: trying to increment count=0
WS01W01: Now free to accept another request:
WS01: Busy: W02 W03
WS01W01: type=113 clino=2 serno=1 mpxno=1 chnno=2 data=302

WS01W01: busycount incremented to 3
WS01: Busy: W01 W02 W03
WC02:  D 0402 WC02->WS02->M02C02
WS02W01: type=114 clino=2 serno=2 mpxno=2 chnno=2 data=402

WS02W01: busycount incremented to 1
WS02: Busy: W01
WS02W01: Delay 0402 WC02->WS02->M02C02 500 msecs

WS02W01: calling codelay(500)
WS01W01: 0302 WC02->WS01->M01C02
M01:     0302 WC02->WS01->M01C02
M01Root:     Buffers:
   M01C01: rqst: RS01 RS02
   M01C02: data: 0302 

WS01W03: rqst loggerlock
WS01W03: got  loggerlock
WS01W03: log 05 + 87
WS01W03: log 05 - 87
WS01W03: reply from logger = 05
WS01W03: freeing loggerlock

WS01W03: busycount decremented to 2
WS01Root: trying to increment count=0
WS01W03: Now free to accept another request:
WS01: Busy: W01 W02
WS01W03: type=110 clino=5 serno=0 mpxno=0 chnno=0 data=0

WS01W03: busycount incremented to 3
WS01: Busy: W01 W02 W03
WS01W03: 0000 WC05->WS00->M00C00
java.lang.NullPointerException
        at Cortn.qpkt(Tcobench.java:1384)
        at Cortn.sndpkt(Tcobench.java:1521)
        at Workco.fn(Tcobench.java:3125)
        at Cortn.run(Tcobench.java:1082)
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000

WS02W01: Resumed 0402 WC02->WS02->M02C02
WC02:    0502 WC02->WS02->M02C03
WS02W01: 0402 WC02->WS02->M02C02
M02:     0402 WC02->WS02->M02C02
M02Root:     Buffers:
   M02C01: data: 0102 
   M02C02: data: 0402 
WS02W02: type=113 clino=2 serno=2 mpxno=2 chnno=3 data=502

WS02W02: busycount incremented to 2
WS02: Busy: W01 W02
WC02:    0602 WC02->WS01->M01C01
WS02W02: 0502 WC02->WS02->M02C03
M02:     0502 WC02->WS02->M02C03
M02Root:     Buffers:
   M02C01: data: 0102 
   M02C02: data: 0402 
   M02C03: data: 0502 

WS02W01: rqst loggerlock
WS02W01: got  loggerlock
WS02W01: log 16 + 39
WS02W01: log 16 - 39
WS02W01: reply from logger = 16
WS02W01: freeing loggerlock

WS02W01: busycount decremented to 1
WS02Root: trying to increment count=0
WS02W01: Now free to accept another request:
WS02: Busy: W02

WS02W02: rqst loggerlock
WS02W02: got  loggerlock
WS02W02: log 29 + 67
WS02W02: log 29 - 67
WS02W02: reply from logger = 29
WS02W02: freeing loggerlock

WS02W02: busycount decremented to 0
WS02Root: trying to increment count=0
WS02W02: Now free to accept another request:
WS02: Busy:
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
Bounce pkt received, count=1000
make: *** [tcobencht] Error 130

meopham 
