NVMLib  very early alpha
A library to optimally use a Hybrid RAM setup.
object_maintainance.h
Go to the documentation of this file.
1 #ifndef __NVM_OBJ_MAINTAIN__
2 #define __NVM_OBJ_MAINTAIN__
3 
4 #include <uv.h>
5 #include "globals.h"
6 #include "malloc.h"
7 #include <time.h>
8 #include <sys/queue.h>
9 
11 #define DELETE_LOOP_SLEEP_TIME 1000 // 5 milli secs
12 #define MOVE_LOOP_SLEEP_TIME 1000 // 5 milli secs
14 
15 typedef enum access_type_en {
18  WRITE
20 
21 typedef enum shitf_levels_en {
22  JUST_ENTERED, // After it has entered a RAM
23  ONE,
24  TWO,
27  MOVE_NOW // Move in the next cycle
29 
30 typedef enum where_en {
31  RAM_UNKNOWN, // A default
34  NO_RAM // to be deleted
36 
39 typedef struct object_maintainance_st {
42 
48 
51 
54  void* last_write;
55  void* last_read;
58  size_t bytes_write;
59  size_t bytes_read;
60 
62 
64 
67 
68 
72 
75 
77 
79 
83 
86 
88 
90 
91 TAILQ_HEAD(object_maintainance_addition_list, object_maintainance_addition) addition_queue_head;
92 TAILQ_HEAD(object_maintainance_deletion_list, object_maintainance_deletion) deletion_queue_head;
93 
94 
96 
97 void lock_om();
98 
99 void unlock_om();
100 // uv_loop_t* get_logistics_loop();
101 
102 // Returns the actaul object in the map as a pointer.
104 
106 
108 
109 object_maintainance* create_new_maintainance_map_entry(MEMoidKey key, MEMoid oid, where_t which_ram, bool can_be_moved);
110 
111 #endif // !__NVM_OBJ_MAINTAIN__
where_en
where_en
Definition: object_maintainance.h:30
object_maintainance_st::r_entropy
uint64_t r_entropy
Definition: object_maintainance.h:53
object_maintainance_st::last_write_size
size_t last_write_size
Definition: object_maintainance.h:56
object_maintainance_st::last_write
void * last_write
Definition: object_maintainance.h:54
access_types_t
enum access_type_en access_types_t
READ
@ READ
Definition: object_maintainance.h:17
object_maintainance_st::can_be_moved
bool can_be_moved
Definition: object_maintainance.h:65
lock_om
void lock_om()
object_maintainance_st::oid
MEMoid oid
Definition: object_maintainance.h:41
object_maintainance_deletion::TAILQ_ENTRY
TAILQ_ENTRY(object_maintainance_deletion) list
NO_RAM
@ NO_RAM
Definition: object_maintainance.h:34
object_maintainance_addition::which_ram
where_t which_ram
Definition: object_maintainance.h:73
MEMoid_st
The struct that stores the memptr for the object.
Definition: malloc.h:29
create_new_maintainance_map_entry
object_maintainance * create_new_maintainance_map_entry(MEMoidKey key, MEMoid oid, where_t which_ram, bool can_be_moved)
Definition: object_maintainance.c:570
object_maintainance_st::shift_level
shift_levels_t shift_level
Definition: object_maintainance.h:63
delete_from_maintainance_map
void delete_from_maintainance_map(object_maintainance *obj)
Definition: object_maintainance.c:598
object_maintainance_st::num_writes
uint32_t num_writes
Definition: object_maintainance.h:44
object_maintainance_st::read_bitmap
uint64_t * read_bitmap
Definition: object_maintainance.h:50
MEMoidKey
uint64_t MEMoidKey
The key of the HashTable that contains <MEMoidKey, MEMoid>.
Definition: malloc.h:49
object_maintainance
struct object_maintainance_st object_maintainance
The structure used by the logistics thread for keeping track of the object state in order to make dif...
TWO
@ TWO
Definition: object_maintainance.h:24
object_maintainance_st::which_ram
where_t which_ram
Definition: object_maintainance.h:61
object_maintainance_deletion
struct object_maintainance_deletion object_maintainance_deletion
insert_into_maintainance_map
void insert_into_maintainance_map(object_maintainance *obj)
Definition: object_maintainance.c:594
DRAM
@ DRAM
Definition: object_maintainance.h:32
object_maintainance_addition
Definition: object_maintainance.h:69
object_maintainance_st::num_reads
uint32_t num_reads
Definition: object_maintainance.h:43
NVRAM
@ NVRAM
Definition: object_maintainance.h:33
object_maintainance_st::key
MEMoidKey key
Definition: object_maintainance.h:40
globals.h
object_maintainance_deletion::oid
MEMoid oid
Definition: object_maintainance.h:82
where_t
enum where_en where_t
access_type_en
access_type_en
Definition: object_maintainance.h:15
object_maintainance_st::w_entropy
uint64_t w_entropy
Definition: object_maintainance.h:52
uint64_t
__uint64_t uint64_t
Definition: globals.h:51
object_maintainance_st::bytes_write
size_t bytes_write
Definition: object_maintainance.h:58
object_maintainance_deletion::key
MEMoidKey key
Definition: object_maintainance.h:81
malloc.h
object_maintainance_deletion::which_ram
where_t which_ram
Definition: object_maintainance.h:84
find_in_maintainance_map
object_maintainance * find_in_maintainance_map(MEMoidKey key)
Definition: object_maintainance.c:602
object_maintainance_deletion
Definition: object_maintainance.h:80
MOVE_NOW
@ MOVE_NOW
Definition: object_maintainance.h:27
shitf_levels_en
shitf_levels_en
Definition: object_maintainance.h:21
object_maintainance_st::last_accessed_at
time_t last_accessed_at
Definition: object_maintainance.h:45
object_maintainance_st
The structure used by the logistics thread for keeping track of the object state in order to make dif...
Definition: object_maintainance.h:39
object_maintainance_addition::can_be_moved
bool can_be_moved
Definition: object_maintainance.h:74
object_maintainance_deletion::can_be_moved
bool can_be_moved
Definition: object_maintainance.h:85
shift_levels_t
enum shitf_levels_en shift_levels_t
object_maintainance_addition::TAILQ_ENTRY
TAILQ_ENTRY(object_maintainance_addition) list
object_maintainance_addition::key
MEMoidKey key
Definition: object_maintainance.h:70
object_maintainance_st::last_read_size
size_t last_read_size
Definition: object_maintainance.h:57
ACCESS_UNKNOWN
@ ACCESS_UNKNOWN
Definition: object_maintainance.h:16
object_maintainance_st::time_since_previous_access
time_t time_since_previous_access
Definition: object_maintainance.h:46
object_maintainance_addition
struct object_maintainance_addition object_maintainance_addition
object_maintainance_st::bytes_read
size_t bytes_read
Definition: object_maintainance.h:59
WRITE
@ WRITE
Definition: object_maintainance.h:18
initialise_logistics
void initialise_logistics()
Definition: object_maintainance.c:79
JUST_ENTERED
@ JUST_ENTERED
Definition: object_maintainance.h:22
TAILQ_HEAD
TAILQ_HEAD(object_maintainance_addition_list, object_maintainance_addition) addition_queue_head
unlock_om
void unlock_om()
Definition: object_maintainance.c:75
object_maintainance_addition::oid
MEMoid oid
Definition: object_maintainance.h:71
ONE
@ ONE
Definition: object_maintainance.h:23
uint32_t
__uint32_t uint32_t
Definition: globals.h:52
object_maintainance_st::write_bitmap
uint64_t * write_bitmap
Definition: object_maintainance.h:49
FOUR
@ FOUR
Definition: object_maintainance.h:26
RAM_UNKNOWN
@ RAM_UNKNOWN
Definition: object_maintainance.h:31
THREE
@ THREE
Definition: object_maintainance.h:25
object_maintainance_st::previous_access_type
access_types_t previous_access_type
Definition: object_maintainance.h:47
object_maintainance_st::last_read
void * last_read
Definition: object_maintainance.h:55