omit code for empty memory pools

This commit is contained in:
matthias.ringwald 2012-05-21 18:24:37 +00:00
parent 9182693d03
commit c4d3f927d0
2 changed files with 100 additions and 20 deletions

View File

@ -55,14 +55,22 @@
// MARK: hci_connection_t // MARK: hci_connection_t
#ifdef MAX_NO_HCI_CONNECTIONS #ifdef MAX_NO_HCI_CONNECTIONS
#if MAX_NO_HCI_CONNECTIONS > 0
static hci_connection_t hci_connection_storage[MAX_NO_HCI_CONNECTIONS]; static hci_connection_t hci_connection_storage[MAX_NO_HCI_CONNECTIONS];
static memory_pool_t hci_connection_pool; static memory_pool_t hci_connection_pool;
void * btstack_memory_hci_connection_get(void){ void * btstack_memory_hci_connection_get(void){
return memory_pool_get(&hci_connection_pool); return memory_pool_get(&hci_connection_pool);
} }
void btstack_memory_hci_connection_free(void *hci_connection){ void btstack_memory_hci_connection_free(void *hci_connection){
memory_pool_free(&hci_connection_pool, hci_connection); memory_pool_free(&hci_connection_pool, hci_connection);
} }
#else
void * btstack_memory_hci_connection_get(void){
return NULL;
}
void btstack_memory_hci_connection_free(void *hci_connection){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_hci_connection_get(void){ void * btstack_memory_hci_connection_get(void){
return malloc(sizeof(hci_connection_t)); return malloc(sizeof(hci_connection_t));
@ -75,14 +83,22 @@ void btstack_memory_hci_connection_free(void *hci_connection){
// MARK: l2cap_service_t // MARK: l2cap_service_t
#ifdef MAX_NO_L2CAP_SERVICES #ifdef MAX_NO_L2CAP_SERVICES
#if MAX_NO_L2CAP_SERVICES > 0
static l2cap_service_t l2cap_service_storage[MAX_NO_L2CAP_SERVICES]; static l2cap_service_t l2cap_service_storage[MAX_NO_L2CAP_SERVICES];
static memory_pool_t l2cap_service_pool; static memory_pool_t l2cap_service_pool;
void * btstack_memory_l2cap_service_get(void){ void * btstack_memory_l2cap_service_get(void){
return memory_pool_get(&l2cap_service_pool); return memory_pool_get(&l2cap_service_pool);
} }
void btstack_memory_l2cap_service_free(void *l2cap_service){ void btstack_memory_l2cap_service_free(void *l2cap_service){
memory_pool_free(&l2cap_service_pool, l2cap_service); memory_pool_free(&l2cap_service_pool, l2cap_service);
} }
#else
void * btstack_memory_l2cap_service_get(void){
return NULL;
}
void btstack_memory_l2cap_service_free(void *l2cap_service){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_l2cap_service_get(void){ void * btstack_memory_l2cap_service_get(void){
return malloc(sizeof(l2cap_service_t)); return malloc(sizeof(l2cap_service_t));
@ -95,14 +111,22 @@ void btstack_memory_l2cap_service_free(void *l2cap_service){
// MARK: l2cap_channel_t // MARK: l2cap_channel_t
#ifdef MAX_NO_L2CAP_CHANNELS #ifdef MAX_NO_L2CAP_CHANNELS
#if MAX_NO_L2CAP_CHANNELS > 0
static l2cap_channel_t l2cap_channel_storage[MAX_NO_L2CAP_CHANNELS]; static l2cap_channel_t l2cap_channel_storage[MAX_NO_L2CAP_CHANNELS];
static memory_pool_t l2cap_channel_pool; static memory_pool_t l2cap_channel_pool;
void * btstack_memory_l2cap_channel_get(void){ void * btstack_memory_l2cap_channel_get(void){
return memory_pool_get(&l2cap_channel_pool); return memory_pool_get(&l2cap_channel_pool);
} }
void btstack_memory_l2cap_channel_free(void *l2cap_channel){ void btstack_memory_l2cap_channel_free(void *l2cap_channel){
memory_pool_free(&l2cap_channel_pool, l2cap_channel); memory_pool_free(&l2cap_channel_pool, l2cap_channel);
} }
#else
void * btstack_memory_l2cap_channel_get(void){
return NULL;
}
void btstack_memory_l2cap_channel_free(void *l2cap_channel){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_l2cap_channel_get(void){ void * btstack_memory_l2cap_channel_get(void){
return malloc(sizeof(l2cap_channel_t)); return malloc(sizeof(l2cap_channel_t));
@ -115,14 +139,22 @@ void btstack_memory_l2cap_channel_free(void *l2cap_channel){
// MARK: rfcomm_multiplexer_t // MARK: rfcomm_multiplexer_t
#ifdef MAX_NO_RFCOMM_MULTIPLEXERS #ifdef MAX_NO_RFCOMM_MULTIPLEXERS
#if MAX_NO_RFCOMM_MULTIPLEXERS > 0
static rfcomm_multiplexer_t rfcomm_multiplexer_storage[MAX_NO_RFCOMM_MULTIPLEXERS]; static rfcomm_multiplexer_t rfcomm_multiplexer_storage[MAX_NO_RFCOMM_MULTIPLEXERS];
static memory_pool_t rfcomm_multiplexer_pool; static memory_pool_t rfcomm_multiplexer_pool;
void * btstack_memory_rfcomm_multiplexer_get(void){ void * btstack_memory_rfcomm_multiplexer_get(void){
return memory_pool_get(&rfcomm_multiplexer_pool); return memory_pool_get(&rfcomm_multiplexer_pool);
} }
void btstack_memory_rfcomm_multiplexer_free(void *rfcomm_multiplexer){ void btstack_memory_rfcomm_multiplexer_free(void *rfcomm_multiplexer){
memory_pool_free(&rfcomm_multiplexer_pool, rfcomm_multiplexer); memory_pool_free(&rfcomm_multiplexer_pool, rfcomm_multiplexer);
} }
#else
void * btstack_memory_rfcomm_multiplexer_get(void){
return NULL;
}
void btstack_memory_rfcomm_multiplexer_free(void *rfcomm_multiplexer){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_rfcomm_multiplexer_get(void){ void * btstack_memory_rfcomm_multiplexer_get(void){
return malloc(sizeof(rfcomm_multiplexer_t)); return malloc(sizeof(rfcomm_multiplexer_t));
@ -135,14 +167,22 @@ void btstack_memory_rfcomm_multiplexer_free(void *rfcomm_multiplexer){
// MARK: rfcomm_service_t // MARK: rfcomm_service_t
#ifdef MAX_NO_RFCOMM_SERVICES #ifdef MAX_NO_RFCOMM_SERVICES
#if MAX_NO_RFCOMM_SERVICES > 0
static rfcomm_service_t rfcomm_service_storage[MAX_NO_RFCOMM_SERVICES]; static rfcomm_service_t rfcomm_service_storage[MAX_NO_RFCOMM_SERVICES];
static memory_pool_t rfcomm_service_pool; static memory_pool_t rfcomm_service_pool;
void * btstack_memory_rfcomm_service_get(void){ void * btstack_memory_rfcomm_service_get(void){
return memory_pool_get(&rfcomm_service_pool); return memory_pool_get(&rfcomm_service_pool);
} }
void btstack_memory_rfcomm_service_free(void *rfcomm_service){ void btstack_memory_rfcomm_service_free(void *rfcomm_service){
memory_pool_free(&rfcomm_service_pool, rfcomm_service); memory_pool_free(&rfcomm_service_pool, rfcomm_service);
} }
#else
void * btstack_memory_rfcomm_service_get(void){
return NULL;
}
void btstack_memory_rfcomm_service_free(void *rfcomm_service){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_rfcomm_service_get(void){ void * btstack_memory_rfcomm_service_get(void){
return malloc(sizeof(rfcomm_service_t)); return malloc(sizeof(rfcomm_service_t));
@ -155,14 +195,22 @@ void btstack_memory_rfcomm_service_free(void *rfcomm_service){
// MARK: rfcomm_channel_t // MARK: rfcomm_channel_t
#ifdef MAX_NO_RFCOMM_CHANNELS #ifdef MAX_NO_RFCOMM_CHANNELS
#if MAX_NO_RFCOMM_CHANNELS > 0
static rfcomm_channel_t rfcomm_channel_storage[MAX_NO_RFCOMM_CHANNELS]; static rfcomm_channel_t rfcomm_channel_storage[MAX_NO_RFCOMM_CHANNELS];
static memory_pool_t rfcomm_channel_pool; static memory_pool_t rfcomm_channel_pool;
void * btstack_memory_rfcomm_channel_get(void){ void * btstack_memory_rfcomm_channel_get(void){
return memory_pool_get(&rfcomm_channel_pool); return memory_pool_get(&rfcomm_channel_pool);
} }
void btstack_memory_rfcomm_channel_free(void *rfcomm_channel){ void btstack_memory_rfcomm_channel_free(void *rfcomm_channel){
memory_pool_free(&rfcomm_channel_pool, rfcomm_channel); memory_pool_free(&rfcomm_channel_pool, rfcomm_channel);
} }
#else
void * btstack_memory_rfcomm_channel_get(void){
return NULL;
}
void btstack_memory_rfcomm_channel_free(void *rfcomm_channel){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_rfcomm_channel_get(void){ void * btstack_memory_rfcomm_channel_get(void){
return malloc(sizeof(rfcomm_channel_t)); return malloc(sizeof(rfcomm_channel_t));
@ -175,14 +223,22 @@ void btstack_memory_rfcomm_channel_free(void *rfcomm_channel){
// MARK: db_mem_device_name_t // MARK: db_mem_device_name_t
#ifdef MAX_NO_DB_MEM_DEVICE_NAMES #ifdef MAX_NO_DB_MEM_DEVICE_NAMES
#if MAX_NO_DB_MEM_DEVICE_NAMES > 0
static db_mem_device_name_t db_mem_device_name_storage[MAX_NO_DB_MEM_DEVICE_NAMES]; static db_mem_device_name_t db_mem_device_name_storage[MAX_NO_DB_MEM_DEVICE_NAMES];
static memory_pool_t db_mem_device_name_pool; static memory_pool_t db_mem_device_name_pool;
void * btstack_memory_db_mem_device_name_get(void){ void * btstack_memory_db_mem_device_name_get(void){
return memory_pool_get(&db_mem_device_name_pool); return memory_pool_get(&db_mem_device_name_pool);
} }
void btstack_memory_db_mem_device_name_free(void *db_mem_device_name){ void btstack_memory_db_mem_device_name_free(void *db_mem_device_name){
memory_pool_free(&db_mem_device_name_pool, db_mem_device_name); memory_pool_free(&db_mem_device_name_pool, db_mem_device_name);
} }
#else
void * btstack_memory_db_mem_device_name_get(void){
return NULL;
}
void btstack_memory_db_mem_device_name_free(void *db_mem_device_name){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_db_mem_device_name_get(void){ void * btstack_memory_db_mem_device_name_get(void){
return malloc(sizeof(db_mem_device_name_t)); return malloc(sizeof(db_mem_device_name_t));
@ -195,14 +251,22 @@ void btstack_memory_db_mem_device_name_free(void *db_mem_device_name){
// MARK: db_mem_device_link_key_t // MARK: db_mem_device_link_key_t
#ifdef MAX_NO_DB_MEM_DEVICE_LINK_KEYS #ifdef MAX_NO_DB_MEM_DEVICE_LINK_KEYS
#if MAX_NO_DB_MEM_DEVICE_LINK_KEYS > 0
static db_mem_device_link_key_t db_mem_device_link_key_storage[MAX_NO_DB_MEM_DEVICE_LINK_KEYS]; static db_mem_device_link_key_t db_mem_device_link_key_storage[MAX_NO_DB_MEM_DEVICE_LINK_KEYS];
static memory_pool_t db_mem_device_link_key_pool; static memory_pool_t db_mem_device_link_key_pool;
void * btstack_memory_db_mem_device_link_key_get(void){ void * btstack_memory_db_mem_device_link_key_get(void){
return memory_pool_get(&db_mem_device_link_key_pool); return memory_pool_get(&db_mem_device_link_key_pool);
} }
void btstack_memory_db_mem_device_link_key_free(void *db_mem_device_link_key){ void btstack_memory_db_mem_device_link_key_free(void *db_mem_device_link_key){
memory_pool_free(&db_mem_device_link_key_pool, db_mem_device_link_key); memory_pool_free(&db_mem_device_link_key_pool, db_mem_device_link_key);
} }
#else
void * btstack_memory_db_mem_device_link_key_get(void){
return NULL;
}
void btstack_memory_db_mem_device_link_key_free(void *db_mem_device_link_key){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_db_mem_device_link_key_get(void){ void * btstack_memory_db_mem_device_link_key_get(void){
return malloc(sizeof(db_mem_device_link_key_t)); return malloc(sizeof(db_mem_device_link_key_t));
@ -215,14 +279,22 @@ void btstack_memory_db_mem_device_link_key_free(void *db_mem_device_link_key){
// MARK: db_mem_service_t // MARK: db_mem_service_t
#ifdef MAX_NO_DB_MEM_SERVICES #ifdef MAX_NO_DB_MEM_SERVICES
#if MAX_NO_DB_MEM_SERVICES > 0
static db_mem_service_t db_mem_service_storage[MAX_NO_DB_MEM_SERVICES]; static db_mem_service_t db_mem_service_storage[MAX_NO_DB_MEM_SERVICES];
static memory_pool_t db_mem_service_pool; static memory_pool_t db_mem_service_pool;
void * btstack_memory_db_mem_service_get(void){ void * btstack_memory_db_mem_service_get(void){
return memory_pool_get(&db_mem_service_pool); return memory_pool_get(&db_mem_service_pool);
} }
void btstack_memory_db_mem_service_free(void *db_mem_service){ void btstack_memory_db_mem_service_free(void *db_mem_service){
memory_pool_free(&db_mem_service_pool, db_mem_service); memory_pool_free(&db_mem_service_pool, db_mem_service);
} }
#else
void * btstack_memory_db_mem_service_get(void){
return NULL;
}
void btstack_memory_db_mem_service_free(void *db_mem_service){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_db_mem_service_get(void){ void * btstack_memory_db_mem_service_get(void){
return malloc(sizeof(db_mem_service_t)); return malloc(sizeof(db_mem_service_t));
@ -234,31 +306,31 @@ void btstack_memory_db_mem_service_free(void *db_mem_service){
// init // init
void btstack_memory_init(void){ void btstack_memory_init(void){
#ifdef MAX_NO_HCI_CONNECTIONS #if MAX_NO_HCI_CONNECTIONS > 0
memory_pool_create(&hci_connection_pool, hci_connection_storage, MAX_NO_HCI_CONNECTIONS, sizeof(hci_connection_t)); memory_pool_create(&hci_connection_pool, hci_connection_storage, MAX_NO_HCI_CONNECTIONS, sizeof(hci_connection_t));
#endif #endif
#ifdef MAX_NO_L2CAP_SERVICES #if MAX_NO_L2CAP_SERVICES > 0
memory_pool_create(&l2cap_service_pool, l2cap_service_storage, MAX_NO_L2CAP_SERVICES, sizeof(l2cap_service_t)); memory_pool_create(&l2cap_service_pool, l2cap_service_storage, MAX_NO_L2CAP_SERVICES, sizeof(l2cap_service_t));
#endif #endif
#ifdef MAX_NO_L2CAP_CHANNELS #if MAX_NO_L2CAP_CHANNELS > 0
memory_pool_create(&l2cap_channel_pool, l2cap_channel_storage, MAX_NO_L2CAP_CHANNELS, sizeof(l2cap_channel_t)); memory_pool_create(&l2cap_channel_pool, l2cap_channel_storage, MAX_NO_L2CAP_CHANNELS, sizeof(l2cap_channel_t));
#endif #endif
#ifdef MAX_NO_RFCOMM_MULTIPLEXERS #if MAX_NO_RFCOMM_MULTIPLEXERS > 0
memory_pool_create(&rfcomm_multiplexer_pool, rfcomm_multiplexer_storage, MAX_NO_RFCOMM_MULTIPLEXERS, sizeof(rfcomm_multiplexer_t)); memory_pool_create(&rfcomm_multiplexer_pool, rfcomm_multiplexer_storage, MAX_NO_RFCOMM_MULTIPLEXERS, sizeof(rfcomm_multiplexer_t));
#endif #endif
#ifdef MAX_NO_RFCOMM_SERVICES #if MAX_NO_RFCOMM_SERVICES > 0
memory_pool_create(&rfcomm_service_pool, rfcomm_service_storage, MAX_NO_RFCOMM_SERVICES, sizeof(rfcomm_service_t)); memory_pool_create(&rfcomm_service_pool, rfcomm_service_storage, MAX_NO_RFCOMM_SERVICES, sizeof(rfcomm_service_t));
#endif #endif
#ifdef MAX_NO_RFCOMM_CHANNELS #if MAX_NO_RFCOMM_CHANNELS > 0
memory_pool_create(&rfcomm_channel_pool, rfcomm_channel_storage, MAX_NO_RFCOMM_CHANNELS, sizeof(rfcomm_channel_t)); memory_pool_create(&rfcomm_channel_pool, rfcomm_channel_storage, MAX_NO_RFCOMM_CHANNELS, sizeof(rfcomm_channel_t));
#endif #endif
#ifdef MAX_NO_DB_MEM_DEVICE_NAMES #if MAX_NO_DB_MEM_DEVICE_NAMES > 0
memory_pool_create(&db_mem_device_name_pool, db_mem_device_name_storage, MAX_NO_DB_MEM_DEVICE_NAMES, sizeof(db_mem_device_name_t)); memory_pool_create(&db_mem_device_name_pool, db_mem_device_name_storage, MAX_NO_DB_MEM_DEVICE_NAMES, sizeof(db_mem_device_name_t));
#endif #endif
#ifdef MAX_NO_DB_MEM_DEVICE_LINK_KEYS #if MAX_NO_DB_MEM_DEVICE_LINK_KEYS > 0
memory_pool_create(&db_mem_device_link_key_pool, db_mem_device_link_key_storage, MAX_NO_DB_MEM_DEVICE_LINK_KEYS, sizeof(db_mem_device_link_key_t)); memory_pool_create(&db_mem_device_link_key_pool, db_mem_device_link_key_storage, MAX_NO_DB_MEM_DEVICE_LINK_KEYS, sizeof(db_mem_device_link_key_t));
#endif #endif
#ifdef MAX_NO_DB_MEM_SERVICES #if MAX_NO_DB_MEM_SERVICES > 0
memory_pool_create(&db_mem_service_pool, db_mem_service_storage, MAX_NO_DB_MEM_SERVICES, sizeof(db_mem_service_t)); memory_pool_create(&db_mem_service_pool, db_mem_service_storage, MAX_NO_DB_MEM_SERVICES, sizeof(db_mem_service_t));
#endif #endif
} }

View File

@ -6,14 +6,22 @@ void btstack_memory_STRUCT_NAME_free(void *STRUCT_NAME);"""
code_template = """ code_template = """
// MARK: STRUCT_TYPE // MARK: STRUCT_TYPE
#ifdef POOL_COUNT #ifdef POOL_COUNT
#if POOL_COUNT > 0
static STRUCT_TYPE STRUCT_NAME_storage[POOL_COUNT]; static STRUCT_TYPE STRUCT_NAME_storage[POOL_COUNT];
static memory_pool_t STRUCT_NAME_pool; static memory_pool_t STRUCT_NAME_pool;
void * btstack_memory_STRUCT_NAME_get(void){ void * btstack_memory_STRUCT_NAME_get(void){
return memory_pool_get(&STRUCT_NAME_pool); return memory_pool_get(&STRUCT_NAME_pool);
} }
void btstack_memory_STRUCT_NAME_free(void *STRUCT_NAME){ void btstack_memory_STRUCT_NAME_free(void *STRUCT_NAME){
memory_pool_free(&STRUCT_NAME_pool, STRUCT_NAME); memory_pool_free(&STRUCT_NAME_pool, STRUCT_NAME);
} }
#else
void * btstack_memory_STRUCT_NAME_get(void){
return NULL;
}
void btstack_memory_STRUCT_NAME_free(void *STRUCT_NAME){
};
#endif
#elif defined(HAVE_MALLOC) #elif defined(HAVE_MALLOC)
void * btstack_memory_STRUCT_NAME_get(void){ void * btstack_memory_STRUCT_NAME_get(void){
return malloc(sizeof(STRUCT_TYPE)); return malloc(sizeof(STRUCT_TYPE));
@ -24,7 +32,7 @@ void btstack_memory_STRUCT_NAME_free(void *STRUCT_NAME){
#endif #endif
""" """
init_template = """#ifdef POOL_COUNT init_template = """#if POOL_COUNT > 0
memory_pool_create(&STRUCT_NAME_pool, STRUCT_NAME_storage, POOL_COUNT, sizeof(STRUCT_TYPE)); memory_pool_create(&STRUCT_NAME_pool, STRUCT_NAME_storage, POOL_COUNT, sizeof(STRUCT_TYPE));
#endif""" #endif"""