Changeset 9236


Ignore:
Timestamp:
Apr 22, 2008, 9:12:41 PM (12 years ago)
Author:
andreas
Message:

Suspending and resuming threads.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/win64/lisp-kernel/thread_manager.c

    r9235 r9236  
    13181318suspend_tcr(TCR *tcr)
    13191319{
     1320  int suspend_count = atomic_incf(&(tcr->suspend_count));
     1321  DWORD rc;
     1322  if (suspend_count == 1) {
     1323#if SUSPEND_RESUME_VERBOSE
     1324    fprintf(stderr,"Suspending 0x%x\n", tcr);
     1325#endif
     1326    rc = SuspendThread(tcr->osid);
     1327    if (rc == -1) {
     1328      wperror("SuspendThread");
     1329      return false;
     1330    }
     1331    return true;
     1332  }
     1333  return false;
    13201334}
    13211335#else
     
    13521366#endif
    13531367
     1368#ifdef WINDOWS
     1369Boolean
     1370tcr_suspend_ack(TCR *tcr)
     1371{
     1372  return true;
     1373}
     1374#else
    13541375Boolean
    13551376tcr_suspend_ack(TCR *tcr)
     
    13651386  return true;
    13661387}
    1367 
     1388#endif
    13681389     
    13691390
     
    13981419}
    13991420         
    1400 
     1421#ifdef WINDOWS
     1422Boolean
     1423resume_tcr(TCR *tcr)
     1424{
     1425  int suspend_count = atomic_decf(&(tcr->suspend_count)), err;
     1426  DWORD rc;
     1427  if (suspend_count == 0) {
     1428    rc = ResumeThread(tcr->osid);
     1429    if (rc == -1) {
     1430      wperror("ResumeThread");
     1431      return false;
     1432    }
     1433    return true;
     1434  }
     1435  return false;
     1436}   
     1437#else
    14011438Boolean
    14021439resume_tcr(TCR *tcr)
     
    14271464  return false;
    14281465}
     1466#endif
    14291467
    14301468void
     
    14571495  LOCK(lisp_global(TCR_AREA_LOCK),current);
    14581496  resumed = resume_tcr(tcr);
     1497#ifndef WINDOWS
    14591498  wait_for_resumption(tcr);
     1499#endif
    14601500  UNLOCK(lisp_global(TCR_AREA_LOCK), current);
    14611501  return resumed;
Note: See TracChangeset for help on using the changeset viewer.