| true | 891 | | pvm_grphostinfo(group, hosttid, coord, nmem_onhost, nhosts) | | | 892 | | char *group; | | | 893 | | int hosttid, *coord, *nmem_onhost, *nhosts; | | | 894 | | { | | | 895 | | GROUP_STRUCT_PTR sgroup; | | | 896 | | int foo; | | | 897 | | int info; | | | 898 | | int rbuf, rc; | | | 899 | | int sbuf, state, stid; | | | 900 | | int x; | | | 901 | | int savectx; | | | 902 | | | | | 903 | | | | | 904 | | | | | 905 | | info = gs_host_char(group, sgroup_list, &ngroups, hosttid, | | | 906 | | coord, nmem_onhost, nhosts, &foo); | | | 907 | | | | | 908 | | if (info != PvmOk )
| | | 909 | | { | | | 910 | | if ( (stid = gs_getgstid()) < 0) { | | | 911 | | info = PvmSysErr;
| | | 912 | | | | | 913 | | return( info ); | | | 914 | | } | | | 915 | | | | | 916 | | | | | 917 | | savectx = pvm_setcontext( SYSCTX_DG );
| | | 918 | | | | | 919 | | sbuf = pvm_mkbuf(PvmDataDefault);
| | | 920 | | | | | 921 | | rbuf = pvm_setrbuf(0); | | | 922 | | | | | 923 | | sbuf = pvm_setsbuf(sbuf); | | | 924 | | | | | 925 | | if ((info = pvm_pkstr(group)) < 0 ) | | | 926 | | goto cleanup; | | | 927 | | | | | 928 | | if ((info = pvm_pkint(&hosttid,1,1)) < 0) | | | 929 | | goto cleanup; | | | 930 | | | | | 931 | | if ((info = pvm_send(stid,HOSTCHAR)) < 0)
| | | 932 | | goto cleanup; | | | 933 | | | | | 934 | | if ((info = pvm_trecv(stid,HOSTCHAR,pvmgs_tmout)) <= 0)
| | | 935 | | goto cleanup; | | | 936 | | | | | 937 | | if ((info = pvm_upkint(nhosts,1,1)) < 0) | | | 938 | | goto cleanup; | | | 939 | | | | | 940 | | if ((info = pvm_upkint(nmem_onhost,1,1)) < 0) | | | 941 | | goto cleanup; | | | 942 | | | | | 943 | | if ((info = pvm_upkint(coord,1,1)) < 0) | | | 944 | | goto cleanup; | | | 945 | | |
| | 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; | | state 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"); | | | 3150 | | | | | | cc = PvmSysErr;
| | | 3151 | | | | | | goto bail; | | | 3152 | | | | | | } | | | 3153 | | | | | | | | | 3154 | | | | | | | | | 3155 | | | | | | | | | 3156 | | | | | | | | | 3157 | | | | | | | | | 3158 | | | | | | #ifndef NOPROT | | | 3159 | | | | | | | | | 3160 | | | | | | #ifdef IMA_BEOLIN | | | 3161 | | | | | | sleep(15); | | | 3162 | | | | | | #endif | | | 3163 | | | | | | | | | 3164 | | | | | | if ((cc = read(authfd, (char*)&cc, 1)) == -1) { | | | 3165 | | | | | | pvmlogperror("pvmbeatask() read authfile"); | | | 3166 | | | | | | cc = PvmSysErr;
| | | 3167 | | | | | | goto bail; | | | 3168 | | | | | | } | | | 3169 | | | | | | if (cc != 1) { | | | 3170 | | | | | | pvmlogerror("pvmbeatask() pvmd didn't validate itself\n"); | | | 3171 | | | | | | cc = PvmSysErr;
| | | 3172 | | | | | | goto bail; | | | 3173 | | | | | | } | | | 3174 | | | | | | (void)close(authfd); | | | 3175 | | | | | | (void)unlink(authfn); | | | 3176 | | | | | | | | | 3177 | | | | | | pvm_upkstr(authfn); | | | 3178 | | | | | | if ((authfd = open(authfn, O_WRONLY, 0)) == -1) {
| | | 3179 | | | | | | pvmlogperror(authfn); | | | 3180 | | | | | | pvmlogerror("pvmbeatask() failed to open d-auth file\n"); | | | 3181 | | | | | | authfn[0] = 0; | | | 3182 | | | | | | cc = PvmSysErr;
| | | 3183 | | | | | | goto bail; | | | 3184 | | | | | | } | | | 3185 | | | | | | cc = write(authfd, authfn, 1); | | | 3186 | | | | | | (void)close(authfd); | | | 3187 | | | | | | if (cc != 1) { | | | 3188 | | | | | | if (cc == -1) | | | 3189 | | | | | | pvmlogperror(authfn); | | | 3190 | | | | | | pvmlogerror("pvmbeatask() can't write d-auth file\n"); | | | 3191 | | | | | | authfn[0] = 0; | | | 3192 | | | | | | cc = PvmSysErr;
| | | 3193 | | | | | | goto bail; | | | 3194 | | | | | | } | | | 3195 | | | | | | authfd = -1; | | | 3196 | | | | | | authfn[0] = 0; | | | 3197 | | | | | | | | | 3198 | | | | | | #endif | | | 3199 | | | | | | | | | 3200 | | | | | | | | | 3201 | | | | | | | | | 3202 | | | | | | | | | 3203 | | | | | | | | | 3204 | | | | | | pvm_initsend(PvmDataFoo);
| | | 3205 | | | | | | pvm_pkint(&pvmmyupid, 1, 1); | | | 3206 | | | | | | pvm_pkint(&cookie, 1, 1); | | | 3207 | | | | | | if ( pvmmytaskname != NULL )
| | | 3208 | | | | | | pvm_pkstr(pvmmytaskname); | | | 3209 | | | | | | if ((cc = msendrecv(TIDPVMD, TM_CONN2, SYSCTX_TM)) <= 0)
| | | 3210 | | | | | | goto bail; | | | 3211 | | | | | | pvm_upkint(&cc, 1, 1); | | | 3212 | | | | | | if (!cc) { | | | 3213 | | | | | | pvmlogerror("pvmbeatask() pvmd refuses connection\n"); | | | 3214 | | | | | | cc = PvmSysErr;
| | | 3215 | | | | | | goto bail; | | | 3216 | | | | | | } | | | 3217 | | | | | | #endif | | | 3218 | | | | | | | | | 3219 | | | | | | #ifdef IMA_MPP | | | 3220 | | | | | | pvm_mpp_beatask(&pvmmytid, &pvmmyptid, &outtid, &outctx, | | | | | | | | | ... | | | 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; | | state is uninitialized | 3439 | | | | | | } |
|