Changeset 6c70ef in git
- Timestamp:
- Nov 3, 2010, 5:56:28 PM (13 years ago)
- Branches:
- (u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
- Children:
- 5ea590e388164e5c1a86e89caca6ca5d46eb37e9
- Parents:
- 8a4e22c96f254f73c703a940d895136b87451b5c
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/extra.cc
r8a4e22 r6c70ef 629 629 { 630 630 Werror( "expected valid file name as a string"); 631 return FALSE; 631 return TRUE; 632 } 633 } 634 /*==================== forking experiments ======================*/ 635 if(strcmp(sys_cmd, "waitforssilinks")==0) 636 { 637 if ((h != NULL) && (h->Typ() == LIST_CMD) && 638 (h->next != NULL) && (h->next->Typ() == INT_CMD)) 639 { 640 lists L = (lists)h->Data(); 641 int timeMillisec = (int)(long)h->next->Data(); 642 int n = slStatusSsiL(L, timeMillisec * 1000); 643 res->rtyp = INT_CMD; 644 res->data = (void*)n; 645 return FALSE; 646 } 647 else 648 { 649 Werror( "expected list of open ssi links and timeout"); 650 return TRUE; 632 651 } 633 652 } -
Singular/iparith.cc
r8a4e22 r6c70ef 207 207 208 208 /*=================== operations with 2 args.: static proc =================*/ 209 static BOOLEAN jjWAIT1ST2(leftv res, leftv u, leftv v) 210 { 211 lists Lforks = (lists)u->Data(); 212 int t = (int)(long)v->Data(); 213 int i = slStatusSsiL(Lforks, t*1000); 214 if ( i < 0 ) i = 0; 215 res->data = (void*)(long)i; 216 return FALSE; 217 } 218 /* returns 1 iff all forks are finished; 0 otherwise */ 219 static BOOLEAN jjWAITALL2(leftv res, leftv u, leftv v) 220 { 221 lists Lforks = (lists)u->Data(); 222 int timeout = 1000*(int)(long)v->Data(); 223 lists oneFork=(lists)omAllocBin(slists_bin); 224 oneFork->Init(1); 225 int i; 226 int t = getTimer(); 227 int ret = 1; 228 for (int j = 0; j <= Lforks->nr; j++) 229 { 230 oneFork->m[0].Copy(&Lforks->m[j]); 231 i = slStatusSsiL(oneFork, timeout); 232 if (i == 1) 233 { 234 timeout = timeout - getTimer() + t; 235 } 236 else { ret = 0; j = Lforks->nr+1; /* terminate the for loop */ } 237 omFreeSize((ADDRESS)oneFork->m,sizeof(sleftv)); 238 } 239 omFreeBin((ADDRESS)oneFork, slists_bin); 240 res->data = (void*)(long)ret; 241 return FALSE; 242 } 243 209 244 static BOOLEAN jjOP_IV_I(leftv res, leftv u, leftv v) 210 245 { … … 3686 3721 3687 3722 /*=================== operations with 1 arg.: static proc =================*/ 3723 3724 BOOLEAN jjWAIT1ST1(leftv res, leftv a) 3725 { 3726 lists Lforks = (lists)a->Data(); 3727 int i = slStatusSsiL(Lforks, -1); 3728 while (i <= 0) i = slStatusSsiL(Lforks, 10000000); /* redo this all 10 seconds */ 3729 res->data = (void*)(long)i; 3730 return FALSE; 3731 } 3732 3733 BOOLEAN jjWAITALL1(leftv res, leftv a) 3734 { 3735 lists Lforks = (lists)a->Data(); 3736 lists oneFork=(lists)omAllocBin(slists_bin); 3737 oneFork->Init(1); 3738 int i; 3739 for (int j = 0; j <= Lforks->nr; j++) 3740 { 3741 oneFork->m[0].Copy(&Lforks->m[j]); 3742 i = slStatusSsiL(oneFork, -1); 3743 while (i != 1) i = slStatusSsiL(oneFork, 10000000); /* redo this all 10 seconds */ 3744 omFreeSize((ADDRESS)oneFork->m,sizeof(sleftv)); 3745 } 3746 omFreeBin((ADDRESS)oneFork, slists_bin); 3747 return FALSE; 3748 } 3749 3688 3750 static BOOLEAN jjDUMMY(leftv res, leftv u) 3689 3751 { -
Singular/ssiLink.cc
r8a4e22 r6c70ef 1117 1117 struct timeval wt; 1118 1118 int i; 1119 for(i=L->nr -1; i>=0; i--)1119 for(i=L->nr; i>=0; i--) 1120 1120 { 1121 1121 if (L->m[i].Typ()!=LINK_CMD) … … 1125 1125 { WerrorS("all links must be open"); return -2;} 1126 1126 if ((strcmp(l->m->type,"ssi")!=0) 1127 && (strcmp(l->mode,"fork")!=0) || (strcmp(l->mode,"tcp")!=NULL))1127 || ((strcmp(l->mode,"fork")!=0) && (strcmp(l->mode,"tcp")!=NULL))) 1128 1128 { WerrorS("all links must be of type ssi:fork or ssi:tcp"); return -2;} 1129 1129 d=(ssiInfo*)l->data; … … 1131 1131 if (d->fd_read> max_fd) max_fd=d->fd_read; 1132 1132 } 1133 max_fd++; 1133 1134 struct timeval *wt_ptr=&wt; 1134 1135 if (timeout== -1) … … 1152 1153 int j=0; 1153 1154 while (j<=max_fd) { if (FD_ISSET(j,&mask)) break; j++; } 1154 for(i=L->nr -1; i>=0; i--)1155 for(i=L->nr; i>=0; i--) 1155 1156 { 1156 1157 l=(si_link)L->m[i].Data(); -
Singular/table.h
r8a4e22 r6c70ef 266 266 ,{D(jjLOAD1), LOAD_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING} 267 267 ,{D(loNewtonP), NEWTONPOLY_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 268 ,{D(jjWAIT1ST1), WAIT1ST_CMD, INT_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING} 269 ,{D(jjWAITALL1), WAITALL_CMD, NONE, LIST_CMD , ALLOW_PLURAL |ALLOW_RING} 268 270 #ifdef HAVE_FANS 269 271 //,{D(jjDELMCONE1), DELMCONE_CMD, NONE, FAN_CMD , ALLOW_PLURAL |ALLOW_RING} … … 644 646 ,{D(jjVARSTR2), VARSTR_CMD, STRING_CMD, RING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 645 647 ,{D(jjVARSTR2), VARSTR_CMD, STRING_CMD, QRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 648 ,{D(jjWAIT1ST2), WAIT1ST_CMD, INT_CMD, LIST_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 649 ,{D(jjWAITALL2), WAITALL_CMD, INT_CMD, LIST_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING} 646 650 ,{D(jjWEDGE), WEDGE_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, NO_PLURAL |ALLOW_RING} 647 651 #ifdef HAVE_FANS … … 1076 1080 { "vdim", 0, VDIM_CMD , CMD_1}, 1077 1081 { "vector", 0, VECTOR_CMD , RING_DECL}, 1082 { "waitfirst", 0, WAIT1ST_CMD , CMD_12}, 1083 { "waitall", 0, WAITALL_CMD , CMD_12}, 1078 1084 { "wedge", 0, WEDGE_CMD , CMD_2}, 1079 1085 { "weight", 0, WEIGHT_CMD , CMD_1}, -
Singular/tok.h
r8a4e22 r6c70ef 159 159 VARIABLES_CMD, 160 160 VARSTR_CMD, 161 WAIT1ST_CMD, 162 WAITALL_CMD, 161 163 WRITE_CMD, 162 164 /* start system var section: VECHO */
Note: See TracChangeset
for help on using the changeset viewer.