=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/process.texi,v retrieving revision 1.2 retrieving revision 1.8 diff -u -p -r1.2 -r1.8 --- OpenXM/src/asir-doc/parts/process.texi 1999/12/21 02:47:31 1.2 +++ OpenXM/src/asir-doc/parts/process.texi 2002/07/10 09:33:52 1.8 @@ -1,4 +1,4 @@ -@comment $OpenXM$ +@comment $OpenXM: OpenXM/src/asir-doc/parts/process.texi,v 1.7 2001/03/16 05:18:04 noro Exp $ \BJP @node $BJ,;67W;;(B,,, Top @chapter $BJ,;67W;;(B @@ -34,7 +34,7 @@ $B$?$a$N5,Ls$G$"$k(B. @b{OpenXM} $B$K$*$$$F$O(B \E \BEG -In @b{Asir} distributed computations are done under @b{OpenXM} +On @b{Asir} distributed computations are done under @b{OpenXM} (Open message eXchange protocol for Mathematics), which is a protocol for exchanging mainly mathematical objects between processes. @@ -115,11 +115,11 @@ are available. @item @code{ox_push_cmo()} \JP $B%G!<%?$r(B server $B$N%9%?%C%/$K@Q$`(B -\EG It requests a server to push an object to the stack of the server. +\EG It requests a server to push an object to the stack of a server. @item @code{ox_pop_cmo()} \JP $B%G!<%?$r(B server $B$N%9%?%C%/$+$il(B -$B9g$K$O5/F0$G$-$J$$(B. $B$3$N>l9g@dBP%Q%9$rM?$($k$+(B, @samp{~/.cshrc} $B$N%5!<(B -$B%A%Q%9$K$=$N%W%m%0%i%`$N$"$k%G%#%l%/%H%j$rDI2C$9$kI,MW$,$"$k(B. $B$=$N:](B, -$BAj$rEPO?$9$k(B. @@ -617,6 +609,18 @@ UNIX $BHG$K$*$$$F$O(B, @code{ox_launch()} $B$O(B, @code{DISPLAY} $B$NCM$rMQ$$$k(B. @item +$B4D6-JQ?t(B @code{ASIR_RSH} $B$,%;%C%H$5$l$F$$$k>l9g(B, $B%5!<%P$NN)$A>e$2%W%m%0%i%`(B +$B$H$7$F(B@samp{rsh} $B$NBe$o$j$K$3$NJQ?t$NCM$,MQ$$$i$l$k(B. $BNc$($P(B, + +@example +% setenv ASIR_RSH "ssh -f -X -A " +@end example + +$B$K$h$j(B, $B%5!<%P$NN)$A>e$2$K(B @samp{ssh} $B$,MQ$$$i$l(B, +X11 $B$NDL?.$,(B forwarding $B$5$l$k(B. $B>\$7$/$O(B @samp{ssh} $B$N%^%K%e%"%k$r(B +$B;2>H(B. + +@item @code{ox_shutdown()} $B$O<1JL;R(B @var{id} $B$KBP1~$9$k1s3V%W%m%;%9(B $B$r=*N;$5$;$k(B. @@ -641,6 +645,7 @@ ox_xterm*saveLines:1000 $B$K$h$j(B, icon $B$G5/F0(B, scrollbar $B$D$-(B, scrollbar $B$G;2>H$G$-$k9T?t(B $B$,:GBg(B 1000 $B9T(B, $B$H$$$&;XDj$,$G$-$k(B. + \E \BEG @@ -653,7 +658,7 @@ is invoked on @var{host}. Then @samp{ox_launch} invoke If @var{host} is equal to 0, all the commands are invoked on the same machine as the @b{Asir} is running. If no arguments are specified, @var{host}, @var{dir} and @var{command} -are regarded as 0, the value of @code{get_rootdir()} and @samp{ox_dir} in +are regarded as 0, the value of @code{get_rootdir()} and @samp{ox_asir} in the same directory respectively. @item @@ -692,21 +697,6 @@ Here, Let @code{A} be the host on which @b{Asir} is ru @enumerate @item -Set the command search path of @code{csh} on the remote host @code{B} -so that your program, say @code{P}, can run on @code{B}. -This is done by putting the directory of @code{P} to the command search -path of @code{csh} on @code{B}. -The program @code{P} is invoked by @code{rsh} or @code{remsh}. -Thus, invocation of -the program @code{P} shall fail unless it is found within the search -path on the host @code{B}. -For such a case, you can run the program @code{P} by either giving -the absolute path or adding the directory of the program @code{P} to -the search path description in your @samp{~/.cshrc}. -Note that the the `directory' means the directory on the remote host -@code{B}. - -@item Register the hostname of the host @code{A} to the @samp{~/.rhosts} of the host @code{B}. That is, you should be allowed to access the host @code{B} from @code{A} @@ -718,6 +708,18 @@ let @code{Xserver} authorize the relevant hosts. Adding the hosts can be done by command @code{xhost}. @item +If an environment variable @code{ASIR_RSH} is set, +the content of this variable is used as a promgram to invoke +remote servers instead of @var{rsh}. For example, + +@example +% setenv ASIR_RSH "ssh -f -X -A " +@end example + +implies that remote servers are invoked by @samp{ssh} and that +X11 forwarding is enabled. See the manual of @samp{ssh} for the detail. + +@item Some @var{command}'s consume much stack space. You are recommended to set the stack size to about 16MB large in @samp{.cshrc} for safe. To specify the size, put @code{limit stacksize 16m} for an example. @@ -1203,9 +1205,9 @@ The result is pushed to the stack. @fref{ox_pop_cmo ox_pop_local} @end table -\JP @node ox_reset register_handler,,, $BJ,;67W;;$K4X$9$k4X?t(B -\EG @node ox_reset register_handler,,, Functions for distributed computation -@subsection @code{ox_reset},@code{register_handler} +\JP @node ox_reset ox_intr register_handler,,, $BJ,;67W;;$K4X$9$k4X?t(B +\EG @node ox_reset ox_intr register_handler,,, Functions for distributed computation +@subsection @code{ox_reset},@code{ox_intr},@code{register_handler} @findex ox_reset @findex register_handler @@ -1213,6 +1215,9 @@ The result is pushed to the stack. @item ox_reset(@var{number}) \JP :: $B%W%m%;%9$N%j%;%C%H(B \EG :: Resets an OpenXM server +@item ox_intr(@var{number}) +\JP :: $B%W%m%;%9$N$K(B @code{SIGINT} $BAwIU(B +\EG :: Sends @code{SIGINT} to an OpenXM server @item register_handler(@var{func}) \JP :: $B%W%m%;%9$N%j%;%C%H$N$?$a$N4X?tEPO?(B \EG :: Registers a function callable on a keyboard interrupt. @@ -1247,6 +1252,13 @@ The result is pushed to the stack. $B7W;;ESCf$G$N6/@)CfCG$KMQ$$$k(B. @item +@code{ox_intr()} $B$O(B, $B<1JL;R(B @var{number} $B$N%W%m%;%9$r$KBP$7$F(B +@code{SIGINT} $B$rAwIU$9$k(B. @code{SIGINT} $B$KBP$9$k%W%m%;%9$NF0:n$O(B +$B5,Dj$5$l$F$$$J$$$,(B, @samp{ox_asir} $B$N>l9g(B, $B$?$@$A$K(B debug mode $B$K(B +$BF~$k(B. X $B>e$GF0:n$7$F$$$k>l9g(B, $B%G%P%C%0%3%^%s%IF~NOMQ$N%&%#%s%I%&$,(B +$B%]%C%W%"%C%W$9$k(B. + +@item @code{register_handler()} $B$O(B, @kbd{C-c} $B$J$I$K$h$k3d$j9~$_$N:]$K(B, @kbd{u} $B$r;XDj$9$k$3$H$G(B, $BL50z?t%f!<%6Dj5A4X?t(B @var{func()} $B$,8F$S=P$5$l$k(B $B$h$&$K@_Dj$9$k(B. $B$3$N4X?t$K(B, @code{ox_reset()} $B$r8F$S=P$5$;$k$3$H$G(B, @@ -1273,6 +1285,12 @@ Even if a process is running, the execution is safely It can be also used to interrupt a distributed computation. @item +@code{ox_intr()} sends @code{SIGINT} to a process whose identifier is +@var{number}. The action of a server against @code{SIGINT} is not +specified in @b{OpenXM}. @samp{ox_asir} immediately enters the debug +mode and pops up an window to input debug commands on X window system. + +@item @code{register_handler()} registers a function @var{func()}. If @kbd{u} is specified on a keybord interrupt, @var{func()} is executed before returning the toplevel. @@ -1507,7 +1525,7 @@ Usually @b{OX_SYNC_BALL} will be ignored by the peer. @table @t \JP @item $B;2>H(B \EG @item References -@fref{ox_rpc ox_cmo_rpc ox_execute_string}, @fref{ox_reset register_handler} +@fref{ox_rpc ox_cmo_rpc ox_execute_string}, @fref{ox_reset ox_intr register_handler} @end table \JP @node ox_get,,, $BJ,;67W;;$K4X$9$k4X?t(B @@ -1896,12 +1914,14 @@ identifier @var{id} is returned. @code{ifplot()} $B$O(B, 2 $BJQ?t4X?t(B @var{func} $B$Ne$G$NNmE@$N(B $B%0%i%U$NI=<($r9T$&(B. @code{conplot()} $B$O(B, $BF1MM$N0z?t$KBP$7(B, $BEy9b@~$NI=<($r9T$&(B. @code{plot()} $B$O(B 1 $BJQ?t4X?t$N(B -$B%0%i%U$NI=<($r9T$&(B. Windows $BHG$O8=>u$G$OL$%5%]!<%H$G$"$k(B. +$B%0%i%U$NI=<($r9T$&(B. @item -UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$je$G$O(B +@samp{ox_plot} $B$,(B, Windows $B>e$G$O(B @samp{engine} $B$,$3$l$i$N5!G=(B +$B$rDs6!$7$F$*$j(B, $B$3$l$i$O(B @b{Asir} $B$NI8=`%i%$%V%i%j%G%#%l%/%H%j$K$"$k(B. +$B$3$l$i$O(B @code{ox_launch()} $B$^$?$O(B @code{ox_launch_nox()} + $B$K$h$j5/F0$7$F$*$/I,MW$,$"$k(B. @item $B0z?t$NFb(B, @var{func} $B$OI,?\$G$"$k(B. $B$=$NB>$N0z?t$O%*%W%7%g%s$G$"$k(B. @@ -1910,7 +1930,7 @@ UNIX $BHG$O(B, $B1s3V%W%m%;%9$K$h$jH(B \EG @item References -@fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset register_handler} +@fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset ox_intr register_handler} +@end table + +\JP @node open_canvas clear_canvas draw_obj draw_string,,, $BJ,;67W;;$K4X$9$k4X?t(B +\EG @node open_canvas clear_canvas draw_obj draw_string,,, Functions for distributed computation +@subsection @code{open_canvas}, @code{clear_canvas}, @code{draw_obj}, @code{draw_string} +@findex open_canvas +@findex clear_canvas +@findex draw_obj +@findex draw_string + +@table @t +@item open_canvas(@var{id}[,@var{geometry}]) +\JP :: $BIA2hMQ%&%#%s%I%&(B ($B%-%c%s%P%9(B) $B$r@8@.$9$k(B. +\EG :: Opens a canvas, which is a window for drawing objects. +@item clear_canvas(@var{id},@var{index}) +\JP :: $B%-%c%s%P%9$r%/%j%"$9$k(B. +\EG :: Clears a canvas. +@item draw_obj(@var{id},@var{index},@var{pointorsegment} [,@var{color}]) +\JP :: $B%-%c%s%P%9>e$KE@$^$?$O@~J,$rIA2h$9$k(B. +\EG :: Draws a point or a line segment on a canvas. +@item draw_string(@var{id},@var{index},@var{[x,y]},@var{string} [,@var{color}]) +\JP :: $B%-%c%s%P%9>e$KJ8;zNs$rIA2h$9$k(B. +\EG :: Draws a character string on a canvas. +@end table + +@table @var +@item return +0 +@item id, index, color, x, y +\JP $B@0?t(B +\EG integer +@item pointorsegment +\JP $B%j%9%H(B +\EG list +@item string +\JP $BJ8;zNs(B +\EG character string +@end table + +@itemize @bullet +@item +\BJP +$B$3$l$i$O(B OpenXM $B%5!<%P(B @samp{ox_plot} (Windows $B>e$G$O(B @samp{engine}) +$B$K$h$jDs6!$5$l$k(B. +\E +\BEG +These functions are supplied by the OpenXM server @samp{ox_plot} +(@samp{engine} on Windows). +\E +@item +\BJP +@code{open_canvas} $B$O(B, $BIA2hMQ$N%&%#%s%I%&(B($B%-%c%s%P%9(B)$B$r@8@.$9$k(B. +@var{geometry} $B$K$h$j%&%#%s%I%&$N%5%$%:$r(B pixel $BC10L$G(B @var{[x,y]} $B$G;XDj$9$k(B. +default size $B$O(B @var{[}@code{300},@code{300}@var{]}. +$B%-%c%s%P%9$N<1JL;R$H$7$F(B, $B@0?tCM$r(B OpenXM $B%5!<%P$N%9%?%C%/$K(B push $B$9$k(B. +$B$3$N<1JL;R$O(B @code{draw_obj} $B$N8F$S=P$7$KI,MW$G$"$j(B, @code{ox_pop_cmo} $B$K(B +$B$h$jl9gE@$N:BI8(B, @var{[x,y,u,v]} $B$N>l9g(B @var{[x,y]}, +@var{[u,v]} $B$r7k$V@~J,$rI=$9$H8+$J$5$l$k(B. +$B%-%c%s%P%9$N:BI8$O(B, $B:8>e6y$r86E@$H$7$F2#J}8~$K(B +$BBh0l:BI8(B, $B=DJ}8~$KBhFs:BI8$r$H$k(B. $BCM$O(B pixel $BC10L$G;XDj$9$k(B. +@var{color} $B$N;XDj$,$"$k>l9g(B, @var{color/65536} mod 256, +@var{color/256} mod 256, @var{color} mod 256 $B$r$=$l$>$l(B Red, Green, Blue +$B$NCM(B ($B:GBg(B 255) $B$H$_$J$9(B. +\E +\BEG +@code{draw_obj} draws a point or a line segment on +a canvas specified by a server id @var{id} and a canvas id @var{index}. +If @var{pointorsegment} is @var{[x,y]}, it is regarded as a point. +If @var{pointorsegment} is @var{[x,y,u,v]}, it is regarded +as a line segment which connects @var{[x,y]} and @var{[u,v]}. +If @var{color} is specified, @var{color/65536} mod 256, +@var{color/256} mod 256, @var{color} mod 256 are regarded as the vaules +of Red, Green, Blue (Max. 255) respectively. +\E +@item +\BJP +@code{draw_string} $B$O(B, $B%5!<%P(B id @var{id}, $B%-%c%s%P%9(B id @var{index} +$B$G;XDj$5$l$k%-%c%s%P%9$KJ8;zNs$rIA2h$9$k(B. $B0LCV$O(B @var{[x,y]} $B$K$h$j;XDj$9$k(B. +\E +\BEG +@code{draw_string} draws a character string @var{string} on +a canvas specified by a server id @var{id} and a canvas id @var{index}. +The position of the string is specified by @var{[x,y]}. +\E +@end itemize + +@example +[182] Id=ox_launch_nox(0,"ox_plot"); +0 +[183] open_canvas(Id); +0 +[184] Ind=ox_pop_cmo(Id); +0 +[185] draw_obj(Id,Ind,[100,100]); +0 +[186] draw_obj(Id,Ind,[200,200],0xffff); +0 +[187] draw_obj(Id,Ind,[10,10,50,50],0xff00ff); +0 +[187] draw_string(Id,Ind,[100,50],"hello",0xffff00); +0 +[189] clear_canvas(Id,Ind); +0 +@end example + +@table @t +\JP @item $B;2>H(B +\EG @item References +@fref{ox_launch ox_launch_nox ox_shutdown}, @fref{ox_reset ox_intr register_handler}, @fref{ox_pop_cmo ox_pop_local}. @end table