=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/ox_asir.c,v retrieving revision 1.12 retrieving revision 1.14 diff -u -p -r1.12 -r1.14 --- OpenXM_contrib2/asir2000/io/ox_asir.c 2000/03/16 08:23:16 1.12 +++ OpenXM_contrib2/asir2000/io/ox_asir.c 2000/07/13 05:09:02 1.14 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.11 2000/03/16 04:55:21 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.13 2000/03/19 12:35:20 noro Exp $ */ #include "ca.h" #include "parse.h" #include "signal.h" @@ -9,7 +9,7 @@ #endif void ox_usr1_handler(); -void asir_ox_init(); +int asir_ox_init(); extern jmp_buf environnement; @@ -42,28 +42,37 @@ static void asir_popString(); static void asir_popCMO(unsigned int); static void asir_popSerializedLocalObject(); static LIST asir_GetErrorList(); -static char *name_of_cmd(unsigned int); +static char *name_of_cmd(int); static char *name_of_id(int); -static void asir_do_cmd(unsigned int,unsigned int); +static void asir_do_cmd(int,unsigned int); #if MPI +/* XXX : currently MPI version supports only a homogeneous cluster. */ + extern int mpi_nprocs,mpi_myid; void ox_mpi_master_init() { - int i,idx,ret; + int i,idx; - for ( i = 1; i < mpi_nprocs; i++ ) { - /* client mode */ + for ( i = 0; i < mpi_nprocs; i++ ) { + /* ordering information is not exchanged */ + /* idx should be equal to i */ idx = get_iofp(i,0,0); - ret = register_server(0,idx,idx); + register_server(0,idx,idx); } } void ox_mpi_slave_init() { + int i,idx; + endian_init(); - /* server mode */ - get_iofp(0,0,1); fclose(stdin); + for ( i = 0; i < mpi_nprocs; i++ ) { + /* ordering information is not exchanged */ + /* idx should be equal to i */ + idx = get_iofp(i,0,0); + register_server(0,idx,idx); + } asir_OperandStackSize = BUFSIZ; asir_OperandStack = (Obj *)CALLOC(asir_OperandStackSize,sizeof(Obj)); asir_OperandStackPtr = -1; @@ -90,7 +99,7 @@ static void create_error(ERR *err,unsigned int serial, void ox_main(int argc,char **argv) { int id; - unsigned int cmd; + int cmd; Obj obj; USINT ui; ERR err; @@ -160,7 +169,7 @@ void ox_main(int argc,char **argv) { } } -static void asir_do_cmd(unsigned int cmd,unsigned int serial) +static void asir_do_cmd(int cmd,unsigned int serial) { MATHCAP client_mathcap; Q q; @@ -242,7 +251,7 @@ static char *name_of_id(int id) } } -static char *name_of_cmd(unsigned cmd) +static char *name_of_cmd(int cmd) { switch ( cmd ) { case SM_popSerializedLocalObject: @@ -675,6 +684,8 @@ static void ox_io_init() { write_char(iofp[0].out,&c); ox_flush_stream_force(0); read_char(iofp[0].in,&rc); iofp[0].conv = c == rc ? 0 : 1; + /* XXX; for raw I/O */ + register_server(0,0,0); } /* @@ -725,7 +736,7 @@ int asir_ox_pop_cmo(void *cmo, int limit) * Executes an SM command. */ -void asir_ox_push_cmd(unsigned int cmd) +void asir_ox_push_cmd(int cmd) { int ret; ERR err; @@ -798,7 +809,7 @@ int asir_ox_peek_cmo_size() * =1 => network byte order */ -void asir_ox_init(int byteorder) +int asir_ox_init(int byteorder) { int tmp; char ifname[BUFSIZ]; @@ -873,4 +884,5 @@ void asir_ox_init(int byteorder) do_message = 0; create_my_mathcap("ox_asir"); asir_reset_handler(); + return 0; }