Make housekeeping methods "expedited", to allow housekeeping messages
authorOrion Lawlor <olawlor@acm.org>
Tue, 31 Aug 2004 17:41:12 +0000 (17:41 +0000)
committerOrion Lawlor <olawlor@acm.org>
Tue, 31 Aug 2004 17:41:12 +0000 (17:41 +0000)
to bypass prioritized user messages.  This should prevent the
"stale messages sent to nonexistent element" problem during POSE startup.

Also renamed "migrate" and "migrateIncoming" to more informative
"emigrate" and "immigrate".

src/ck-core/cklocation.C
src/ck-core/cklocation.ci
src/ck-core/cklocation.h

index 39a00444ce7d6a3e3e363c60383c7cd48865c353..59bf360d57c56b7ebeb9e563652505f9d8be73d4 100644 (file)
@@ -738,7 +738,7 @@ CkLocRec_local::~CkLocRec_local()
 void CkLocRec_local::migrateMe(int toPe) //Leaving this processor
 {
        //This will pack us up, send us off, and delete us
-       myLocMgr->migrate(this,toPe);
+       myLocMgr->emigrate(this,toPe);
 }
 
 #if CMK_LBDB_ON
@@ -1582,8 +1582,8 @@ void CkLocMgr::migratableList(CkLocRec_local *rec, CkVec<CkMigratable *> &list)
         }
 }
 
-/// Migrate this element to another processor.
-void CkLocMgr::migrate(CkLocRec_local *rec,int toPe)
+/// Migrate this local element away to another processor.
+void CkLocMgr::emigrate(CkLocRec_local *rec,int toPe)
 {
        CK_MAGICNUMBER_CHECK
        if (toPe==CkMyPe()) return; //You're already there!
@@ -1635,7 +1635,7 @@ void CkLocMgr::migrate(CkLocRec_local *rec,int toPe)
        DEBM((AA"Migrated index size %s\n"AB,idx2str(idx)));    
 
 //Send off message and delete old copy
-       thisProxy[toPe].migrateIncoming(msg);
+       thisProxy[toPe].immigrate(msg);
        duringMigration=CmiTrue;
        delete rec; //Removes elements, hashtable entries, local index
        duringMigration=CmiFalse;
@@ -1644,7 +1644,10 @@ void CkLocMgr::migrate(CkLocRec_local *rec,int toPe)
        informHome(idx,toPe);
 }
 
-void CkLocMgr::migrateIncoming(CkArrayElementMigrateMessage *msg)
+/**
+  Migrating array element is arriving on this processor.
+*/
+void CkLocMgr::immigrate(CkArrayElementMigrateMessage *msg)
 {
        CkArrayMessage *amsg=(CkArrayMessage *)msg;
        const CkArrayIndex &idx=msg->idx;
@@ -1657,7 +1660,7 @@ void CkLocMgr::migrateIncoming(CkArrayElementMigrateMessage *msg)
        if (nMsgMan>nManagers) {
                //Some array managers haven't registered yet-- throw it back
                DEBM((AA"Busy-waiting for array registration on migrating %s\n"AB,idx2str(idx)));
-               thisProxy[CkMyPe()].migrateIncoming(msg);
+               thisProxy[CkMyPe()].immigrate(msg);
                return;
        }
 
index ee0f97569e336bc16f3b27e8f1fb71d7d2265845..c9f5edd3b5b2038075d2b29bbb147f3f277f90c1 100644 (file)
@@ -8,8 +8,8 @@ module CkLocation {
   group [migratable] CkLocMgr {
        entry CkLocMgr(CkGroupID map,CkGroupID _lbdb,int numInitial);
        entry void deliverInline(CkMessage *m);
-       entry void migrateIncoming(CkArrayElementMigrateMessage *msg);
-       entry void updateLocation(CkArrayIndexMax idx,int nowOnPe);
+       entry [expedited] void immigrate(CkArrayElementMigrateMessage *msg);
+       entry [expedited] void updateLocation(CkArrayIndexMax idx,int nowOnPe);
        entry void reclaimRemote(CkArrayIndexMax idx,int deletedOnPe);
        
        //Load balancing:
index 7999edc67a71afc306833ddbdd630f780936d6c5..b71d989961017f6df671888c6fe731af2e9daaee 100644 (file)
@@ -510,7 +510,7 @@ public:
        }
 
        //Migrate us to another processor
-       void migrate(CkLocRec_local *rec,int toPe);
+       void emigrate(CkLocRec_local *rec,int toPe);
 
 #if CMK_LBDB_ON
        LBDatabase *getLBDB(void) const { return the_lbdb; }
@@ -549,7 +549,7 @@ public:
        void resume(const CkArrayIndex &idx, PUP::er &p);
 
 //Communication:
-       void migrateIncoming(CkArrayElementMigrateMessage *msg);
+       void immigrate(CkArrayElementMigrateMessage *msg);
        void updateLocation(const CkArrayIndexMax &idx,int nowOnPe);
        void reclaimRemote(const CkArrayIndexMax &idx,int deletedOnPe);
        void dummyAtSync(void);