|
#define | DEBUG 1 |
|
#define | getpagesize() PAGE_SIZE |
|
#define | O_BINARY 0 |
|
#define | RVM_LOG_VERSION "RVM Log Version 1.4 Oct 17, 1997 " |
|
#define | REALLOC(x, l) (((x) == NULL) ? malloc(l) : realloc((x), (l))) |
|
#define | BCOPY(x, y, n) bcopy((x), (y), (n)) |
|
#define | BZERO(x, n) bzero((x), (n)) |
|
#define | DO_FOREVER for (;;) |
|
#define | FORWARD rvm_true /* record scan forward */ |
|
#define | REVERSE rvm_false /* record scan reverse */ |
|
#define | ERR_DATE_SKEW "Current time before last recorded - check kernel date" |
|
#define | TIME_LSS(x, y) |
|
#define | TIME_GTR(x, y) |
|
#define | TIME_LEQ(x, y) (!TIME_GTR((x), (y))) |
|
#define | TIME_GEQ(x, y) (!TIME_LSS((x), (y))) |
|
#define | TIME_EQL(x, y) (((x).tv_sec == (y).tv_sec) && ((x).tv_usec == (y).tv_usec)) |
|
#define | TIME_EQL_ZERO(x) (((x).tv_sec == 0 && ((x).tv_usec == 0))) |
|
#define | ZERO_TIME(x) |
|
#define | LENGTH_MASK ((rvm_length_t)(~(sizeof(rvm_length_t) - 1))) |
|
#define | ROUND_TO_LENGTH(len) |
|
#define | CHOP_TO_LENGTH(len) ((rvm_length_t)((rvm_length_t)(len) & LENGTH_MASK)) |
|
#define | ALIGNED_LEN(addr, len) |
|
#define | BYTE_SKEW(len) ((rvm_length_t)(len) & ~LENGTH_MASK) |
|
#define | SECTOR_SIZE 512 |
|
#define | SECTOR_MASK ((rvm_length_t)(~(SECTOR_SIZE - 1))) |
|
#define | ROUND_TO_SECTOR_SIZE(x) (((rvm_length_t)(x) + SECTOR_SIZE - 1) & SECTOR_MASK) |
|
#define | CHOP_TO_SECTOR_SIZE(x) ((rvm_length_t)(x) & SECTOR_MASK) |
|
#define | SECTOR_INDEX(x) ((x) & (SECTOR_SIZE - 1)) |
|
#define | ROUND_OFFSET_TO_SECTOR_SIZE(x) rvm_rnd_offset_to_sector(&(x)) |
|
#define | CHOP_OFFSET_TO_SECTOR_SIZE(x) |
|
#define | OFFSET_TO_SECTOR_INDEX(x) (SECTOR_INDEX(RVM_OFFSET_TO_LENGTH((x)))) |
|
#define | CHOP_OFFSET_TO_LENGTH_SIZE(x) |
|
#define | ROUND_TO_PAGE_SIZE(x) (((rvm_length_t)(x) + page_size - 1) & page_mask) |
|
#define | CHOP_TO_PAGE_SIZE(x) ((rvm_length_t)(x) & page_mask) |
|
#define | OFFSET_TO_FLOAT(x) |
|
#define | ID_INDEX(id) ((rvm_length_t)(id) - (rvm_length_t)struct_first_id - 1) |
|
#define | INDEX_ID(i) ((struct_id_t)((i) + 1 + (long)struct_first_id)) |
|
#define | NUM_CACHE_TYPES ((rvm_length_t)struct_last_cache_id - (rvm_length_t)struct_first_id - 1) |
|
#define | NUM_TYPES ((rvm_length_t)struct_last_id - (rvm_length_t)struct_first_id - 1) |
|
#define | NUM_PRE_ALLOCATED |
|
#define | MAX_ALLOCATED |
|
#define | CACHE_TYPE_SIZES |
|
#define | OTHER_TYPE_SIZES |
|
#define | TYPE_NAMES |
|
#define | LIST_EMPTY(lst) ((lst).list.length == 0) |
|
#define | LIST_NOT_EMPTY(lst) ((lst).list.length != 0) |
|
#define | FOR_ENTRIES_OF(lst, type, ptr) |
|
#define | FOR_REVERSE_ENTRIES_OF(lst, type, ptr) |
|
#define | UNLINK_ENTRIES_OF(lst, type, ptr) |
|
#define | UNLINK_REVERSE_ENTRIES_OF(lst, type, ptr) |
|
#define | RVM_MUTEX struct mutex |
|
#define | RVM_CONDITION struct condition |
|
#define | LOCK_FREE(lck) (mutex_try_lock(&(lck)) ? (mutex_unlock(&(lck)), rvm_true) : rvm_false) |
|
#define | CRITICAL(lck, body) |
|
#define | RW_CRITICAL(rwl, mode, body) |
|
#define | RW_LOCK_FREE(rwl) (((rwl).read_cnt + (rwl).write_cnt) == 0) && ((rwl).lock_mode == f) |
|
#define | TRAVERSE_LEN_INCR 15 /* allocate 15 slots at a time */ |
|
#define | FOR_NODES_OF(tree, type, ptr) |
|
#define | FOR_REVERSE_NODES_OF(tree, type, ptr) |
|
#define | FROM_EXISTING_NODE_OF(tree, type, ptr, node, cmp) |
|
#define | UNLINK_NODES_OF(tree, type, ptr) |
|
#define | UNLINK_REVERSE_NODES_OF(tree, type, ptr) |
|
#define | NV_BUF_SIZE(len) (ROUND_TO_LENGTH((len)) + sizeof(nv_buf_t)) |
|
#define | RANGE_LEN(range) (ALIGNED_LEN((range)->nv.vmaddr, (range)->nv.length)) |
|
#define | RANGE_SIZE(range) ((rvm_length_t)(NV_RANGE_OVERHEAD + RANGE_LEN(range))) |
|
#define | TRANS_SIZE (ROUND_TO_LENGTH((sizeof(trans_hdr_t) + sizeof(rec_end_t)))) |
|
#define | NV_RANGE_OVERHEAD (ROUND_TO_LENGTH(sizeof(nv_range_t))) |
|
#define | MIN_NV_RANGE_SIZE (NV_RANGE_OVERHEAD + 64) |
|
#define | MIN_TRANS_SIZE (TRANS_SIZE + MIN_NV_RANGE_SIZE + ROUND_TO_LENGTH(sizeof(log_wrap_t))) |
|
#define | LOG_SPECIAL_SIZE (ROUND_TO_LENGTH(sizeof(log_special_t) - sizeof(list_entry_t))) |
|
#define | LOG_SPECIAL_IOV_MAX 3 |
|
#define | MAX_HDR_SIZE (ROUND_TO_LENGTH((sizeof(log_special_t) + MAXPATHLEN))) |
|
#define | NV_LOCAL_MAX (8 * 1024 - ROUND_TO_LENGTH(NV_BUF_SIZE(sizeof(rvm_length_t) + 1))) |
|
#define | LOG_DEV_STATUS_SIZE ROUND_TO_SECTOR_SIZE(sizeof(log_dev_status_t)) |
|
#define | RAW_STATUS_OFFSET 16 * SECTOR_SIZE |
|
#define | FILE_STATUS_OFFSET 0 |
|
#define | UPDATE_STATUS 100 /* flushes before updating log status area */ |
|
#define | RVM_FLUSH_CALL (1) |
|
#define | RVM_FLUSH_COMMIT (2) |
|
#define | RVM_RECOVERY (4) |
|
#define | RVM_TRUNCATE_CALL (010) |
|
#define | RVM_ASYNC_TRUNCATE (020) |
|
#define | RVM_SYNC_TRUNCATE (040) |
|
#define | RVM_TRUNC_FIND_TAIL (0100) |
|
#define | RVM_TRUNC_BUILD_TREE (0200) |
|
#define | RVM_TRUNC_APPLY (0400) |
|
#define | RVM_TRUNC_UPDATE (01000) |
|
#define | RVM_TRUNC_PHASES |
|
#define | SYNCH rvm_true /* synchronization required */ |
|
#define | NO_SYNCH rvm_false /* synchronization not required */ |
|
#define | SEG_DICT_INDEX(x) ((x) - 1) /* index of segemnt in seg_dict_vec */ |
|
#define | RESTORE_FLAG (2 * RVM_COALESCE_TRANS) |
|
#define | FLUSH_FLAG (2 * RESTORE_FLAG) |
|
#define | FIRST_ENTRY_FLAG (2 * FLUSH_FLAG) |
|
#define | LAST_ENTRY_FLAG (2 * FIRST_ENTRY_FLAG) |
|
#define | FLUSH_MARK (2 * LAST_ENTRY_FLAG) |
|
#define | TID(x) ((tid->flags & (x)) != 0) |
|
#define | TRANS_HDR(x) ((trans_hdr->flags & (x)) != 0) |
|
|
rvm_bool_t | rvm_register_page (char *vmaddr, rvm_length_t length) |
|
rvm_bool_t | rvm_unregister_page (char *vmaddr, rvm_length_t length) |
|
void | init_list_header (list_entry_t *whichlist, struct_id_t struct_id) |
|
list_entry_t * | move_list_entry (list_entry_t *fromptr, list_entry_t *toptr, list_entry_t *cell) |
|
list_entry_t * | alloc_list_entry (struct_id_t id) |
|
void | clear_free_lists (void) |
|
region_t * | make_region (void) |
|
void | free_region (region_t *region) |
|
seg_t * | make_seg (char *seg_dev_name, rvm_return_t *retval) |
|
void | free_seg (seg_t *seg) |
|
void | free_seg_dict_vec (log_t *log) |
|
log_t * | make_log (char *dev_name, rvm_return_t *retval) |
|
void | free_log (log_t *log) |
|
char * | make_full_name (char *dev_str, char *dev_name, rvm_return_t *retval) |
|
log_special_t * | make_log_special (struct_id_t special_id, rvm_length_t length) |
|
void | free_log_special (log_special_t *special) |
|
rvm_return_t | dev_init (device_t *dev, char *dev_str) |
|
range_t * | make_range (void) |
|
void | free_range (range_t *range) |
|
int_tid_t * | make_tid (rvm_mode_t mode) |
|
void | free_tid (int_tid_t *tid) |
|
mem_region_t * | make_mem_region (void) |
|
void | free_mem_region (mem_region_t *node) |
|
dev_region_t * | make_dev_region (void) |
|
void | free_dev_region (dev_region_t *node) |
|
void | init_log_list (void) |
|
void | enter_log (log_t *log) |
|
rvm_return_t | open_log (char *dev_name, log_t **log_ptr, char *status_buf, rvm_options_t *rvm_options) |
|
rvm_return_t | create_log (log_t **log_ptr, rvm_options_t *rvm_options) |
|
rvm_return_t | do_log_options (log_t **log, rvm_options_t *rvm_options) |
|
rvm_return_t | close_log (log_t *log) |
|
rvm_return_t | close_all_logs (void) |
|
void | copy_log_stats (log_t *log) |
|
void | clear_log_status (log_t *log) |
|
rvm_return_t | init_log_status (log_t *log) |
|
rvm_return_t | read_log_status (log_t *log, char *status_buf) |
|
rvm_return_t | write_log_status (log_t *log, device_t *dev) |
|
rvm_return_t | update_log_tail (log_t *log, rec_hdr_t *rec_hdr) |
|
void | log_tail_length (log_t *log, rvm_offset_t *tail_length) |
|
void | log_tail_sngl_w (log_t *log, rvm_offset_t *tail_length) |
|
long | cur_log_percent (log_t *log, rvm_offset_t *space_needed) |
|
void | cur_log_length (log_t *log, rvm_offset_t *length) |
|
rvm_return_t | queue_special (log_t *log, log_special_t *special) |
|
rvm_return_t | flush_log (log_t *log, rvm_length_t *count) |
|
rvm_return_t | locate_tail (log_t *log) |
|
rvm_return_t | init_buffer (log_t *log, rvm_offset_t *offset, rvm_bool_t direction, rvm_bool_t synch) |
|
void | clear_aux_buf (log_t *log) |
|
rvm_return_t | load_aux_buf (log_t *log, rvm_offset_t *offset, rvm_length_t length, rvm_length_t *aux_ptr, rvm_length_t *data_len, rvm_bool_t direction, rvm_bool_t synch) |
|
void | reset_hdr_chks (log_t *log) |
|
rvm_bool_t | chk_hdr_currency (log_t *log, rec_hdr_t *rec_hdr) |
|
rvm_bool_t | chk_hdr_sequence (log_t *log, rec_hdr_t *rec_hdr, rvm_bool_t direction) |
|
rvm_bool_t | validate_hdr (log_t *log, rec_hdr_t *rec_hdr, rec_end_t *rec_end, rvm_bool_t direction) |
|
rvm_return_t | validate_rec_reverse (log_t *log, rvm_bool_t synch) |
|
rvm_return_t | scan_forward (log_t *log, rvm_bool_t synch) |
|
rvm_return_t | scan_reverse (log_t *log, rvm_bool_t synch) |
|
rvm_return_t | scan_nv_forward (log_t *log, rvm_bool_t synch) |
|
rvm_return_t | scan_wrap_reverse (log_t *log, rvm_bool_t synch) |
|
rvm_bool_t | initiate_truncation (log_t *log, rvm_length_t threshold) |
|
rvm_return_t | wait_for_truncation (log_t *log, struct timeval *time_stamp) |
|
rvm_return_t | log_recover (log_t *log, rvm_length_t *count, rvm_bool_t is_daemon, rvm_length_t flag) |
|
void | log_daemon (void *) |
|
rvm_return_t | alloc_log_buf (log_t *log) |
|
void | free_log_buf (log_t *log) |
|
void | init_map_roots (void) |
|
rvm_return_t | bad_region (rvm_region_t *rvm_region) |
|
char * | page_alloc (rvm_length_t len) |
|
void | page_free (char *vmaddr, rvm_length_t length) |
|
rvm_return_t | close_all_segs (void) |
|
seg_t * | seg_lookup (char *dev_name, rvm_return_t *retval) |
|
rvm_return_t | define_all_segs (log_t *log) |
|
long | dev_partial_include (rvm_offset_t *base1, rvm_offset_t *end1, rvm_offset_t *base2, rvm_offset_t *end2) |
|
long | dev_total_include (rvm_offset_t *base1, rvm_offset_t *end1, rvm_offset_t *base2, rvm_offset_t *end2) |
|
long | mem_total_include (tree_node_t *tnode1, tree_node_t *tnode2) |
|
region_t * | find_whole_range (char *dest, rvm_length_t length, rw_lock_mode_t mode) |
|
rvm_return_t | rvm_map (rvm_region_t *rvm_region, rvm_options_t *rvm_options) |
|
rvm_return_t | enter_seg_dict (log_t *log, long seg_code) |
|
rvm_return_t | def_seg_dict (log_t *log, rec_hdr_t *rec_hdr) |
|
long | open_dev (device_t *dev, long flags, long mode) |
|
long | close_dev (device_t *dev) |
|
long | read_dev (device_t *dev, rvm_offset_t *offset, char *dest, rvm_length_t length) |
|
long | write_dev (device_t *dev, rvm_offset_t *offset, char *src, rvm_length_t length, rvm_bool_t no_sync) |
|
long | sync_dev (device_t *dev) |
|
long | gather_write_dev (device_t *dev, rvm_offset_t *offset) |
|
long | set_dev_char (device_t *dev, rvm_offset_t *dev_length) |
|
void | rw_lock (rw_lock_t *rwl, rw_lock_mode_t mode) |
|
void | rw_unlock (rw_lock_t *rwl, rw_lock_mode_t mode) |
|
void | init_rw_lock (rw_lock_t *rwl) |
|
void | init_tree_root (tree_root_t *root) |
|
tree_node_t * | tree_lookup (tree_root_t *tree, tree_node_t *node, cmp_func_t *cmp) |
|
rvm_bool_t | tree_insert (tree_root_t *tree, tree_node_t *node, cmp_func_t *cmp) |
|
rvm_bool_t | tree_delete (tree_root_t *tree, tree_node_t *node, cmp_func_t *cmp) |
|
tree_node_t * | init_tree_generator (tree_root_t *tree, rvm_bool_t direction, rvm_bool_t unlink) |
|
tree_node_t * | tree_iterate_insert (tree_root_t *tree, tree_node_t *node, cmp_func_t *cmp) |
|
tree_node_t * | tree_successor (tree_root_t *tree) |
|
tree_node_t * | tree_predecessor (tree_root_t *tree) |
|
rvm_bool_t | bad_init (void) |
|
rvm_return_t | bad_options (rvm_options_t *rvm_options, rvm_bool_t chk_log_dev) |
|
rvm_return_t | bad_statistics (rvm_statistics_t *rvm_statistics) |
|
rvm_return_t | bad_tid (rvm_tid_t *rvm_tid) |
|
rvm_return_t | do_rvm_options (rvm_options_t *rvm_options) |
|
void | make_uname (struct timeval *time) |
|
long | init_unames (void) |
|
struct timeval | add_times (struct timeval *x, struct timeval *y) |
|
struct timeval | sub_times (struct timeval *x, struct timeval *y) |
|
long | round_time (struct timeval *x) |
|
void | enter_histogram (long val, rvm_length_t *histo, rvm_length_t *histo_def, long length) |
|
long | init_utils (void) |
|
rvm_length_t | chk_sum (char *nvaddr, rvm_length_t len) |
|
void | src_aligned_bcopy (char *src, char *dest, rvm_length_t len) |
|
void | dest_aligned_bcopy (char *src, char *dest, rvm_length_t len) |
|
rvm_offset_t | rvm_rnd_offset_to_sector (rvm_offset_t *x) |
|
void | rvm_debug (rvm_length_t val) |
|