- Timestamp:
- Oct 14, 1998, 12:18:25 PM (26 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 80419f2e14f3f3e1cf9e13aed52d5098cb0acdda
- Parents:
- 649af033c39d83179353755b84eaed2c7be55a01
- Location:
- MP/MP
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
MP/MP/ChangeLog
r649af0 rbba1c4 1 1998-10-14 Olaf Bachmann <obachman@mathematik.uni-kl.de> 2 3 * MP_TcpTransp.c: added MP_KillLink, -MPrsh option to MP_OpenLink 4 5 * MP_Util.c: Added IMP_StrDup function 6 1 7 1998-04-16 Olaf Bachmann <obachman@mathematik.uni-kl.de> 2 8 -
MP/MP/MP.h
r649af0 rbba1c4 697 697 MP_Status_t (*open_transp)VARARGS; /* open the transport device */ 698 698 MP_Status_t (*close_transp)VARARGS; /* close the transport device */ 699 MP_Status_t (*kill_transp)VARARGS; /* kill the transport device */ 699 700 } MP_TranspOps_t; 700 701 … … 862 863 EXTERN void MP_CloseLink _ANSI_ARGS_((MP_Link_pt link)); 863 864 865 EXTERN void MP_KillLink _ANSI_ARGS_((MP_Link_pt link)); 866 864 867 EXTERN MP_Status_t MP_PeekHeader _ANSI_ARGS_((MP_Link_pt link, 865 868 MP_NodeType_t *ntype, … … 968 971 #define log_msg_len 128 969 972 973 EXTERN char *IMP_StrDup _ANSI_ARGS_((char* s)); 974 970 975 EXTERN void MP_LogEvent _ANSI_ARGS_((MP_Link_pt link, char *event, char *msg)); 971 976 … … 973 978 MP_Status_t the_err)); 974 979 975 #define MP_ClearError(link) ( link)->errno = MP_Success980 #define MP_ClearError(link) ((MP_Status_t) (link)->errno = MP_Success) 976 981 977 982 EXTERN void MP_PrintError _ANSI_ARGS_((MP_Link_pt link)); … … 1444 1449 MP_Status_t tcp_open_connection _ANSI_ARGS_((MP_Link_pt, int, char**)); 1445 1450 MP_Status_t tcp_close_connection _ANSI_ARGS_((MP_Link_pt)); 1451 MP_Status_t tcp_kill_connection _ANSI_ARGS_((MP_Link_pt)); 1446 1452 MP_Status_t open_tcp_connect_mode _ANSI_ARGS_((MP_Link_pt, int, char**)); 1447 1453 MP_Status_t open_tcp_listen_mode _ANSI_ARGS_((MP_Link_pt, int, char**)); … … 1459 1465 char *myhost; 1460 1466 MP_LinkStatus_t status; 1467 pid_t peerpid; 1468 char *rsh; 1469 int mode; 1461 1470 } MP_TCP_t; 1462 1471 -
MP/MP/MP_FileTransp.c
r649af0 rbba1c4 46 46 47 47 #ifndef lint 48 static char vcid[] = "@(#) $Id: MP_FileTransp.c,v 1. 1.1.1 1997-05-25 20:31:46obachman Exp $";48 static char vcid[] = "@(#) $Id: MP_FileTransp.c,v 1.2 1998-10-14 10:18:10 obachman Exp $"; 49 49 #endif /* lint */ 50 50 … … 90 90 file_get_status, 91 91 file_open_connection, 92 file_close_connection, 92 93 file_close_connection 93 94 }; -
MP/MP/MP_Link.c
r649af0 rbba1c4 139 139 140 140 #ifndef lint 141 static char vcid[] = "@(#) $Id: MP_Link.c,v 1. 2 1997-06-28 13:30:26obachman Exp $";141 static char vcid[] = "@(#) $Id: MP_Link.c,v 1.3 1998-10-14 10:18:11 obachman Exp $"; 142 142 #endif /* lint */ 143 143 … … 290 290 291 291 if ((tp_ops = IMP_GetTranspByName(env, transp_dev)) == NULL) { 292 msg = IMP_RawMemAllocFnc(strlen(transp) + 28);292 msg = (char*) IMP_RawMemAllocFnc(strlen(transp) + 28); 293 293 sprintf(msg, "Unknown transport device %s", transp); 294 294 MP_LogEvent(link, MP_ERROR_EVENT, msg); … … 298 298 299 299 if (tp_ops->transp_ops.open_transp(link, argc, argv) != MP_Success) { 300 msg = IMP_RawMemAllocFnc(strlen(transp) + 46);300 msg = (char*) IMP_RawMemAllocFnc(strlen(transp) + 46); 301 301 sprintf(msg, "MP_OpenLink: Couldn't open %s transport device", 302 302 transp); … … 308 308 #ifndef NO_LOGGING 309 309 fprintf(env->logfd, "L%d: Application: %s\n", link->link_id, argv[0]); 310 msg = IMP_RawMemAllocFnc(strlen(transp) + 46);310 msg = (char*) IMP_RawMemAllocFnc(strlen(transp) + 46); 311 311 sprintf(msg, "MP_OpenLink: opened link for transport %s", 312 312 transp); … … 386 386 return; 387 387 } 388 389 #ifdef __STDC__ 390 void MP_KillLink(MP_Link_pt link) 391 #else 392 void MP_KillLink(link) 393 MP_Link_pt link; 394 #endif 395 { 396 buffer_handle_pt cur_buff, old_buff; 397 398 #ifdef MP_DEBUG 399 fprintf(stderr, "MP_KillLink: entering for link %d\n", link->link_id); 400 #endif 401 402 if (link != NULL) { 403 if ((cur_buff = link->o_buff) == NULL) 404 return; 405 406 /* Check just in case the environment was released first. */ 407 /* It shouldn't have been, but you never know. */ 408 if (link->env == NULL) { 409 fprintf(stderr, "MP_KillLink: NULL environment pointer!!\n"); 410 return; 411 } 412 413 414 while (cur_buff != NULL) { 415 old_buff = cur_buff; 416 cur_buff = old_buff->next; 417 free_buffer(link->env->buff_pool, old_buff); 418 } 419 420 if ((cur_buff = link->i_buff) == NULL) 421 return; 422 423 while (cur_buff != NULL) { 424 old_buff = cur_buff; 425 cur_buff = old_buff->next; 426 free_buffer(link->env->buff_pool, old_buff); 427 } 428 link->transp.transp_ops->kill_transp(link); 429 430 #ifndef NO_LOGGING 431 if (link->logmask & MP_LOG_INIT_EVENTS) 432 MP_LogEvent(link, MP_INIT_EVENT, "MP_KillLink: closed link\n"); 433 #endif 434 435 IMP_MemFreeFnc(link, sizeof(MP_Link_t)); 436 } 437 438 #ifdef MP_DEBUG 439 fprintf(stderr, "MP_KillLink: exiting\n"); 440 #endif 441 442 return; 443 } 444 388 445 389 446 -
MP/MP/MP_PariBigInt.c
r649af0 rbba1c4 114 114 char * IMP_PariBigIntToStr(MP_ApInt_t mp_number, char *buffer) 115 115 { 116 return gitoascii((GEN) mp_number, buffer); 116 // return gitoascii((GEN) mp_number, buffer); 117 return "Can not print"; 117 118 } 118 119 -
MP/MP/MP_PvmTransp.c
r649af0 rbba1c4 54 54 55 55 #ifndef lint 56 static char vcid[] = "@(#) $Id: MP_PvmTransp.c,v 1. 1.1.1 1997-05-25 20:31:47obachman Exp $";56 static char vcid[] = "@(#) $Id: MP_PvmTransp.c,v 1.2 1998-10-14 10:18:15 obachman Exp $"; 57 57 #endif /* lint */ 58 58 … … 86 86 mp_pvm_get_status, 87 87 mp_pvm_open_connection, 88 mp_pvm_close_connection, 88 89 mp_pvm_close_connection 89 90 }; -
MP/MP/MP_TbTransp.c
r649af0 rbba1c4 45 45 ***************************************************************************/ 46 46 #ifndef lint 47 static char vcid[] = "@(#) $Id: MP_TbTransp.c,v 1. 1.1.1 1997-05-25 20:31:47obachman Exp $";47 static char vcid[] = "@(#) $Id: MP_TbTransp.c,v 1.2 1998-10-14 10:18:16 obachman Exp $"; 48 48 #endif /* lint */ 49 49 … … 76 76 mp_tb_get_status, 77 77 mp_tb_open_connection, 78 mp_tb_close_connection, 78 79 mp_tb_close_connection 79 80 }; -
MP/MP/MP_TcpTransp.c
r649af0 rbba1c4 81 81 #include <string.h> 82 82 #include <stdlib.h> 83 #include <signal.h> 83 84 84 85 #ifdef __WIN32__ … … 104 105 static MP_Status_t tcp_negotiate_fp_format _ANSI_ARGS_((MP_Link_pt)); 105 106 static MP_Status_t tcp_negotiate_bigint_format _ANSI_ARGS_((MP_Link_pt)); 107 static MP_Status_t tcp_exchange_pids _ANSI_ARGS_((MP_Link_pt)); 106 108 static int get_tcp_mode _ANSI_ARGS_((int, char**)); 107 109 … … 117 119 tcp_get_status, 118 120 tcp_open_connection, 119 tcp_close_connection 121 tcp_close_connection, 122 tcp_kill_connection 120 123 }; 121 124 … … 213 216 replace_by_that != NULL) 214 217 { 215 ret = IMP_RawMemAllocFnc((strlen(str)218 ret = (char*) IMP_RawMemAllocFnc((strlen(str) 216 219 + strlen(replace_by_that) - strlen(replace_this) 217 220 + 1)*sizeof(char)); … … 457 460 if (rsh_argv[0] == NULL) 458 461 rsh_argv[0] = MP_RSH_COMMAND; 462 tcp_rec->rsh = IMP_StrDup(rsh_argv[0]); 463 459 464 rsh_argv[1] = IMP_GetCmdlineArg(argc, argv, "-MPhost"); 460 465 rsh_argv[2] = "-n"; … … 536 541 rsh_argv[3] = appstr; 537 542 rsh_argv[4] = NULL; 543 if (tcp_rec->peerhost == NULL) 544 tcp_rec->peerhost = IMP_StrDup(rsh_argv[1]); 538 545 539 546 if ((rsh_pid = vfork()) == -1) { … … 1315 1322 tcp_rec->peerhost = NULL; 1316 1323 tcp_rec->status = MP_UnknownStatus; 1324 tcp_rec->rsh = NULL; 1317 1325 1318 1326 link->transp.private1 = (char *)tcp_rec; … … 1361 1369 if (tcp_rec->peerhost != NULL) 1362 1370 IMP_RawMemFreeFnc(tcp_rec->peerhost); 1371 if (tcp_rec->rsh != NULL) 1372 IMP_RawMemFreeFnc(tcp_rec->rsh); 1363 1373 IMP_MemFreeFnc(tcp_rec, sizeof(MP_TCP_t)); 1364 1374 link->transp.private1 = NULL; … … 1372 1382 } 1373 1383 1374 1375 1384 #ifdef __STDC__ 1385 MP_Status_t tcp_kill_connection(MP_Link_pt link) 1386 #else 1387 MP_Status_t tcp_kill_connection(link) 1388 MP_Link_pt link; 1389 #endif 1390 { 1391 MP_TCP_t *tcp_rec; 1392 char *rsh_argv[4]; 1393 char rsh_kill[20]; 1394 int fork_pid = -1; 1395 1396 #ifdef MP_DEBUG 1397 fprintf(stderr, "tcp_kill_connection: entering\n"); 1398 fflush(stderr); 1399 #endif /* MP_DEBUG */ 1400 1401 TEST_LINK_NULL(link); 1402 if (link->transp.private1 == NULL) 1403 return MP_SetError(link, MP_NullTransport); 1404 tcp_rec = (MP_TCP_t*)link->transp.private1; 1405 1406 if (tcp_rec->mode == MP_LAUNCH_MODE) 1407 { 1408 rsh_argv[0] = tcp_rec->rsh; 1409 rsh_argv[1] = tcp_rec->peerhost; 1410 rsh_argv[2] = "-n"; 1411 sprintf(rsh_kill, "kill -9 %d", tcp_rec->peerpid); 1412 rsh_argv[3] = rsh_kill; 1413 rsh_argv[4] = NULL; 1414 1415 if ((fork_pid = vfork()) == -1) 1416 { 1417 MP_LogEvent(link, MP_ERROR_EVENT, 1418 "MP_OpenLink: can't fork to kill application"); 1419 return MP_SetError(link, MP_Failure); 1420 } 1421 1422 if (! fork_pid) 1423 { 1424 execvp(rsh_argv[0], rsh_argv); 1425 fputs("tcp_kill_connectione: execvp failed - bailing out\n", stderr); 1426 fflush(stderr); 1427 _exit(1); 1428 } 1429 } 1430 else if (tcp_rec->mode == MP_FORK_MODE) 1431 { 1432 kill(tcp_rec->peerpid, SIGKILL); 1433 } 1434 1435 return tcp_close_connection(link); 1436 } 1376 1437 1377 1438 /*********************************************************************** … … 1412 1473 return MP_Failure; 1413 1474 1414 switch (get_tcp_mode(argc, argv)) { 1475 ((MP_TCP_t *)link->transp.private1)->mode = get_tcp_mode(argc, argv); 1476 switch (((MP_TCP_t *)link->transp.private1)->mode) 1477 { 1415 1478 case MP_LISTEN_MODE: 1416 1479 status = open_tcp_listen_mode(link, argc, argv); … … 1460 1523 ERR_CHK(tcp_negotiate_fp_format(link)); 1461 1524 ERR_CHK(tcp_negotiate_bigint_format(link)); 1525 ERR_CHK(tcp_exchange_pids(link)); 1462 1526 1463 1527 #ifdef MP_DEBUG … … 1470 1534 1471 1535 1472 1536 #ifdef __STDC__ 1537 static MP_Status_t tcp_exchange_pids(MP_Link_pt link) 1538 #else 1539 static MP_Status_t tcp_exchange_pids(link) 1540 MP_Link_pt link; 1541 #endif 1542 { 1543 MP_Uint32_t peerpid; 1544 MP_NumAnnot_t na; 1545 1546 /* Hmm... should communicate pid_t -- could be 64 bit !! */ 1547 ERR_CHK(MP_PutUint32Packet(link, (MP_Uint32_t) getpid(), 0)); 1548 MP_EndMsgReset(link); 1549 1550 ERR_CHK(MP_SkipMsg(link)); 1551 ERR_CHK(MP_GetUint32Packet(link, &peerpid, &na)); 1552 ((MP_TCP_t *)link->transp.private1)->peerpid = peerpid; 1553 1554 return MP_Success; 1555 } 1473 1556 1474 1557 /* -
MP/MP/MP_Util.c
r649af0 rbba1c4 38 38 39 39 #ifndef lint 40 static char vcid[] = "@(#) $Id: MP_Util.c,v 1. 2 1998-04-16 16:17:06obachman Exp $";40 static char vcid[] = "@(#) $Id: MP_Util.c,v 1.3 1998-10-14 10:18:20 obachman Exp $"; 41 41 #endif /* lint */ 42 42 … … 52 52 char fix_log_msg[log_msg_len]; 53 53 char AnnotFlagsStr[32]; 54 55 #ifdef __STDC__ 56 char* IMP_StrDup(char* s) 57 #else 58 void IMP_StrDup(s) 59 char* s; 60 #endif 61 { 62 char* d = NULL; 63 64 if (s != NULL) 65 { 66 d = (char*) IMP_RawMemAllocFnc(strlen(s) + 1); 67 strcpy(d, s); 68 } 69 return d; 70 } 54 71 55 72 #ifdef __STDC__ -
MP/MP/h/MP_Env.h
r649af0 rbba1c4 53 53 MP_Status_t (*open_transp)VARARGS; /* open the transport device */ 54 54 MP_Status_t (*close_transp)VARARGS; /* close the transport device */ 55 MP_Status_t (*kill_transp)VARARGS; /* kill the transport device */ 55 56 } MP_TranspOps_t; 56 57 -
MP/MP/h/MP_Link.h
r649af0 rbba1c4 95 95 EXTERN void MP_CloseLink _ANSI_ARGS_((MP_Link_pt link)); 96 96 97 EXTERN void MP_KillLink _ANSI_ARGS_((MP_Link_pt link)); 98 97 99 EXTERN MP_Status_t MP_PeekHeader _ANSI_ARGS_((MP_Link_pt link, 98 100 MP_NodeType_t *ntype, -
MP/MP/h/MP_TcpTransp.h
r649af0 rbba1c4 81 81 MP_Status_t tcp_open_connection _ANSI_ARGS_((MP_Link_pt, int, char**)); 82 82 MP_Status_t tcp_close_connection _ANSI_ARGS_((MP_Link_pt)); 83 MP_Status_t tcp_kill_connection _ANSI_ARGS_((MP_Link_pt)); 83 84 MP_Status_t open_tcp_connect_mode _ANSI_ARGS_((MP_Link_pt, int, char**)); 84 85 MP_Status_t open_tcp_listen_mode _ANSI_ARGS_((MP_Link_pt, int, char**)); … … 96 97 char *myhost; 97 98 MP_LinkStatus_t status; 99 pid_t peerpid; 100 char *rsh; 101 int mode; 98 102 } MP_TCP_t; 99 103 -
MP/MP/h/MP_Util.h
r649af0 rbba1c4 37 37 #define log_msg_len 128 38 38 39 EXTERN char *IMP_StrDup _ANSI_ARGS_((char* s)); 40 39 41 EXTERN void MP_LogEvent _ANSI_ARGS_((MP_Link_pt link, char *event, char *msg)); 40 42 … … 42 44 MP_Status_t the_err)); 43 45 44 #define MP_ClearError(link) ( link)->errno = MP_Success46 #define MP_ClearError(link) ((MP_Status_t) (link)->errno = MP_Success) 45 47 46 48 EXTERN void MP_PrintError _ANSI_ARGS_((MP_Link_pt link));
Note: See TracChangeset
for help on using the changeset viewer.