]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
These version allows asynchronous remote procedure calls for
authorhadaq <hadaq>
Sat, 9 Nov 2002 10:27:39 +0000 (10:27 +0000)
committerhadaq <hadaq>
Sat, 9 Nov 2002 10:27:39 +0000 (10:27 +0000)
the system commands, this spares the remote shells, while still
allowing parallelism.  The daq_agent must have
6.10    /u/hadaq/CVS/hadaq/agent.c
6.3     /u/hadaq/CVS/hadaq/agent.x

the manager

6.9     /u/hadaq/CVS/hadaq/tcldaq.c
6.3     /u/hadaq/CVS/hadaq/agent.x

Testet with about 4 tries -- mm

hadaq/hadaq.tcl
hadaq/hades.tcl

index 8f0fbfc1b791b12adedce371448ac238453e36a3..bb444d82d00df77c92d290f0144678d0dbf5ed10 100644 (file)
@@ -320,16 +320,25 @@ proc updateAcquisitionButtons {} {
        }
 }
 
+proc execOnAgent {cmd} {
+       set agent [lindex $cmd 0]
+       set command [lindex $cmd 1]
+       puts "agent $agent: command $command"
+       if {$agent == "join"} {
+               set b [c_joinall]
+       } else {
+               set b [c_system $agent $command]
+       }
+}
+
 proc startAcquisitionCmd {} {
        global beforeStartAcq afterStartAcq
        foreach cmd $beforeStartAcq {
-               puts $cmd
-               catch {eval exec  $cmd}
+               execOnAgent $cmd
        }
        group start acquisition
        foreach cmd $afterStartAcq {
-               puts $cmd
-               catch {eval exec  $cmd}
+               execOnAgent $cmd
        }
        updateAcquisitionButtons
 }
