[BACK]Return to ox_asir.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/ox_asir.c between version 1.45 and 1.53

version 1.45, 2003/12/09 03:07:45 version 1.53, 2004/03/01 02:03:27
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.44 2003/04/23 07:03:53 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.52 2004/02/26 06:37:09 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 59  void ox_usr1_handler();
Line 59  void ox_usr1_handler();
 int asir_ox_init();  int asir_ox_init();
   
 /* environement is defined in libpari.a */  /* environement is defined in libpari.a */
   # if !( PARI_VERSION_CODE > 131588)
 extern jmp_buf environnement;  extern jmp_buf environnement;
   # endif
 extern int myrank_102,nserver_102;  extern int myrank_102,nserver_102;
   
 extern int do_message;  extern int do_message;
Line 96  void asir_set_rank_102(unsigned int);
Line 98  void asir_set_rank_102(unsigned int);
 void asir_tcp_accept_102(unsigned int);  void asir_tcp_accept_102(unsigned int);
 void asir_tcp_connect_102(unsigned int);  void asir_tcp_connect_102(unsigned int);
 void asir_reset_102(unsigned int serial);  void asir_reset_102(unsigned int serial);
   void asir_bcast_102(unsigned int serial);
   void asir_reduce_102(unsigned int serial);
 LIST asir_GetErrorList();  LIST asir_GetErrorList();
 char *name_of_cmd(int);  char *name_of_cmd(int);
 char *name_of_id(int);  char *name_of_id(int);
Line 275  static void asir_do_cmd(int cmd,unsigned int serial)
Line 279  static void asir_do_cmd(int cmd,unsigned int serial)
                 case SM_reset_102:                  case SM_reset_102:
                         asir_reset_102(serial);                          asir_reset_102(serial);
                         break;                          break;
                   case SM_bcast_102:
                           asir_bcast_102(serial);
                           break;
                   case SM_reduce_102:
                           asir_reduce_102(serial);
                           break;
                 case SM_nop:                  case SM_nop:
                 default:                  default:
                         break;                          break;
Line 365  char *name_of_cmd(int cmd)
Line 375  char *name_of_cmd(int cmd)
                 case SM_reset_102:                  case SM_reset_102:
                         return "SM_reset_102";                          return "SM_reset_102";
                         break;                          break;
                   case SM_bcast_102:
                           return "SM_bcast_102";
                           break;
                   case SM_reduce_102:
                           return "SM_reduce_102";
                           break;
                 default:                  default:
                         return "Unknown cmd";                          return "Unknown cmd";
                         break;                          break;
