コード例 #1
0
ファイル: wrapper.c プロジェクト: BackupTheBerlios/wl530g-svn
void *
malloc (size_t n)
{
  void *res;

  switch (wrapper_state)
    {
    case WRAPPER_UNINITIALIZED:

      wrapper_state = WRAPPER_INITIALIZING;
      wrapper_state = WRAPPER_INITIALIZED;

      /* !!!!!!! fall through !!!!!!! */

    case WRAPPER_INITIALIZED:

      if (semaphore)
	{
	  wrapper_num_allocated++;
	  wrapper_bytes_allocated += n;
	  res = MY_malloc(n);
	}
      else
	{
	  semaphore++;
	  res = ccmalloc_malloc (n);
	  semaphore--;
	}
      break;

    default:
    case WRAPPER_INITIALIZING:

      res = static_malloc (n);
      break;
    }

# ifdef LOG_EXTERNAL_MALLOC
  {
    print ("::: 0x");
    print_hex ((unsigned) res);
    if (wrapper_state == WRAPPER_INITIALIZING)
      print (" static  ");
    else if (semaphore)
      print (" internal");
    else
      print (" external");
    print (" malloc(");
    print_dec (n);
    print (")\n");
  }
# endif

  /* Initialize with something weird
   */
  memset (res, 0x42, n);

  return res;
}
コード例 #2
0
ファイル: dipelta.c プロジェクト: zwerfvogel/Mimosa
t_dipelta_instance *ka_dipelta_instance_init(const t_conn_addr *local_addr,
                                             const t_conn_addr *remote_addr)
{
    t_dipelta_instance *rt = 0;

    rt = MY_malloc(sizeof(*rt)); 
    rt->current_net = ka_dipelta_network_init();
    rt->server = ka_dipelta_server_init(rt->current_net, local_addr);
    rt->client = ka_dipelta_client_init(rt->current_net, remote_addr);

    return rt;
}
コード例 #3
0
ファイル: dipelta.c プロジェクト: zwerfvogel/Mimosa
t_dipelta_server *ka_dipelta_server_init(t_dipelta_network *n,
                                         const t_conn_addr *a)
{
    t_dipelta_server *rt = 0;
    
    assert(n != 0); assert(a != 0);
    rt = MY_malloc(sizeof(*rt));
    rt->current_net = n;
    rt->packet_boxes = ds_bst_create(ka_id_compare); 
    rt->local_addr = a;

    return rt;
}
コード例 #4
0
ファイル: dipelta.c プロジェクト: zwerfvogel/Mimosa
t_dipelta_client *ka_dipelta_client_init(t_dipelta_network *n, const t_conn_addr *a)
{
    t_dipelta_client *rt = 0;
    size_t i = 0;
    
    assert(n != 0); assert(a != 0);
    rt = MY_malloc(sizeof(*rt));
    rt->current_net = n;
    rt->remote_addr = a;
    rt->n_conns = 0;
    for (i = 0; i < MAX_CLIENT_CONNECTIONS; ++i) {
        rt->current_cns[i] = 0;
    }
    rt->contact_tbl = ds_hashtable_init(256);
    rt->contact_tbl->node_data_destroy_fn = ka_destroy_contact_table_row;
    /* maybe MAX_CLIENT_CONNECTIONS? */

    return rt;
}
コード例 #5
0
ファイル: test_c.c プロジェクト: zwerfvogel/Mimosa
int main(void)
{
    t_contact_table *c_tbl = 0, *m_tbl = 0;
    t_id *f_id = 0;
    size_t sz = 0, i = 0, n_data_sz = 0;
    t_byte *data = 0, *n_data = 0;
    t_pkt_box *rbox = 0;
    
    f_id = ka_t_id_init();
    c_tbl = ka_find_node(f_id);
    sz = ka_contact_table_buffer_size(c_tbl);
    printf("Allocating: %d\n", sz);
    data = MY_malloc(sz);
    ka_pack_contact_table(c_tbl, data);
    for (i = 0; i < sz; ++i) {
        printf("(%d, 0x%x)\n", i, data[i]);
        if (i %12 == 0) {
            printf("\n");
        }
    }
    printf("\n");
    rbox = ka_pkt_box_create_with_data(f_id, KA_CD_OK, data, sz);
    printf("Created packet box with %d packets\n", rbox->pkt_total);
    for (i = 0; i < rbox->pkts_recvd_sz; ++i) {
        ka_print_pkt(&(rbox->pkts_recvd[i]));
    }
    n_data = ka_process_pkt_box(rbox, &n_data_sz);
    m_tbl = ka_unpack_contact_table(n_data);
    sz = m_tbl->contacts_sz;
    for (i = 0; i < sz; ++i) {
        printf("Contact %d of %d\n", i + 1, sz);
        ka_contact_print(m_tbl->contacts[i]);
        printf("\n");
    }
    
    ka_contact_table_destroy(c_tbl); c_tbl = 0;
    ka_contact_table_destroy(m_tbl); m_tbl = 0;
    MY_free(data); data = 0;
    MY_free(f_id); f_id = 0;

    return 0;
}