Mercurial > repos > rhope
view runtime/transaction.h @ 139:a68e6828d896
Global stores and transactions are working. Definately leaks memory on retries. Probably a fair number of bugs to work out. However, a basic test program works.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 19 Nov 2010 04:04:14 -0500 |
parents | 1411de6050e1 |
children | ba35ab624ec2 |
line wrap: on
line source
#ifndef TRANSACTION_H_ #define TRANSACTION_H_ #include "object.h" #include "thread.h" typedef struct { object header; object * data; int32_t version; } mutable_object; typedef struct trans_cell { mutable_object *obj; struct trans_cell *parent; object *local_data; int32_t orig_version; int32_t local_version; } trans_cell; typedef struct transaction { struct transaction *parent; rh_mutex(lock) struct transaction *chain; int32_t num_cells; trans_cell cells[1]; } transaction; #include "context.h" trans_cell * find_obj_cell(transaction * trans, mutable_object * to_find); void begin_transaction(struct context * ct, int numobjs,...); int32_t commit_transaction(struct context * ct, int32_t readonly); void prep_retry(struct context * ct); #endif //TRANSACTION_H_