| true | 964 | | trc_store_trace_event( ID, TD, tid, omit ) | | | 965 | | TRC_ID ID; | | | 966 | | TRC_TEVDESC TD; | | | 967 | | int tid; | | | 968 | | int omit; | | | 969 | | { | | | 970 | | TRC_DATADESC DD; | | | 971 | | | | | 972 | | TRC_TEVTASK TT; | | | 973 | | | | | 974 | | char upk_byte[TRC_MAX_UNPACK_ARR_SIZE];
| | | | | ... | | | 989 | | int maxlen; | | | 990 | | int ignore; | | | 991 | | int tusec; | | | 992 | | int tsec; | | | 993 | | int len; | | | 994 | | int num; | | | 995 | | int i; | | | 996 | | | | | 997 | | | | | 998 | | | | | 999 | | if ( !omit && TD->dump ) | | | 1000 | | trc_dump_tevdesc( ID, TD, tid ); | | | 1001 | | | | | 1002 | | | | | 1003 | | | | | 1004 | | TT = (TRC_TEVTASK) NULL;
| | | 1005 | | | | | 1006 | | tsec = tusec = -1; | | | 1007 | | | | | 1008 | | newtask = TRC_FALSE;
| | | 1009 | | endtask = TRC_FALSE;
| | | 1010 | | | | | 1011 | | if ( !strcmp( TD->name, "newtask" ) | | | 1012 | | || !strcmp( TD->name, "spntask" ) ) | | | 1013 | | { | | | 1014 | | newtask = TRC_TRUE;
| | | 1015 | | } | | | 1016 | | | | | 1017 | | else if ( !strcmp( TD->name, "endtask" ) ) | | | 1018 | | endtask = TRC_TRUE;
| | | 1019 | | | | | 1020 | | ignore = TRC_FALSE;
| | | 1021 | | | | | 1022 | | | | | 1023 | | | | | 1024 | | if ( !omit ) | | | 1025 | | ( ID, TD, tid ); | | | 1026 | | | | | 1027 | | | | | 1028 | | | | | 1029 | | DD = TD->ddesc; | | | 1030 | | | | | 1031 | | while ( DD != NULL )
| | | 1032 | | { | | | 1033 | | if ( DD->array == TEV_DATA_ARRAY )
| | | 1034 | | { | | | 1035 | | TRC_PVMCKERR( pvm_upkint( &num, 1, 1 ),
| | | 1036 | | "Array Unpack", return( TRC_FALSE ) ); | | | 1037 | | | | | 1038 | | if ( num > TRC_MAX_UNPACK_ARR_SIZE
| | | 1039 | | && DD->dt != TEV_DATA_STRING )
| | | 1040 | | { | | | 1041 | | if ( !omit ) | | | 1042 | | printf( "Error: Unpack Size %d Too Large\n", num ); | | | 1043 | | | | | 1044 | | return( TRC_FALSE );
| | | 1045 | | } | | | 1046 | | | | | 1047 | | if ( !omit ) | | | 1048 | | { | | | 1049 | | if ( DD->dt == TEV_DATA_CPLX
| | | 1050 | | || DD->dt == TEV_DATA_DCPLX )
| | | 1051 | | { | | | 1052 | | fprintf( ID->trace_out, "[%d] { ", num * 2 ); | | | 1053 | | | | | 1054 | | } | | | 1055 | | | | | 1056 | | else if ( DD->dt == TEV_DATA_STRING )
| | | 1057 | | fprintf( ID->trace_out, "[%d] ", num ); | | | 1058 | | | | | 1059 | | else if ( DD->dt == TEV_DATA_BYTE )
| | | 1060 | | { | | | 1061 | | fprintf( ID->trace_out, "[%d] { ", num + 1 ); | | | 1062 | | | | | 1063 | | } | | | 1064 | | | | | 1065 | | else | | | 1066 | | { | | | 1067 | | fprintf( ID->trace_out, "[%d] { ", num ); | | | 1068 | | | | | 1069 | | } | | | 1070 | | } | | | 1071 | | } | | | 1072 | | | | | 1073 | | else | | | 1074 | | num = 1; | | | 1075 | | | | | 1076 | | switch ( DD->dt ) | | | 1077 | | { | | | 1078 | | case TEV_DATA_NULL: break;
| | | 1079 | | | | | 1080 | | case TEV_DATA_BYTE:
| | | 1081 | | { | | | 1082 | | TRC_PVMCKERR( pvm_upkbyte( upk_byte, num, 1 ),
| | | 1083 | | "Event BYTE Unpack", return( TRC_FALSE ) ); | | | 1084 | | | | | 1085 | | if ( omit ) | | | 1086 | | break; | | | 1087 | | | | | 1088 | | if ( DD->array == TEV_DATA_ARRAY )
| | | 1089 | | fprintf( ID->trace_out, "\"" ); | | | 1090 | | | | | 1091 | | for ( i=0 ; i < num ; i++ ) | | | 1092 | | fprintf( ID->trace_out, "%c", upk_byte[i] ); | | | 1093 | | | | | 1094 | | if ( DD->array == TEV_DATA_ARRAY )
| | | 1095 | | fprintf( ID->trace_out, "\"" ); | | | 1096 | | | | | 1097 | | break; | | | 1098 | | } | | | 1099 | | | | | 1100 | | case TEV_DATA_CPLX:
| | | 1101 | | { | | | 1102 | | TRC_PVMCKERR( pvm_upkfloat( upk_float, num * 2, 1 ),
| | | 1103 | | "Event CPLX Unpack", return( TRC_FALSE ) ); | | | 1104 | | | | | 1105 | | if ( omit ) | | | 1106 | | break; | | | 1107 | | | | | 1108 | | for ( i=0 ; i < num ; i++ ) | | | 1109 | | { | | | 1110 | | fprintf( ID->trace_out, "%f, %f", | | | 1111 | | upk_float[ 2 * i ], | | | 1112 | | upk_float[ (2 * i) + 1 ] ); | | | 1113 | | | | | 1114 | | if ( i < num - 1 ) | | | 1115 | | fprintf( ID->trace_out, ", " ); | | | 1116 | | } | | | 1117 | | | | | 1118 | | break; | | | 1119 | | } | | | 1120 | | | | | 1121 | | case TEV_DATA_DCPLX:
| | | 1122 | | { | | | 1123 | | TRC_PVMCKERR( pvm_upkdouble( upk_double, num * 2, 1 ),
| | | 1124 | | "Event DCPLX Unpack", return( TRC_FALSE ) ); | | | 1125 | | | | | 1126 | | if ( omit ) | | | 1127 | | break; | | | 1128 | | | | | 1129 | | for ( i=0 ; i < num ; i++ ) | | | 1130 | | { | | | 1131 | | fprintf( ID->trace_out, "%lf, %lf", | | | 1132 | | upk_double[ 2 * i ], | | | 1133 | | upk_double[ (2 * i) + 1 ] ); | | | 1134 | | | | | 1135 | | if ( i < num - 1 ) | | | 1136 | | fprintf( ID->trace_out, ", " ); | | | 1137 | | } | | | 1138 | | | | | 1139 | | break; | | | 1140 | | } | | | 1141 | | | | | 1142 | | case TEV_DATA_DOUBLE:
| | | 1143 | | { | | | 1144 | | TRC_PVMCKERR( pvm_upkdouble( upk_double, num, 1 ),
| | | 1145 | | "Event DOUBLE Unpack", return( TRC_FALSE ) ); | | | 1146 | | | | | 1147 | | if ( omit ) | | | 1148 | | break; | | | 1149 | | | | | 1150 | | for ( i=0 ; i < num ; i++ ) | | | 1151 | | { | | | 1152 | | fprintf( ID->trace_out, "%lf", upk_double[i] ); | | | 1153 | | | | | 1154 | | if ( i < num - 1 ) | | | 1155 | | fprintf( ID->trace_out, ", " ); | | | 1156 | | } | | | 1157 | | | | | 1158 | | break; | | | 1159 | | } | | | 1160 | | | | | 1161 | | case TEV_DATA_FLOAT:
| | | 1162 | | { | | | 1163 | | TRC_PVMCKERR( pvm_upkfloat( upk_float, num, 1 ),
| | | 1164 | | "Event FLOAT Unpack", return( TRC_FALSE ) ); | | | 1165 | | | | | 1166 | | if ( omit ) | | | 1167 | | break; | | | 1168 | | | | | 1169 | | for ( i=0 ; i < num ; i++ ) | | | 1170 | | { | | | 1171 | | fprintf( ID->trace_out, "%f", upk_float[i] ); | | | 1172 | | | | | 1173 | | if ( i < num - 1 ) | | | 1174 | | fprintf( ID->trace_out, ", " ); | | | 1175 | | } | | | 1176 | | | | | 1177 | | break; | | | 1178 | | } | | | 1179 | | | | | 1180 | | case TEV_DATA_INT:
| | | 1181 | | { | | | 1182 | | TRC_PVMCKERR( pvm_upkint( upk_int, num, 1 ),
| | | 1183 | | "Event INT Unpack", return( TRC_FALSE ) ); | | | 1184 | | | | | 1185 | | if ( !omit ) | | | 1186 | | { | | | 1187 | | for ( i=0 ; i < num ; i++ ) | | | 1188 | | { | | | 1189 | | fprintf( ID->trace_out, "%d", upk_int[i] ); | | | 1190 | | | | | 1191 | | if ( i < num - 1 ) | | | 1192 | | fprintf( ID->trace_out, ", " ); | | | 1193 | | } | | | 1194 | | } | | | 1195 | | | | | 1196 | | if ( ( newtask || endtask ) | | | 1197 | | && !strcmp( DD->did->name, "TID" ) ) | | | 1198 | | { | | | 1199 | | if ( !omit && newtask ) | | | 1200 | | { | | | 1201 | | TT = trc_get_tevtask_tid( ID, upk_int[0] ); | | | 1202 | | | | | 1203 | | if ( TT == NULL )
| | | 1204 | | { | | | 1205 | | if ( !ignore ) | | | 1206 | | { | | | 1207 | | sprintf( msg, | | | 1208 | | "Task TID=0x%x Connected to %s", | | | 1209 | | upk_int[0], TRC_NAME ); | | | 1210 | | | | | 1211 | | trc_status_msg( ID, msg ); | | | 1212 | | } | | | 1213 | | | | | 1214 | | TT = trc_create_tevtask(); | | | 1215 | | | | | 1216 | | TT->tid = upk_int[0]; | | | 1217 | | | | | 1218 | | TT->outstatus = TRC_TASK_NOOUT;
| | | 1219 | | | | | 1220 | | TT->next = ID->tevtask_list; | | | 1221 | | | | | 1222 | | ID->tevtask_list = TT; | | | 1223 | | } | | | 1224 | | | | | 1225 | | if ( !ignore ) | | | 1226 | | TT->tevstatus = TRC_TASK_ALIVE;
| | | 1227 | | | | | 1228 | | else | | | 1229 | | TT->tevstatus = TRC_TASK_IGNORE;
| | | 1230 | | } | | | 1231 | | | | | 1232 | | if ( endtask ) | | | 1233 | | { | | | 1234 | | TT = trc_get_tevtask_tid( ID, upk_int[0] ); | | | 1235 | | | | | 1236 | | if ( TT != NULL )
| | | 1237 | | { | | | 1238 | | if ( TT->tevstatus == TRC_TASK_ALIVE )
| | | 1239 | | { | | | 1240 | | TT->tevstatus = TRC_TASK_DEAD;
| | | 1241 | | | | | 1242 | | trc_check_for_dead_host( ID, TT ); | | | 1243 | | | | | 1244 | | if ( !trc_tevtasks_alive( ID ) ) | | | 1245 | | trc_end_trace( ID ); | | | 1246 | | } | | | 1247 | | | | | 1248 | | else | | | 1249 | | TT->tevstatus = TRC_TASK_DEAD;
| | | 1250 | | } | | | 1251 | | | | | 1252 | | else if ( !omit ) | | | 1253 | | { | | | 1254 | | printf( "\nWarning: ENDTASK Unknown Task TID=0x%x.\n\n", | | | 1255 | | upk_int[0] ); | | | 1256 | | } | | | 1257 | | } | | | 1258 | | } | | | 1259 | | | | | 1260 | | else if ( !strcmp( DD->did->name, "TS" ) ) | | | 1261 | | tsec = upk_int[0]; | | | 1262 | | | | | 1263 | | else if ( !strcmp( DD->did->name, "TU" ) ) | | | 1264 | | tusec = upk_int[0]; | | | 1265 | | | | | 1266 | | break; | | | 1267 | | } | | | 1268 | | | | | 1269 | | case TEV_DATA_UINT:
| | | 1270 | | { | | | 1271 | | TRC_PVMCKERR( pvm_upkint( upk_int, num, 1 ),
| | | 1272 | | "Event UINT Unpack", return( TRC_FALSE ) ); | | | 1273 | | | | | 1274 | | if ( omit ) | | | 1275 | | break; | | | 1276 | | | | | 1277 | | for ( i=0 ; i < num ; i++ ) | | | 1278 | | { | | | 1279 | | fprintf( ID->trace_out, "%u", | | | 1280 | | (unsigned) upk_int[i] ); | | | 1281 | | | | | 1282 | | if ( i < num - 1 ) | | | 1283 | | fprintf( ID->trace_out, ", " ); | | | 1284 | | } | | | 1285 | | | | | 1286 | | break; | | | 1287 | | } | | | 1288 | | | | | 1289 | | case TEV_DATA_LONG:
| | | 1290 | | { | | | 1291 | | TRC_PVMCKERR( pvm_upklong( upk_long, num, 1 ),
| | | 1292 | | "Event LONG Unpack", return( TRC_FALSE ) ); | | | 1293 | | | | | 1294 | | if ( omit ) | | | 1295 | | break; | | | 1296 | | | | | 1297 | | for ( i=0 ; i < num ; i++ ) | | | 1298 | | { | | | 1299 | | fprintf( ID->trace_out, "%ld", upk_long[i] ); | | | 1300 | | | | | 1301 | | if ( i < num - 1 ) | | | 1302 | | fprintf( ID->trace_out, ", " ); | | | 1303 | | } | | | 1304 | | | | | 1305 | | break; | | | 1306 | | } | | | 1307 | | | | | 1308 | | case TEV_DATA_ULONG:
| | | 1309 | | { | | | 1310 | | TRC_PVMCKERR( pvm_upklong( upk_long, num, 1 ),
| | | 1311 | | "Event ULONG Unpack", return( TRC_FALSE ) ); | | | 1312 | | | | | 1313 | | if ( omit ) | | | 1314 | | break; | | | 1315 | | | | | 1316 | | for ( i=0 ; i < num ; i++ ) | | | 1317 | | { | | | 1318 | | fprintf( ID->trace_out, "%ld", upk_long[i] ); | | | 1319 | | | | | 1320 | | if ( i < num - 1 ) | | | 1321 | | fprintf( ID->trace_out, ", " ); | | | 1322 | | } | | | 1323 | | | | | 1324 | | break; | | | 1325 | | } | | | 1326 | | | | | 1327 | | case TEV_DATA_SHORT:
| | | 1328 | | { | | | 1329 | | TRC_PVMCKERR( pvm_upkshort( upk_short, num, 1 ),
| | | 1330 | | "Event SHORT Unpack", return( TRC_FALSE ) ); | | | 1331 | | | | | 1332 | | if ( omit ) | | | 1333 | | break; | | | 1334 | | | | | 1335 | | for ( i=0 ; i < num ; i++ ) | | | 1336 | | { | | | 1337 | | fprintf( ID->trace_out, "%d", upk_short[i] ); | | | 1338 | | | | | 1339 | | if ( i < num - 1 ) | | | 1340 | | fprintf( ID->trace_out, ", " ); | | | 1341 | | } | | | 1342 | | | | | 1343 | | break; | | | 1344 | | } | | | 1345 | | | | | 1346 | | case TEV_DATA_USHORT:
| | | 1347 | | { | | | 1348 | | TRC_PVMCKERR( pvm_upkshort( upk_short, num, 1 ),
| | | 1349 | | "Event USHORT Unpack", return( TRC_FALSE ) ); | | | 1350 | | | | | 1351 | | if ( omit ) | | | 1352 | | break; | | | 1353 | | | | | 1354 | | for ( i=0 ; i < num ; i++ ) | | | 1355 | | { | | | 1356 | | fprintf( ID->trace_out, "%u", upk_short[i] ); | | | 1357 | | | | | 1358 | | if ( i < num - 1 ) | | | 1359 | | fprintf( ID->trace_out, ", " ); | | | 1360 | | } | | | 1361 | | | | | 1362 | | break; | | | 1363 | | } | | | 1364 | | | | | 1365 | | case TEV_DATA_STRING:
| | | 1366 | | { | | | 1367 | | if ( num < 1 ) | | | 1368 | | break; | | | 1369 | | | | | 1370 | | strarr = (char **) malloc( (unsigned) num | | | 1371 | | * sizeof(char *) ); | | | 1372 | | trc_memcheck( strarr, "String Array" ); | | | 1373 | | | | | 1374 | | maxlen = 0; | | | 1375 | | | | | 1376 | | for ( i=0 ; i < num ; i++ ) | | | 1377 | | { | | | 1378 | | TRC_PVMCKERR( pvm_upkstr( upk_str ),
| | | 1379 | | "Event STRING Unpack", return( TRC_FALSE ) ); | | | 1380 | | | | | 1381 | | if ( (len = strlen( upk_str )) > maxlen ) | | | 1382 | | maxlen = len; | | | 1383 | | | | | 1384 | | strarr[i] = trc_copy_str( upk_str ); | | | 1385 | | } | | | 1386 | | | | | 1387 | | if ( !omit && newtask | | | 1388 | | && !strcmp( DD->did->name, "TN" ) ) | | | 1389 | | { | | | 1390 | | if ( !(ID->group_tasks) | | | 1391 | | && TRC_GROUPTASK( upk_str ) )
| | | 1392 | | { | | | 1393 | | ignore = TRC_TRUE;
| | | 1394 | | | | | 1395 | | if ( TT != NULL )
| | | 1396 | | { | | | 1397 | | sprintf( msg, | | | 1398 | | "Ignoring Task \"%s\"", upk_str ); | | | 1399 | | | | | 1400 | | trc_status_msg( ID, msg ); | | | 1401 | | | | | 1402 | | TT->tevstatus = TRC_TASK_IGNORE;
| | | 1403 | | } | | | 1404 | | } | | | 1405 | | } | | | 1406 | | | | | 1407 | | if ( !omit ) | | | 1408 | | { | | | 1409 | | fprintf( ID->trace_out, "[%d] { ", maxlen + 1 ); | | | 1410 | | | | | 1411 | | for ( i=0 ; i < num ; i++ ) | | | 1412 | | { | | | 1413 | | fprintf( ID->trace_out, "\"%s\"", strarr[i] ); | | | 1414 | | | | | 1415 | | if ( i < num - 1 ) | | | 1416 | | fprintf( ID->trace_out, ", " ); | | | 1417 | | | | | 1418 | | free( strarr[i] ); | | | 1419 | | } | | | 1420 | | | | | 1421 | | if ( DD->array == TEV_DATA_SCALAR )
| | | 1422 | | fprintf( ID->trace_out, " }" ); | | | 1423 | | } | | | 1424 | | | | | 1425 | | else | | | 1426 | | { | | | 1427 | | for ( i=0 ; i < num ; i++ ) | | | 1428 | | free( strarr[i] ); | | | 1429 | | } | | | 1430 | | | | | 1431 | | free( strarr ); | | | 1432 | | | | | 1433 | | break; | | | 1434 | | } | | | 1435 | | | | | 1436 | | case TEV_DATA_STRUCT_START:
| | | 1437 | | case TEV_DATA_STRUCT_END:
| | | 1438 | | case TEV_DATA_DEFERRED:
| | | 1439 | | { | | | 1440 | | if ( !omit ) | | | 1441 | | printf( "DT Not Impl\n" ); | | | 1442 | | | | | 1443 | | break; | | | 1444 | | } | | | 1445 | | | | | 1446 | | default: | | | 1447 | | { | | | 1448 | | if ( !omit ) | | | 1449 | | printf( "DT Unknown\n" ); | | | 1450 | | } | | | 1451 | | } | | | 1452 | | | | | 1453 | | if ( !omit ) | | | 1454 | | { | | | 1455 | | | | | 1456 | | | | | 1457 | | if ( DD->array == TEV_DATA_ARRAY )
| | | 1458 | | fprintf( ID->trace_out, " }" ); | | | 1459 | | | | | 1460 | | if ( DD->next != NULL )
| | | 1461 | | fprintf( ID->trace_out, ", " ); | | | 1462 | | } | | | 1463 | | | | | 1464 | | DD = DD->next; | | | 1465 | | } | | | 1466 | | | | | 1467 | | TRC_PVMCKERR( pvm_upkint( &marker, 1, 1 ),
|
| | 3047 | | | | | | | | | 3048 | | | | | | TEV_EXCLUSIVE;
| | | 3049 | | | | | | | | | 3050 | | | | | | authfn[0] = 0; | | | 3051 | | | | | | | | | 3052 | | | | | | #ifndef WIN32 | | | 3053 | | | | | | pvmmyupid = getpid(); | | | 3054 | | | | | | #else | | | 3055 | | | | | | pvmmyupid = _getpid(); | | | 3056 | | | | | | #endif | | | 3057 | | | | | | | | | 3058 | | | | | | | | | 3059 | | | | | | | | | 3060 | | | | | | | | | 3061 | | | | | | | | | 3062 | | | | | | | | | 3063 | | | | | | if (p = getenv("PVMEPID")) | | | 3064 | | | | | | cookie = atoi(p); | | | 3065 | | | | | | else | | | 3066 | | | | | | cookie = 0; | | | 3067 | | | | | | | | | 3068 | | | | | | | | | 3069 | | | | | | | | | 3070 | | | | | | #ifndef WIN32 | | | 3071 | | | | | | if ((pvm_useruid = geteuid()) == -1) { | | | 3072 | | | | | | pvmlogerror("can't getuid()\n"); | | | 3073 | | | | | | cc = PvmSysErr;
| | | 3074 | | | | | | goto bail2; | | | 3075 | | | | | | } | | | 3076 | | | | | | pvmchkuid( pvm_useruid ); | | | 3077 | | | | | | #else | | | 3078 | | | | | | if (!username) | | | 3079 | | | | | | username = MyGetUserName(); | | | 3080 | | | | | | #endif | | | 3081 | | | | | | | | | 3082 | | | | | | if (p = getenv("PVMTASKDEBUG")) { | | | 3083 | | | | | | pvmdebmask = pvmstrtoi(p); | | | 3084 | | | | | | if (pvmdebmask) { | | | 3085 | | | | | | pvmlogprintf("task debug mask is 0x%x (%s)\n", | | | 3086 | | | | | | pvmdebmask, debug_flags(pvmdebmask)); | | | 3087 | | | | | | } | | | 3088 | | | | | | } | | | 3089 | | | | | | | | | 3090 | | | | | | #ifndef IMA_MPP | | | 3091 | | | | | | if (cc = mksocs()) | | | 3092 | | | | | | goto bail2; | | | 3093 | | | | | | #endif | | | 3094 | | | | | | | | | 3095 | | | | | | | | | 3096 | | | | | | | | | 3097 | | | | | | | | | 3098 | | | | | | | | | 3099 | | | | | | pvmrxlist = pmsg_new(1); | | | 3100 | | | | | | BZERO((char*)pvmrxlist, sizeof(struct pmsg));
| | | 3101 | | | | | | pvmrxlist->m_link = pvmrxlist->m_rlink = pvmrxlist; | | | 3102 | | | | | | | | | 3103 | | | | | | ttlist = TALLOC(1, struct ttpcb, "tpcb");
| | | 3104 | | | | | | BZERO((char*)ttlist, sizeof(struct ttpcb));
| | | 3105 | | | | | | ttlist->tt_link = ttlist->tt_rlink = ttlist; | | | 3106 | | | | | | | | | 3107 | | | | | | sbf = pvm_setsbuf(pvm_mkbuf(PvmDataFoo));
| | | 3108 | | | | | | rbf = pvm_setrbuf(0); | | | 3109 | | | | | | | | | 3110 | | | | | | | | | 3111 | | | | | | | | | 3112 | | | | | | | | | 3113 | | | | | | | | | 3114 | | | | | | #ifndef IMA_MPP | | | 3115 | | | | | | #ifndef NOPROT | | | 3116 | | | | | | (void)PVMTMPNAMFUN(authfn);
| | | 3117 | | | | | | #ifdef IMA_OS2 | | | 3118 | | | | | | if ((authfd = open(authfn, O_RDWR|O_CREAT|O_EXCL|O_TRUNC, 0600)) == -1) | | | 3119 | | | | | | #else | | | 3120 | | | | | | if ((authfd = open(authfn, O_RDONLY|O_CREAT|O_EXCL|O_TRUNC, 0600)) == -1)
| | | 3121 | | | | | | #endif | | | 3122 | | | | | | { | | | 3123 | | | | | | pvmlogperror(authfn); | | | 3124 | | | | | | pvmlogerror("pvmbeatask() can't creat t-auth file\n"); | | | 3125 | | | | | | cc = PvmSysErr;
| | | 3126 | | | | | | goto bail2; | | | 3127 | | | | | | } | | | 3128 | | | | | | #endif | | | 3129 | | | | | | | | | 3130 | | | | | | | | | 3131 | | | | | | | | | 3132 | | | | | | | | | 3133 | | | | | | | | | 3134 | | | | | | mxfersingle = 1; | | | 3135 | | | | | | prver = TDPROTOCOL;
| | | 3136 | | | | | | pvm_pkint(&prver, 1, 1); | | | | | | | | | ... | | | 3424 | | | | | | pvm_setsbuf(sbf); | | | 3425 | | | | | | | | | 3426 | | | | | | #ifndef IMA_MPP | | | 3427 | | | | | | if (authfd != -1) | | | 3428 | | | | | | (void)close(authfd); | | | 3429 | | | | | | if (authfn[0]) | | | 3430 | | | | | | (void)unlink(authfn); | | | 3431 | | | | | | unmksocs(); | | | 3432 | | | | | | #endif | | | 3433 | | | | | | | | | 3434 | | | | | | bail2: | | | 3435 | | | | | | if (TEV_AMEXCL) {
| | | 3436 | | | | | | TEV_ENDEXCL;
| | | 3437 | | | | | | } | | | 3438 | | | | | | return cc; | | marker is uninitialized | 3439 | | | | | | } |
| | 1266 | | | | ad = (long)np; | | | 1267 | | | | TEV_PACK_LONG( TEV_DID_PDA, TEV_DATA_SCALAR, &ad, 1, 1 );
| | | 1268 | | | | TEV_PACK_INT( TEV_DID_PC, TEV_DATA_SCALAR, &cnt, 1, 1 );
| | | 1269 | | | | TEV_PACK_INT( TEV_DID_PSD, TEV_DATA_SCALAR, &std, 1, 1 );
| | | 1270 | | | | TEV_FIN;
| | | 1271 | | | | } | | | 1272 | | | | } | | | 1273 | | | | | | | 1274 | | | | if (cnt < 0) | | | 1275 | | | | cc = PvmBadParam;
| | | 1276 | | | | else if (!pvmrbuf) | | | 1277 | | | | cc = PvmNoBuf;
| | | 1278 | | | | else | | | 1279 | | | | cc = (pvmrbuf->m_codef->dec_int) (pvmrbuf, (void*)np, cnt, std, sizeof(int)); | | | 1280 | | | | | | | 1281 | | | | if (TEV_AMEXCL) {
|
| | 2999 | | | | | | pvmbeatask() | | | 3000 | | | | | | { | | | 3001 | | | | | | int sbf = 0, rbf = 0; | | | 3002 | | | | | | int prver; | | | 3003 | | | | | | int cookie; | | | 3004 | | | | | | int cc; | | | 3005 | | | | | | char **ep=0; | | | 3006 | | | | | | char authfn[PVMTMPNAMLEN];
| | | 3007 | | | | | | int authfd = -1; | | | 3008 | | | | | | int i; | | | 3009 | | | | | | char buf[16]; | | | 3010 | | | | | | char *p; | | | 3011 | | | | | | struct pvmminfo minfo; | | | 3012 | | | | | | int outtid, outctx, outtag; | | | 3013 | | | | | | int trctid, trcctx, trctag; | | | 3014 | | | | | | int need_trcinfo = 0; | | | 3015 | | | | | | int new_tracer = 0; | | | 3016 | | | | | | char tmask[ 2 * TEV_MASK_LENGTH ];
| | | 3017 | | | | | | int tbuf, topt; | | | 3018 | | | | | | int mid; | | | 3019 | | | | | | #ifdef IMA_BEOLIN | | | 3020 | | | | | | struct hostent *hostaddr; | | | 3021 | | | | | | char namebuf[128]; | | | 3022 | | | | | | #endif | | | 3023 | | | | | | TEV_DECLS
| | | 3024 | | | | | | #ifdef WIN32 | | | 3025 | | | | | | | | | 3026 | | | | | | | | | 3027 | | | | | | | | | 3028 | | | | | | | | | 3029 | | | | | | for (ep=environ;*ep;ep++) | | | 3030 | | | | | | pvmputenv(*ep); | | | 3031 | | | | | | if (WSAStartup(0x0101, &WSAData) != 0) | | | 3032 | | | | | | { | | | 3033 | | | | | | fprintf(stderr,"\nWSAStartup() failed\n"); | | | 3034 | | | | | | ExitProcess(1); | | | 3035 | | | | | | } | | | 3036 | | | | | | | | | 3037 | | | | | | | | | 3038 | | | | | | | | | 3039 | | | | | | #endif | | | 3040 | | | | | | | | | 3041 | | | | | | | | | 3042 | | | | | | | | | 3043 | | | | | | if (pvmmytid != -1) | | | 3044 | | | | | | return 0; | | | 3045 | | | | | | | | | 3046 | | | | | | pvmmydsig = pvmgetdsig(); | | | 3047 | | | | | | | | | 3048 | | | | | | TEV_EXCLUSIVE;
| | | 3049 | | | | | | | | | 3050 | | | | | | authfn[0] = 0; | | | 3051 | | | | | | | | | 3052 | | | | | | #ifndef WIN32 | | | 3053 | | | | | | pvmmyupid = getpid(); | | | 3054 | | | | | | #else | | | 3055 | | | | | | pvmmyupid = _getpid(); | | | 3056 | | | | | | #endif | | | 3057 | | | | | | | | | 3058 | | | | | | | | | 3059 | | | | | | | | | 3060 | | | | | | | | | 3061 | | | | | | | | | 3062 | | | | | | | | | 3063 | | | | | | if (p = getenv("PVMEPID")) | | | 3064 | | | | | | cookie = atoi(p); | | | 3065 | | | | | | else | | | 3066 | | | | | | cookie = 0; | | | 3067 | | | | | | | | | 3068 | | | | | | | | | 3069 | | | | | | | | | 3070 | | | | | | #ifndef WIN32 | | | 3071 | | | | | | if ((pvm_useruid = geteuid()) == -1) { | | | 3072 | | | | | | pvmlogerror("can't getuid()\n"); | | | 3073 | | | | | | cc = PvmSysErr;
| | | 3074 | | | | | | goto bail2; | | | 3075 | | | | | | } | | | 3076 | | | | | | pvmchkuid( pvm_useruid ); | | | 3077 | | | | | | #else | | | 3078 | | | | | | if (!username) | | | 3079 | | | | | | username = MyGetUserName(); | | | 3080 | | | | | | #endif | | | 3081 | | | | | | | | | 3082 | | | | | | if (p = getenv("PVMTASKDEBUG")) { | | | 3083 | | | | | | pvmdebmask = pvmstrtoi(p); | | | 3084 | | | | | | if (pvmdebmask) { | | | 3085 | | | | | | pvmlogprintf("task debug mask is 0x%x (%s)\n", | | | 3086 | | | | | | pvmdebmask, debug_flags(pvmdebmask)); | | | 3087 | | | | | | } | | | 3088 | | | | | | } | | | 3089 | | | | | | | | | 3090 | | | | | | #ifndef IMA_MPP | | | 3091 | | | | | | if (cc = mksocs()) | | | 3092 | | | | | | goto bail2; | | | 3093 | | | | | | #endif | | | 3094 | | | | | | | | | 3095 | | | | | | | | | 3096 | | | | | | | | | 3097 | | | | | | | | | 3098 | | | | | | | | | 3099 | | | | | | pvmrxlist = pmsg_new(1); | | | 3100 | | | | | | BZERO((char*)pvmrxlist, sizeof(struct pmsg));
| | | 3101 | | | | | | pvmrxlist->m_link = pvmrxlist->m_rlink = pvmrxlist; | | | 3102 | | | | | | | | | 3103 | | | | | | ttlist = TALLOC(1, struct ttpcb, "tpcb");
| | | 3104 | | | | | | BZERO((char*)ttlist, sizeof(struct ttpcb));
| | | 3105 | | | | | | ttlist->tt_link = ttlist->tt_rlink = ttlist; | | | 3106 | | | | | | | | | 3107 | | | | | | sbf = pvm_setsbuf(pvm_mkbuf(PvmDataFoo));
| | | 3108 | | | | | | rbf = pvm_setrbuf(0); | | | 3109 | | | | | | | | | 3110 | | | | | | | | | 3111 | | | | | | | | | 3112 | | | | | | | | | 3113 | | | | | | | | | 3114 | | | | | | #ifndef IMA_MPP | | | 3115 | | | | | | #ifndef NOPROT | | | 3116 | | | | | | (void)PVMTMPNAMFUN(authfn);
| | | 3117 | | | | | | #ifdef IMA_OS2 | | | 3118 | | | | | | if ((authfd = open(authfn, O_RDWR|O_CREAT|O_EXCL|O_TRUNC, 0600)) == -1) | | | 3119 | | | | | | #else | | | 3120 | | | | | | if ((authfd = open(authfn, O_RDONLY|O_CREAT|O_EXCL|O_TRUNC, 0600)) == -1)
| | | 3121 | | | | | | #endif | | | 3122 | | | | | | { | | | 3123 | | | | | | pvmlogperror(authfn); | | | 3124 | | | | | | pvmlogerror("pvmbeatask() can't creat t-auth file\n"); | | | 3125 | | | | | | cc = PvmSysErr;
| | | 3126 | | | | | | goto bail2; | | | 3127 | | | | | | } | | | 3128 | | | | | | #endif | | | 3129 | | | | | | | | | 3130 | | | | | | | | | 3131 | | | | | | | | | 3132 | | | | | | | | | 3133 | | | | | | | | | 3134 | | | | | | mxfersingle = 1; | | | 3135 | | | | | | prver = TDPROTOCOL;
| | | 3136 | | | | | | pvm_pkint(&prver, 1, 1); | | | 3137 | | | | | | pvm_pkstr(authfn); | | | 3138 | | | | | | if ((cc = msendrecv(TIDPVMD, TM_CONNECT, SYSCTX_TM)) <= 0)
| | | 3139 | | | | | | goto bail; | | | 3140 | | | | | | pvm_upkint(&prver, 1, 1); | | | 3141 | | | | | | if (prver != TDPROTOCOL) {
| | | 3142 | | | | | | pvmlogprintf("pvmbeatask() t-d protocol mismatch (%d/%d)\n", | | | 3143 | | | | | | TDPROTOCOL, prver);
| | | 3144 | | | | | | cc = PvmSysErr;
| | | 3145 | | | | | | goto bail; | | | 3146 | | | | | | } | | | 3147 | | | | | | pvm_upkint(&cc, 1, 1); | | | 3148 | | | | | | if (!cc) { | | | 3149 | | | | | | pvmlogerror("pvmbeatask() pvmd refuses connection\n"); | | | | | | | | | ... | | | 3408 | | | | | | pvm_setrbuf(rbf); | | | 3409 | | | | | | } | | | 3410 | | | | | | | | | 3411 | | | | | | tev_init(); | | | 3412 | | | | | | | | | 3413 | | | | | | if (TEV_AMEXCL) {
| | | 3414 | | | | | | TEV_ENDEXCL;
| | | 3415 | | | | | | } | | | 3416 | | | | | | return 0; | | | 3417 | | | | | | | | | 3418 | | | | | | bail: | | | 3419 | | | | | | if (pvm_getrbuf() > 0) | | | 3420 | | | | | | pvm_freebuf(pvm_getrbuf()); | | | 3421 | | | | | | if (pvm_getsbuf() > 0) | | | 3422 | | | | | | pvm_freebuf(pvm_getsbuf()); | | | 3423 | | | | | | pvm_setrbuf(rbf); | | | 3424 | | | | | | pvm_setsbuf(sbf); | | | 3425 | | | | | | | | | 3426 | | | | | | #ifndef IMA_MPP | | | 3427 | | | | | | if (authfd != -1) | | | 3428 | | | | | | (void)close(authfd); | | | 3429 | | | | | | if (authfn[0]) | | | 3430 | | | | | | (void)unlink(authfn); | | | 3431 | | | | | | unmksocs(); | | | 3432 | | | | | | #endif | | | 3433 | | | | | | | | | 3434 | | | | | | bail2: | | | 3435 | | | | | | if (TEV_AMEXCL) {
| | | 3436 | | | | | | TEV_ENDEXCL;
| | | 3437 | | | | | | } | | | 3438 | | | | | | return cc; | | marker is uninitialized | 3439 | | | | | | } |
|