Extend database memory by adding a memory device.
MCO_RET mco_db_extend_dev( /*IN*/ const char* dbname, /*IN*/ mco_device_t * dev );
dbname | The name of the database to extend |
dev | The device to be added |
This function extends the available database memory by adding the specified memory device.
const char * dbname = "SimpleDb"; int main(int argc, char* argv[]) { mco_db_h db; MCO_RET rc; mco_device_t dev; int n_segments = 0; char *mem = malloc( DBSIZE ); ... if( (rc = mco_runtime_start()) != MCO_S_OK) exit(-1); rc = mco_db_open( dbname, simpledb_get_dictionary(), mem, DBSIZE, (uint2)PAGESIZE ); ... rc = mco_db_connect(dbname, &db); ... /* If low memory situation detected (see "Auxiliary APIs: Statistics") */ mco_db_free_pages(db, &freepages); mco_db_total_pages(db, &totalpages ); if(freepages < totalpages / 10) { // yes. Extend the database while ( MAX_SEGMENTS > n_segments ) { dev[n_segments].type = MCO_MEMORY_CONV; dev[n_segments].assignment = MCO_MEMORY_ASSIGN_DATABASE; dev[n_segments].size = SEGMENT_SIZE; dev[n_segments].dev.conv.ptr = (void*)malloc( SEGMENT_SIZE ); rc = mco_db_extend_dev(dbname, &dev[n_segments]); if ( MCO_S_OK != rc ) break; /* if extend failed exit loop */ n_segments++; } ... } }