22 lines
978 B
C
22 lines
978 B
C
#ifndef ALLOCATION_POLICY_H
|
|
#define ALLOCATION_POLICY_H
|
|
|
|
struct allocationPolicy;
|
|
typedef struct allocationPolicy allocationPolicy;
|
|
|
|
typedef struct availablePage {
|
|
int freespace;
|
|
int pageid;
|
|
int lockCount; // Number of active transactions that have alloced or dealloced from this page.
|
|
} availablePage;
|
|
|
|
allocationPolicy * allocationPolicyInit();
|
|
void allocationPolicyDeinit(allocationPolicy * ap);
|
|
void allocationPolicyAddPages(allocationPolicy * ap, availablePage** newPages);
|
|
availablePage * allocationPolicyFindPage(allocationPolicy * ap, int xid, int freespace);
|
|
void allocationPolicyTransactionCompleted(allocationPolicy * ap, int xid);
|
|
void allocationPolicyUpdateFreespaceUnlockedPage(allocationPolicy * ap, availablePage * key, int newFree);
|
|
void allocationPolicyUpdateFreespaceLockedPage(allocationPolicy * ap, int xid, availablePage * key, int newFree);
|
|
void allocationPolicyLockPage(allocationPolicy * ap, int xid, int pageid);
|
|
|
|
#endif // ALLOCATION_POLICY_H
|