Example #1
0
void MC_ignore_heap(void *address, size_t size)
{
  if (mc_mode != MC_MODE_CLIENT)
    return;

  xbt_mheap_t heap = mmalloc_get_current_heap();

  s_mc_heap_ignore_region_t region;
  memset(&region, 0, sizeof(region));
  region.address = address;
  region.size = size;
  region.block =
   ((char *) address -
    (char *) heap->heapbase) / BLOCKSIZE + 1;
  if (heap->heapinfo[region.block].type == 0) {
    region.fragment = -1;
    heap->heapinfo[region.block].busy_block.ignore++;
  } else {
    region.fragment =
        ((uintptr_t) (ADDR2UINT(address) % (BLOCKSIZE))) >>
        heap->heapinfo[region.block].type;
    heap->heapinfo[region.block].busy_frag.ignore[region.fragment]++;
  }

  s_mc_ignore_heap_message_t message;
  message.type = MC_MESSAGE_IGNORE_HEAP;
  message.region = region;
  if (MC_protocol_send(mc_client->fd, &message, sizeof(message)))
    xbt_die("Could not send ignored region to MCer");
}
Example #2
0
int MC_protocol_send_simple_message(int socket, e_mc_message_type type)
{
  s_mc_message_t message;
  message.type = type;
  return MC_protocol_send(socket, &message, sizeof(message));
}
Example #3
0
 typename std::enable_if< std::is_class<M>::value && std::is_trivial<M>::value, int >::type
 send_message(M const& m)
 {
   return MC_protocol_send(this->socket_, &m, sizeof(M));
 }