Exemple #1
0
int
binode_cache_add (uint64_t key, unsigned char *hash_key)
{
  clock_t start, end;
  int ret = 0, i = 0;
  uint64_t val = 0;
  uint32_t temp_hash;
  LINKED *temp;

  bt_key_val kv,*kv1;
  if(count_block_inode>MAX_BINODE_COUNT)
  {
    temp=binode_list->prev;
    btree_delete_key(block_inode_tree,block_inode_tree->root,binode_list->prev->kv.key);
    binode_list->prev=temp->prev;
    temp->prev->next=binode_list;
    free(temp);
//    fprintf(stderr, "flushing memory cache\n");
    count_block_inode--;
  }

  kv.key = key;
  kv.val = 0;
  kv.val = (uint64_t)libhashkit_murmur(hash_key,16);
  if(binode_list==NULL)
  {
    binode_list=malloc(sizeof(LINKED));
    binode_list->prev=binode_list;
    binode_list->next=binode_list;
    temp=binode_list;
  }
  else
  {
    temp=malloc(sizeof(LINKED));
    temp->prev=binode_list->prev;
    temp->next=binode_list;
    binode_list->prev=temp;
    binode_list=temp;
  }
  count_block_inode++;
  kv.pt=temp;
  temp->kv=kv;


  temp_hash = libhashkit_murmur(hash_key,16);
#ifdef DEBUG_FUXEXMP
  fprintf(stderr, "binode_cache_add: k %llx v %llx hash %lx\n",kv.key,kv.val,temp_hash);
#endif
  btree_insert_key(block_inode_tree, kv);
  return ret;

}
Exemple #2
0
int main(int ac,char * av[])
{
	int i = 0;
	btree * tree;
	bt_key_val * kv;
	int item = 0x43;
	int count = 0;
	int order;
	
	srandom(time(NULL));

	if (ac > 1) {
		count = atoi(av[1]);
	}
	
	for(order=60;order<61;order++) {

            
	    tree = btree_create(order);	
            tree->value = value;
            tree->key_size = keysize;
            tree->data_size = datasize;
	    
	    for (i=0;i<count;i++) {	
		    kv = (bt_key_val*)malloc(sizeof(*kv));
		    kv->key = malloc(sizeof(int));		
		    int rval = random()%1024;
		    *(int *)kv->key = rval;
		    kv->val = malloc(sizeof(int));
		    *(int *)kv->val = rval;
		    btree_insert_key(tree,kv);
	    }
	    
	    /*
	    for (i= count - 1; i > -1; i-= (random()%5)) {	
		    item = values[i];
		    btree_delete_key(tree,tree->root,&item);
	    }
	    */
            // btree_destroy(tree);
	}
	return 0;
}
Exemple #3
0
int
memory_cache_add (unsigned char *hash_key, unsigned char *data, int size)
{
  unsigned char *data_block = NULL;
  clock_t start, end;
  int ret = 0, i;
  uint64_t val = 0;
  unsigned char temp_md5_hash[16];
  LINKED *temp;

  bt_key_val kv;
  if(count_memory_cache>MAX_MEMORY_COUNT)
  {
    temp=memory_list->prev;
    //while(temp->next)
     // temp=temp->next;

    btree_delete_key(memory_tree,memory_tree->root,memory_list->prev->kv.key);
   free(memory_list->prev->kv.val);
  memory_list->prev=temp->prev; 
  temp->prev->next=memory_list; 
    free(temp);
//  fprintf(stderr, "flushing memory cache\n");
    count_memory_cache--;
  }




  kv.key = libhashkit_murmur(hash_key,16);
  kv.val = 0;


  start = clock ();
  data_block = malloc (4096);
  kv.val = (uint64_t)data_block;
  memcpy (data_block, data, size);

  if(memory_list==NULL)
  {
    memory_list=malloc(sizeof(LINKED));
    memory_list->prev=memory_list;
    memory_list->next=memory_list;
    temp=memory_list;
  }
  else
  {
    temp=malloc(sizeof(LINKED));
    temp->prev=memory_list->prev;
    temp->next=memory_list;
    memory_list->prev=temp;
    memory_list=temp;
  }
  count_memory_cache++;
  kv.pt=temp;
  temp->kv=kv;

  btree_insert_key(memory_tree,kv);
exit:
  return ret;
}