@@ -337,13 +346,11 @@ proc startAcquisitionCmd {} {
 proc stopAcquisitionCmd {} {
        global beforeStopAcq afterStopAcq
        foreach cmd $beforeStopAcq {
-               puts $cmd
-               catch {eval exec  $cmd}
+               execOnAgent $cmd
        }
        group stop acquisition
        foreach cmd $afterStopAcq {
-               puts $cmd
-               catch {eval exec  $cmd}
+               execOnAgent $cmd
        }
        updateAcquisitionButtons
 }
index 24f820227a8911744b8717d26bf6e8390ecc4355..5d56a0a42ea5169a2e278da7a36c578d1941864a 100644 (file)
@@ -1,11 +1,12 @@
 # the list of sub systems according to your needs, possible sub systems
 # are: trig rich0 rich1 rich2 mdc0 tof1 tof2 tof3 shw
 
-# to check total bandwidth:
-# perl -ne 'next unless /memnet/; ($a)=/-w (\d+)/; $b+=$a; print $b ."\n";' hades.tcl
-
-
-set subSystems { trig shw rich0 rich1 rich2  tof1 tof2 tof3 mdc0 mdc1 }
+set subSystems { trig shw rich0 rich1 rich2 tof1 tof2 tof3 mdc0 mdc1 }
+#set subSystems { trig rich0 rich1 rich2 shw }
+#set subSystems { trig shw }
+#set subSystems { trig }
+#set subSystems { trig rich0 }
+#set subSystems { trig rich0 rich1 rich2 tof1 tof2 tof3}
 
 # the component in the HADES_BASE_DIR
 set beamTime oct02
@@ -30,29 +31,32 @@ group create run
 set vcc [expr $atmBase + 0]
 agent create r2-35 hades /hades/usr/hades/$beamTime/trig/hadaq
 worker create r2-35:memnet -a -p -1 -w 27000 -o ATM:0:$vcc
-worker create r2-35:readout -s trigconc -a -p -2 -w $watermark
+worker create r2-35:readout -s trigconc -a -p -2 -w $watermark -v notice
 group add acquisition r2-35:memnet
 group add acquisition r2-35:readout
 lappend init r2-35:trigconc:init
-lappend reset { }
-lappend start { }
-lappend stop { }
-set trigReset "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc reset'\" </dev/null >>&hadaq.log"
-set trigStart "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc start'\" </dev/null >>&hadaq.log"
-#set trigStop "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc stop'\" </dev/null >>&hadaq.log"
-set trigStop ""
+lappend reset [ list r2-35 ":" ]
+lappend start [ list r2-35 ":" ]
+lappend stop [ list r2-35 ":" ]
+lappend trigReset r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc reset"
+lappend trigStart r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc start"
+lappend trigStop r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./trigconc stop"
+lappend ctustart r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./ctustart"
+lappend ctustop r2-35 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./ctustop"
+
 lappend inPaths "-i ATM:0:$vcc"
 
 if {[lsearch $subSystems rich0] >= 0} {
        set vcc [expr $atmBase + 2]
        agent create r2-24 hades /hades/usr/hades/$beamTime/rich/hadaq
        worker create r2-24:memnet -a -p -2 -w 16000 -o ATM:0:$vcc
-       worker create r2-24:readout -s rich0 -a -p -1 -w $watermark
+       worker create r2-24:readout -s rich0 -a -p -1 -w $watermark -v notice
        group add acquisition r2-24:memnet
        group add acquisition r2-24:readout
        lappend init r2-24:rich0:init
-       lappend reset r2-24:rich0:reset
-       lappend start r2-24:rich0:start
+       lappend reset [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 reset" ]
+       lappend start [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 start" ]
+       lappend stop [ list r2-24 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich0 stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
@@ -60,12 +64,13 @@ if {[lsearch $subSystems rich1] >= 0} {
        set vcc [expr $atmBase + 3]
        agent create r2-28 hades /hades/usr/hades/$beamTime/rich/hadaq
        worker create r2-28:memnet -a -p -2 -w 16000 -o ATM:0:$vcc
-       worker create r2-28:readout -s rich1 -a -p -1 -w $watermark
+       worker create r2-28:readout -s rich1 -a -p -1 -w $watermark -v notice
        group add acquisition r2-28:memnet
        group add acquisition r2-28:readout
        lappend init r2-28:rich1:init
-       lappend reset r2-28:rich1:reset
-       lappend start r2-28:rich1:start
+       lappend reset [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 reset" ]
+       lappend start [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 start" ]
+       lappend stop [ list r2-28 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich1 stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
@@ -73,12 +78,13 @@ if {[lsearch $subSystems rich2] >= 0} {
        set vcc [expr $atmBase + 4]
        agent create r2-27 hades /hades/usr/hades/$beamTime/rich/hadaq
        worker create r2-27:memnet -a -p -2 -w 16000 -o ATM:0:$vcc
-       worker create r2-27:readout -s rich2 -a -p -1 -w $watermark
+       worker create r2-27:readout -s rich2 -a -p -1 -w $watermark -v notice
        group add acquisition r2-27:memnet
        group add acquisition r2-27:readout
        lappend init r2-27:rich2:init
-       lappend reset r2-27:rich2:reset
-       lappend start r2-27:rich2:start
+       lappend reset [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 reset" ]
+       lappend start [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 start" ]
+       lappend stop [ list r2-27 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./rich2 stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
@@ -86,12 +92,13 @@ if {[lsearch $subSystems mdc0] >= 0} {
        set vcc [expr $atmBase + 5]
        agent create r2-8  hades /hades/usr/hades/$beamTime/mdc/hadaq
        worker create r2-8:memnet -a -p -1 -w 30000 -o ATM:0:$vcc
-       worker create r2-8:readout -s mdc0  -a -p -2 -w 24576 
+       worker create r2-8:readout -s mdc0  -a -p -2 -w 24576 -v notice
        group add acquisition r2-8:memnet
        group add acquisition r2-8:readout
        lappend init r2-8:mdc0:init
-       lappend reset r2-8:mdc0:reset
-       lappend start r2-8:mdc0:start
+       lappend reset [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 reset" ]
+       lappend start [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 start" ]
+       lappend stop [ list r2-8 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc0 stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
@@ -99,12 +106,13 @@ if {[lsearch $subSystems mdc1] >= 0} {
        set vcc [expr $atmBase + 6]
        agent create r2-32  hades /hades/usr/hades/$beamTime/mdc/hadaq
        worker create r2-32:memnet -a -p -1 -w 20000 -o ATM:0:$vcc
-       worker create r2-32:readout -s mdc1  -a -p -2 -w $watermark
+       worker create r2-32:readout -s mdc1  -a -p -2 -w $watermark -v notice
        group add acquisition r2-32:memnet
        group add acquisition r2-32:readout
        lappend init r2-32:mdc1:init
-       lappend reset r2-32:mdc1:reset
-       lappend start r2-32:mdc1:start
+       lappend reset [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 reset" ]
+       lappend start [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 start" ]
+       lappend stop [ list r2-32 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./mdc1 stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
@@ -112,38 +120,43 @@ if {[lsearch $subSystems shw] >= 0} {
        set vcc [expr $atmBase + 1]
        agent create r2-14 hades /hades/usr/hades/$beamTime/shw/hadaq
        worker create r2-14:memnet -a -p -1 -w 30000 -o ATM:0:$vcc
-       worker create r2-14:readout -s show -a -p -2 -w $watermark 
+       worker create r2-14:readout -s show -a -p -2 -w $watermark -v notice
        group add acquisition r2-14:memnet
        group add acquisition r2-14:readout
        lappend init r2-14:shw:init
-       lappend reset r2-14:shw:reset
-       lappend start r2-14:shw:start
-       lappend stop  r2-14:shw:stop
+       lappend reset [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw reset" ]
+       lappend start [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw start" ]
+       lappend stop [ list r2-14 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./shw stop" ]
        lappend inPaths "-i ATM:0:$vcc"
 }
 
 if {[lsearch $subSystems tof1] >= 0} {
        set vcc [expr $atmBase + 0]
+       agent create e7_25 hades /hades/usr/hades/$beamTime/tof/hadaq
        lappend init e7_25:tof1:init
-       lappend reset e7_25:tof1:reset
-       lappend start e7_25:tof1:start
+       lappend reset [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 reset" ]
+       lappend start [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 start" ]
+       lappend stop [ list e7_25 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof1 stop" ]
 }
 
 if {[lsearch $subSystems tof2] >= 0} {
        set vcc [expr $atmBase + 0]
+       agent create e7_21 hades /hades/usr/hades/$beamTime/tof/hadaq
        lappend init e7_21:tof2:init
-       lappend reset e7_21:tof2:reset
-       lappend start e7_21:tof2:start
+       lappend reset [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 reset" ]
+       lappend start [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 start" ]
+       lappend stop [ list e7_21 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof2 stop" ]
 }
 
 if {[lsearch $subSystems tof3] >= 0} {
        set vcc [expr $atmBase + 0]
+       agent create e7_41 hades /hades/usr/hades/$beamTime/tof/hadaq
        lappend init e7_41:tof3:init
-       lappend reset e7_41:tof3:reset
-       lappend start e7_41:tof3:start
+       lappend reset [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 reset" ]
+       lappend start [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 start" ]
+       lappend stop [ list e7_41 "cd; . bin/daqenv $beamTime; cd $beamTime/slow; ./tof3 stop" ]
 }
 
-
 agent create $evtBuilder hadaq /home/hadaq/$beamTime/eb/hadaq_tcl
 eval worker create $evtBuilder:evtbuild -a -p -2 -m [llength $inPaths] 
 eval worker create $evtBuilder:netmem -a -p -1 -m [llength $inPaths] [join $inPaths { }]
@@ -151,10 +164,37 @@ group add run $evtBuilder:evtbuild
 group add run $evtBuilder:netmem
 
 set duringInit [list "run_parallel_$beamTime [join $init { }]"]
-set beforeStartAcq [list $trigReset "run_parallel_$beamTime [join $reset { }]" $trigReset "run_parallel_$beamTime [join $start { }]" $trigStart]
-
-set afterStartAcq [list "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./ctustart'\" </dev/null >>&hadaq.log"]
 
-set beforeStopAcq [list "rsh r2-35 -l hades sh -c \"'. bin/daqenv $beamTime; cd $beamTime/slow; ./ctustop'\" </dev/null >>&hadaq.log"]
+if {1} {
+lappend beforeStartAcq "$trigReset"
+lappend beforeStartAcq {join ""}
+foreach i "$reset" { lappend beforeStartAcq $i }
+lappend beforeStartAcq {join ""}
+lappend beforeStartAcq "$trigReset"
+lappend beforeStartAcq {join ""}
+foreach i "$start" { lappend beforeStartAcq $i }
+lappend beforeStartAcq {join ""}
+lappend beforeStartAcq "$trigStart"
+lappend beforeStartAcq {join ""}
+
+lappend afterStartAcq "$ctustart"
+lappend afterStartAcq {join ""}
+
+lappend beforeStopAcq "$ctustop"
+lappend beforeStopAcq {join ""}
+
+lappend afterStopAcq "$trigStop"
+lappend afterStopAcq {join ""}
+foreach i "$stop" { lappend afterStopAcq $i }
+lappend afterStopAcq {join ""}
+} else {
+lappend beforeStartAcq {r2-35 date}
+lappend beforeStartAcq {join ""}
+lappend afterStartAcq {r2-35 date}
+lappend afterStartAcq {join ""}
+lappend beforeStopAcq {r2-35 date}
+lappend beforeStopAcq {join ""}
+lappend afterStopAcq {r2-35 date}
+lappend afterStopAcq {join ""}
+}
 
-set afterStopAcq [list $trigStop "run_parallel_$beamTime [join $stop { }]"]