Commit 710d0057 authored by tharris's avatar tharris
Browse files

[project @ 2005-11-21 20:00:55 by tharris]

Files missed from STM implementation changes
parent afd08a9c
......@@ -358,7 +358,7 @@ typedef struct {
StgClosure *volatile current_value;
StgTVarWaitQueue *volatile first_wait_queue_entry;
#if defined(SMP)
struct StgTRecHeader_ *volatile last_update_by;
StgInt volatile num_updates;
#endif
} StgTVar;
......@@ -369,11 +369,11 @@ typedef struct {
StgClosure *expected_value;
StgClosure *new_value;
#if defined(SMP)
struct StgTRecHeader_ *saw_update_by;
StgInt num_updates;
#endif
} TRecEntry;
#define TREC_CHUNK_NUM_ENTRIES 256
#define TREC_CHUNK_NUM_ENTRIES 16
typedef struct StgTRecChunk_ {
StgHeader header;
......
......@@ -46,13 +46,10 @@ extern "C" {
/*----------------------------------------------------------------------
Start of day
------------
GC interaction
--------------
*/
extern void initSTM(void);
extern void stmPreGCHook(void);
/*----------------------------------------------------------------------
......@@ -76,7 +73,7 @@ extern StgTRecHeader *stmStartNestedTransaction(Capability *cap, StgTRecHeader *
* transaction contexts doomed to abort.
*/
extern void stmAbortTransaction(StgTRecHeader *trec);
extern void stmAbortTransaction(Capability *cap, StgTRecHeader *trec);
/*
* Ensure that a subsequent commit / validation will fail. We use this
......@@ -87,7 +84,7 @@ extern void stmAbortTransaction(StgTRecHeader *trec);
* in case other threads' updates make it valid in the mean time.
*/
extern void stmCondemnTransaction(StgTRecHeader *trec);
extern void stmCondemnTransaction(Capability *cap, StgTRecHeader *trec);
/*
* Return the trec within which the specified trec was created (not
......@@ -165,13 +162,15 @@ extern StgBool stmCommitNestedTransaction(Capability *cap, StgTRecHeader *trec);
* Test whether the current transaction context is valid and, if so,
* start the thread waiting for updates to any of the tvars it has
* ready from and mark it as blocked. It is an error to call stmWait
* if the thread is already waiting.
* if the thread is already waiting.
*/
extern StgBool stmWait(Capability *cap,
StgTSO *tso,
StgTRecHeader *trec);
extern void stmWaitUnlock(Capability *cap, StgTRecHeader *trec);
/*
* Test whether the current transaction context is valid and, if so,
* leave the thread waiting and mark it as blocked again. If the
......@@ -180,7 +179,7 @@ extern StgBool stmWait(Capability *cap,
* thread is not waiting.
*/
extern StgBool stmReWait(StgTSO *tso);
extern StgBool stmReWait(Capability *cap, StgTSO *tso);
/*----------------------------------------------------------------------
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment