[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.50

version 1.45, 2003/12/09 03:07:45 version 1.50, 2003/12/13 08:03:56
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.49 2003/12/12 09:01:11 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 96  void asir_set_rank_102(unsigned int);
Line 96  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 277  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 373  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 433  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 479  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 514  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 542  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);
         }          }
 }  }

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

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