Outgoing socket I/O
[IRC.git] / Robust / src / Runtime / runtime.c
index cf8a64ead7bed73b571edd2acaeab2c408cd4a98..7a7de4651e0a0a47c67a27cd4251fe6cd417a054 100644 (file)
@@ -124,11 +124,22 @@ int comparetpd(struct taskparamdescriptor *ftd1, struct taskparamdescriptor *ftd
 
 void flagorand(void * ptr, int ormask, int andmask) {
   int oldflag=((int *)ptr)[1];
-  struct RuntimeHash *flagptr=(struct RuntimeHash *)(((int*)ptr)[2]);
   int flag=ormask|oldflag;
   flag&=andmask;
   if (flag==oldflag) /* Don't do anything */
     return;
+  else flagbody(ptr, flag);
+}
+
+void flagorandinit(void * ptr, int ormask, int andmask) {
+  int oldflag=((int *)ptr)[1];
+  int flag=ormask|oldflag;
+  flag&=andmask;
+  flagbody(ptr,flag);
+}
+
+void flagbody(void *ptr, int flag) {
+  struct RuntimeHash *flagptr=(struct RuntimeHash *)(((int*)ptr)[2]);
   ((int*)ptr)[1]=flag;
 
   /*Remove object from all queues */