X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FSchedule.c;h=f5cb5686005d303ae2eedb652a4c9e152e7b4f2e;hb=ab8c38b97b62a8ff428b536715d50207571345be;hp=7c945e0ec3c1dd967d83f4b1ae160cc9686fbed8;hpb=c226846642a2201762ee34f6f71b42f13bc46629;p=ghc-hetmet.git diff --git a/rts/Schedule.c b/rts/Schedule.c index 7c945e0..f5cb568 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -1874,9 +1874,9 @@ scheduleThread(Capability *cap, StgTSO *tso) void scheduleThreadOn(Capability *cap, StgWord cpu USED_IF_THREADS, StgTSO *tso) { -#if defined(THREADED_RTS) tso->flags |= TSO_LOCKED; // we requested explicit affinity; don't // move this thread from now on. +#if defined(THREADED_RTS) cpu %= RtsFlags.ParFlags.nNodes; if (cpu == cap->no) { appendToRunQueue(cap,tso); @@ -2069,6 +2069,16 @@ freeScheduler( void ) #endif } +void markScheduler (evac_fn evac USED_IF_NOT_THREADS, + void *user USED_IF_NOT_THREADS) +{ +#if !defined(THREADED_RTS) + evac(user, (StgClosure **)(void *)&blocked_queue_hd); + evac(user, (StgClosure **)(void *)&blocked_queue_tl); + evac(user, (StgClosure **)(void *)&sleeping_queue); +#endif +} + /* ----------------------------------------------------------------------------- performGC