Starting remote thread : Just test
authoradash <adash>
Thu, 13 Sep 2007 00:16:25 +0000 (00:16 +0000)
committeradash <adash>
Thu, 13 Sep 2007 00:16:25 +0000 (00:16 +0000)
Robust/src/Analysis/Locality/LocalityAnalysis.java
Robust/src/ClassLibrary/FileOutputStream.java
Robust/src/ClassLibrary/ThreadDSM.java
Robust/src/Runtime/DSTM/docs/messages
Robust/src/Runtime/DSTM/interface/dstm.h
Robust/src/Runtime/DSTM/interface/dstmserver.c
Robust/src/Runtime/DSTM/interface/plookup.c
Robust/src/Runtime/DSTM/interface/trans.c
Robust/src/Runtime/thread.c

index 641843e9dac93aa983289a2f76f8f8275b6d9530..c2a9efd7d6c168be83beb4b90ae408bdb49598df 100644 (file)
@@ -373,9 +373,9 @@ public class LocalityAnalysis {
                    throw new Error("Starting thread on local object not allowed in context:\n"+currlb.getExplanation());
                if(thistype.equals(CONFLICT))
                    throw new Error("Using type that can be either local or global in context:\n"+currlb.getExplanation());
-               if(thistype.equals(GLOBAL)&&!isatomic)
+               if(runmethodset==null&&thistype.equals(GLOBAL)&&!isatomic)
                    throw new Error("Using global object outside of transaction in context:\n"+currlb.getExplanation());
-               if (isnative&&thistype.equals(GLOBAL))
+               if (runmethodset==null&&isnative&&thistype.equals(GLOBAL))
                    throw new Error("Potential call to native method "+md+" on global objects:\n"+currlb.getExplanation());
                lb.setGlobalThis(thistype);
            } 
index 031634ff1930e1217222795a30505880b601f7f6..d5b1f6bf9f03694ec56275a4f341c41448a8c312 100644 (file)
@@ -11,12 +11,15 @@ public class FileOutputStream {
        if(mode==1)
                fd=nativeOpen(pathname.getBytes());
     }
-
-
+    
     public FileOutputStream(File path) {
        fd=nativeOpen(path.getPath().getBytes());
     }
 
+    public FileOutputStreamOpen(String  pathname) {
+        fd = nativeOpen(pathname.getBytes());
+    }
+
     private static native int nativeOpen(byte[] filename);
     private static native int nativeAppend(byte[] filename);
     private static native void nativeWrite(int fd, byte[] array);
index cc659e7a2455eaed189460345b3185203567c7cb..7498028298042307f9619560477196b6266a30ae 100644 (file)
@@ -1,14 +1,8 @@
 public class Thread {
+    public native void start(int mid);
 
-       public void start(int mid) {
-               remotethreadstart(mid);
-       }
-
-       public native static void sleep(long millis);
-
-       public void run() {
-
-       }
-       
-       public  native void remotethreadstart(int mid);
+    public native static void sleep(long millis);
+    
+    public void run() {
+    }
 }
index dbe9c94e2a8dd1316b61f2f68ce890a4b3b575d7..993a16e82e55dfcda6ed8ac2978b4774946ebff2 100644 (file)
@@ -10,12 +10,14 @@ Client messages:
 <TRANS_COMMIT      - control
 
 Server messages:
->OBJECT_FOUND      - control, object
+>OBJECT_FOUND      - control, sizeof object, object
 >OBJECT_NOT_FOUND  - control
 >OBJECTS_FOUND     - control, number of objects, objects
 >OBJECTS_NOT_FOUND - control, number of objects, oids
 >TRANS_AGREE       - control
 >TRANS_DISAGREE    - control
+>TRANS_AGREE_BUT_MISSING_OBJECTS - control, number of objects, objects
+>TRANS_SOFT_ABORT  - control, control bit identifying is missing objects present of not, number of objects, objects
 >TRANS_SUCCESSFUL  - control
 
 possible conversations (conversation means a tcp connection is maintained throughout):
