Exemplo n.º 1
0
END_C_DECLS

void dataPage::register_stasis_page_impl() {
    static page_impl pi =  {
        DATA_PAGE,
        1,
        0, //slottedRead,
        0, //slottedWrite,
        0,// readDone
        0,// writeDone
        0,//slottedGetType,
        0,//slottedSetType,
        0,//slottedGetLength,
        0,//slottedFirst,
        0,//slottedNext,
        0,//slottedLast,
        notSupported, // is block supported
        stasis_block_first_default_impl,
        stasis_block_next_default_impl,
        stasis_block_done_default_impl,
        0,//slottedFreespace,
        0,//slottedCompact,
        0,//slottedCompactSlotIDs,
        0,//slottedPreRalloc,
        0,//slottedPostRalloc,
        0,//slottedSpliceSlot,
        0,//slottedFree,
        0,//XXX page_impl_dereference_identity,
        dataPageLoaded, //dataPageLoaded,
        dataPageFlushed, //dataPageFlushed,
        0,//slottedCleanup
    };
    stasis_page_impl_register(pi);

}
Exemplo n.º 2
0
/**
 * initializes all the important variables needed in
 * all the functions dealing with pages.
 */
void stasis_page_init(stasis_dirty_page_table_t * dpt) {
  dirtyPages = dpt;
  stasis_page_slotted_init();
  stasis_page_fixed_init();

  stasis_page_impl_register(stasis_page_uninitialized_impl());
  stasis_page_impl_register(stasis_page_slotted_impl());
  stasis_page_impl_register(stasis_page_fixed_impl());
  stasis_page_impl_register(stasis_page_boundary_tag_impl());
  stasis_page_impl_register(stasis_page_array_list_impl());
  stasis_page_impl_register(stasis_page_blob_impl());
  stasis_page_impl_register(slottedLsnFreeImpl());
  stasis_page_impl_register(segmentImpl());
  stasis_page_impl_register(stasis_page_slotted_latch_free_impl());
}
Exemplo n.º 3
0
void insertProbeIter(lsmkey_t NUM_ENTRIES) {
  int intcmp = 0;
  lsmTreeRegisterComparator(intcmp,cmp);
  TlsmRegionAllocConf_t alloc_conf = LSM_REGION_ALLOC_STATIC_INITIALIZER;

  stasis_page_impl_register(lsmRootImpl());
  Tinit();
  int xid = Tbegin();
  recordid tree = TlsmCreate(xid, intcmp,
			     TlsmRegionAlloc, &alloc_conf,
			     sizeof(lsmkey_t));
  long oldpagenum = -1;
  for(lsmkey_t i = 0; i < NUM_ENTRIES; i++) {
    long pagenum = TlsmFindPage(xid, tree, (byte*)&i);
    assert(pagenum == -1 || pagenum == oldpagenum || oldpagenum == -1);
    DEBUG("TlsmAppendPage %d\n",i);
    TlsmAppendPage(xid, tree, (const byte*)&i, TlsmRegionAlloc, &alloc_conf, i + OFFSET);
    pagenum = TlsmFindPage(xid, tree, (byte*)&i);
    oldpagenum = pagenum;
    assert(pagenum == i + OFFSET);
  }

  for(lsmkey_t i = 0; i < NUM_ENTRIES; i++) {
    long pagenum = TlsmFindPage(xid, tree, (byte*)&i);
    assert(pagenum == i + OFFSET);
  }

  int64_t count = 0;

  lladdIterator_t * it = lsmTreeIterator_open(xid, tree);

  while(lsmTreeIterator_next(xid, it)) {
    lsmkey_t * key;
    lsmkey_t **key_ptr = &key;
    int size = lsmTreeIterator_key(xid, it, (byte**)key_ptr);
    assert(size == sizeof(lsmkey_t));
    long *value;
    long **value_ptr = &value;
    size = lsmTreeIterator_value(xid, it, (byte**)value_ptr);
    assert(size == sizeof(pageid_t));
    assert(*key + OFFSET == *value);
    assert(*key == count);
    count++;
  }
  assert(count == NUM_ENTRIES);

  lsmTreeIterator_close(xid, it);

  Tcommit(xid);
  Tdeinit();
}