/* ----------------------------------------------------------------------------
- * $Id: RtsAPI.c,v 1.33 2002/02/15 07:40:10 sof Exp $
+ * $Id: RtsAPI.c,v 1.36 2002/08/16 14:30:21 simonmar Exp $
*
* (c) The GHC Team, 1998-2001
*
#include "OSThreads.h"
#include "Schedule.h"
-#if defined(THREADED_RTS)
-#define WAIT_MAIN_THREAD(tso,ret) waitThread_(tso,ret,rtsFalse)
-#else
-#define WAIT_MAIN_THREAD(tso,ret) waitThread(tso,ret)
-#endif
-
#if defined(RTS_SUPPORTS_THREADS)
/* Cheesy locking scheme while waiting for the
* RTS API to change.
HaskellObj
rts_apply (HaskellObj f, HaskellObj arg)
{
- StgAP_UPD *ap = (StgAP_UPD *)alloc(AP_sizeW(1));
- SET_HDR(ap, &stg_AP_UPD_info, CCS_SYSTEM);
- ap->n_args = 1;
- ap->fun = f;
- ap->payload[0] = arg;
- return (StgClosure *)ap;
+ StgClosure *ap;
+
+ ap = (StgClosure *)alloc(sizeofW(StgClosure) + 2);
+ SET_HDR(ap, (StgInfoTable *)&stg_ap_2_upd_info, CCS_SYSTEM);
+ ap->payload[0] = f;
+ ap->payload[1] = arg;
+ return (StgClosure *)ap;
}
/* ----------------------------------------------------------------------------
tso = createGenThread(RtsFlags.GcFlags.initialStkSize, p);
releaseAllocLock();
- scheduleExtThread(tso);
- return waitThread(tso, ret);
+ return scheduleWaitThread(tso,ret);
}
SchedulerStatus
tso = createGenThread(stack_size, p);
releaseAllocLock();
- scheduleExtThread(tso);
- return waitThread(tso, ret);
+ return scheduleWaitThread(tso,ret);
}
/*
tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p);
releaseAllocLock();
- scheduleExtThread(tso);
- return waitThread(tso, ret);
+ return scheduleWaitThread(tso,ret);
}
/*
tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p);
releaseAllocLock();
scheduleThread(tso);
- return WAIT_MAIN_THREAD(tso, ret);
+ return waitThread(tso, ret);
}
/*
p = (StgClosure *)deRefStablePtr(s);
tso = createStrictIOThread(RtsFlags.GcFlags.initialStkSize, p);
releaseAllocLock();
- scheduleExtThread(tso);
- stat = waitThread(tso, &r);
+ stat = scheduleWaitThread(tso,&r);
if (stat == Success) {
ASSERT(r != NULL);
tso = createIOThread(stack_size, p);
releaseAllocLock();
- scheduleExtThread(tso);
- return waitThread(tso, ret);
+ return scheduleWaitThread(tso,ret);
}
/* Convenience function for decoding the returned status. */