index 59de24855e1229e482dd433caefffe418f16af08..69408f029fd8fc6741e80bcad39c5c6d7ff2770b 100644 (file)
@@ -208,6 +208,7 @@ int dstmStartup(const char *);
 void transInit();
 int processConfigFile();
 void addHost(unsigned int);
+void mapObjMethod(unsigned short);
 
 void randomdelay(void);
 transrecord_t *transStart();
@@ -221,7 +222,7 @@ char sendResponse(thread_data_array_t *, int); //Sends control message back to P
 void *getRemoteObj(transrecord_t *, unsigned int, unsigned int);
 int transAbortProcess(void *, unsigned int *, int, int);
 int transComProcess(void*, unsigned int *, unsigned int *, unsigned int *, int, int, int);
-void prefetch(int, unsigned int *, short *, short*);
+void prefetch(int, unsigned int *, unsigned short *, short*);
 void *transPrefetch(void *);
 void *mcqProcess(void *);
 void checkPrefetchTuples(prefetchqelem_t *);
index 5b99b3a6e3b39cea67889cd9651013d076ab8b7d..e8f0718e6762a81c533c89dd3f0aa2c460abf1b1 100644 (file)
@@ -659,3 +659,4 @@ int prefetchReq(int acceptfd) {
        }
        return 0;
 }
+
index 27abe6ac512af7e0204a672dd795a5d8daa8360f..b62aa661172d2b20f25a7df5c25c54fbcd5c13dc 100644 (file)
@@ -54,7 +54,7 @@ plistnode_t *pInsert(plistnode_t *pile, objheader_t *headeraddr, unsigned int mi
                                tmp->oidcreated[tmp->numcreated] = OID(headeraddr);
                                tmp->numcreated = tmp->numcreated + 1;
                                tmp->sum_bytes += sizeof(objheader_t) + classsize[TYPE(headeraddr)];
-                       }       else if (STATUS(headeraddr) & DIRTY) {
+                       }else if (STATUS(headeraddr) & DIRTY) {
                                tmp->oidmod[tmp->nummod] = OID(headeraddr);
                                tmp->nummod = tmp->nummod + 1;
                                tmp->sum_bytes += sizeof(objheader_t) + classsize[TYPE(headeraddr)];
@@ -93,6 +93,8 @@ plistnode_t *pInsert(plistnode_t *pile, objheader_t *headeraddr, unsigned int mi
                pile = ptr;
        }
 
+       /* Clear Flags */
+
        STATUS(headeraddr) &= ~(NEW);
        STATUS(headeraddr) &= ~(DIRTY);
 
index b08440e828effe5134b464a5956789e1cb8756f7..929ab25021f775307246da915283f9c1ac64f236 100644 (file)
@@ -62,7 +62,7 @@ inline int findmax(int *array, int arraylength) {
 }
 /* This function is a prefetch call generated by the compiler that
  * populates the shared primary prefetch queue*/
-void prefetch(int ntuples, unsigned int *oids, short *endoffsets, short *arrayfields) {
+void prefetch(int ntuples, unsigned int *oids, unsigned short *endoffsets, short *arrayfields) {
        int qnodesize;
        int len = 0;
 
@@ -1630,7 +1630,7 @@ int processConfigFile()
                return -1;
        }
 #ifdef MAC
-       myIpAddr = getMyIpAddr("en1");
+       myIpAddr = getMyIpAddr("en0");
 #else
        myIpAddr = getMyIpAddr("eth0");
 #endif
index b070cbb01bc46cc0273a5d90feefffdd29aea333..19996537a3fcd2381d06eafb606eaa7cbe31b2c1 100644 (file)
@@ -118,3 +118,9 @@ void CALL01(___Thread______nativeCreate____, struct ___Thread___ * ___this___) {
   pthread_attr_destroy(&nattr);
 }
 #endif
+
+#ifdef DSTM
+void CALL12(___Thread______start____I, int ___mid___, struct ___Thread___ * ___this___, int ___mid___) {
+  startRemoteThread((unsigned int *)VAR(___this___), ___mid___);
+}
+#endif