Line 419  void asir_popCMO(unsigned int serial)
Line 435  void asir_popCMO(unsigned int serial)
         }          }
 }  }
   
   void asir_reduce_102(unsigned int serial)
   {
           Q r;
           int root;
           Obj data,obj;
           ERR err;
           STRING op;
           char *opname;
           void (*func)();
   
           func = 0;
           op = (STRING)asir_pop_one();
           opname = BDY(op);
           r = (Q)asir_pop_one();
           root = QTOS(r);
           if ( !strcmp(opname,"+") )
                   func = arf_add;
           else if ( !strcmp(opname,"*") )
                   func = arf_mul;
           if ( !func ) {
                   create_error(&err,serial,"Invalid opration in ox_reduce_102");
                   asir_push_one(obj);
           } else
                   ox_reduce_102(root,func);
   }
   
   void asir_bcast_102(unsigned int serial)
   {
           Q r;
           int root;
           Obj data;
   
           r = (Q)asir_pop_one();
           root = QTOS(r);
           ox_bcast_102(root);
   }
   
 void asir_reset_102(unsigned int serial)  void asir_reset_102(unsigned int serial)
 {  {
         int i,j,id;          int i,j,id;
Line 428  void asir_reset_102(unsigned int serial)
Line 481  void asir_reset_102(unsigned int serial)
                 do {                  do {
                         ox_recv_102(i,&id,&obj);                          ox_recv_102(i,&id,&obj);
                 } while ( id != OX_SYNC_BALL );                  } while ( id != OX_SYNC_BALL );
         for ( i = myrank_102; i < nserver_102; i++ )          for ( i = myrank_102+1; i < nserver_102; i++ )
                 ox_send_sync_102(i);                  ox_send_sync_102(i);
 }  }
   
 extern int myrank_102,nserver_102;  
   
 void asir_set_rank_102(unsigned int serial)  void asir_set_rank_102(unsigned int serial)
 {  {
         Obj obj;          Obj obj;
Line 465  void asir_set_rank_102(unsigned int serial)
Line 516  void asir_set_rank_102(unsigned int serial)
 void asir_tcp_accept_102(unsigned int serial)  void asir_tcp_accept_102(unsigned int serial)
 {  {
         Obj obj;          Obj obj;
         Q rank,port,ret;          Q r,p;
         NODE arg;  
         ERR err;          ERR err;
           char port_str[BUFSIZ];
           int port,s,use_unix,rank;
   
         rank = (Q)asir_pop_one();          r = (Q)asir_pop_one();
         port = (Q)asir_pop_one();          p = (Q)asir_pop_one();
         arg = mknode(2,port,rank);          if ( IS_CYGWIN || !p || NUM(p) ) {
         Pox_tcp_accept_102(arg,&ret);                  port = QTOS(p);
         if ( !ret ) return;                  sprintf(port_str,"%d",port);
         else {                  use_unix = 0;
                 create_error(&err,serial,"failed to bind or accept in ox_tcp_accept_102");          } else {
                   strcpy(port_str,BDY((STRING)p));
                   use_unix = 1;
           }
           s = try_bind_listen(use_unix,port_str);
           s = try_accept(use_unix,s);
           rank = QTOS((Q)r);
           if ( register_102(s,rank,1) < 0 ) {
                   create_error(&err,serial,
                           "failed to bind or accept in ox_tcp_accept_102");
                 asir_push_one((Obj)err);                  asir_push_one((Obj)err);
         }          }
 }  }
Line 483  void asir_tcp_accept_102(unsigned int serial)
Line 544  void asir_tcp_accept_102(unsigned int serial)
 void asir_tcp_connect_102(unsigned int serial)  void asir_tcp_connect_102(unsigned int serial)
 {  {
         Obj obj;          Obj obj;
         Q rank,port,ret;          Q r,p;
         STRING host;          STRING h;
         NODE arg;  
         ERR err;          ERR err;
           char *host;
           char port_str[BUFSIZ];
           int port,s,use_unix,rank;
   
         rank = (Q)asir_pop_one();          r = (Q)asir_pop_one();
         port = (Q)asir_pop_one();          p = (Q)asir_pop_one();
         host = (STRING)asir_pop_one();          h = (STRING)asir_pop_one();
         arg = mknode(3,host,port,rank);          if ( IS_CYGWIN || !p || NUM(p) ) {
         Pox_tcp_connect_102(arg,&ret);                  port = QTOS(p);
         if ( !ret ) return;                  sprintf(port_str,"%d",port);
         else {                  use_unix = 0;
                 create_error(&err,serial,"failed to connect in ox_tcp_connect_102");                  host = BDY((STRING)h);
           } else {
                   strcpy(port_str,BDY((STRING)p));
                   use_unix = 1;
                   host = 0;
           }
           s = try_connect(use_unix,host,port_str);
           rank = QTOS((Q)r);
           if ( register_102(s,rank,1) < 0 ) {
                   create_error(&err,serial,
                           "failed to connect in ox_tcp_connect_102");
                 asir_push_one((Obj)err);                  asir_push_one((Obj)err);
         }          }
 }  }
Line 520  void asir_pushCMOtag(unsigned int serial)
Line 593  void asir_pushCMOtag(unsigned int serial)
 void asir_popString()  void asir_popString()
 {  {
         Obj val;          Obj val;
         char *buf,*obuf;          char *buf;
         int l;          int l;
         STRING str;          STRING str;
   
         val = asir_pop_one();          val = asir_pop_one();
         if ( !val )          if ( !val )
                 obuf = "0";                  buf = "0";
         else {          else {
                 l = estimate_length(CO,val);                  l = estimate_length(CO,val);
                 buf = (char *)ALLOCA(l+1);                  buf = (char *)ALLOCA(l+1);
                 soutput_init(buf);                  soutput_init(buf);
                 sprintexpr(CO,val);                  sprintexpr(CO,val);
                 l = strlen(buf);  
                 obuf = (char *)MALLOC(l+1);  
                 strcpy(obuf,buf);  
         }          }
         MKSTR(str,obuf);          MKSTR(str,buf);
         ox_send_data(0,str);          ox_send_data(0,str);
 }  }
   
Line 599  int asir_executeString()
Line 669  int asir_executeString()
 #if defined(PARI)  #if defined(PARI)
         recover(0);          recover(0);
         /* environement is defined in libpari.a */          /* environement is defined in libpari.a */
   # if !(PARI_VERSION_CODE > 131588 )
         if ( setjmp(environnement) ) {          if ( setjmp(environnement) ) {
                 avma = top; recover(1);                  avma = top; recover(1);
                 resetenv("");                  resetenv("");
         }          }
   # endif
 #endif  #endif
         cmd = ((STRING)asir_pop_one())->body;          cmd = ((STRING)asir_pop_one())->body;
         parse_strp = cmd;          parse_strp = cmd;

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.53

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>