SharedMemoryManager::~SharedMemoryManager() { if(m_memory_created) { destroyMemory(m_interface_name); } }
void destroyOne (pulsar *psr) { int i = 0; if (psr->obsn) free (psr->obsn); if (psr->covar) { for(i=0;i<MAX_PARAMS;i++) free (psr->covar[i]); free (psr->covar); } destroyMemory(psr); }
void destroyOne (pulsar *psr) { if (psr->obsn) free (psr->obsn); free_blas(psr->covar); for (int k=0; k < MAX_PARAMS; ++k){ if(psr->constraint_special[k]){ free(psr->constraint_special[k]); } } destroyMemory(psr); }
/** * Load ROM from file. * \param [in] filename ROM filename. * \param [out] memmap Memory map. * \return 1 upon success, 0 if an error occured. */ int loadROM(const char* filename, MemoryMap* memmap) { FILE *in; size_t size; size_t count, nRead; /* Open file */ in = fopen(filename, "rb"); if(NULL == in) { ERROR_MSG("Unable to open %s : %s", filename, strerror(errno)); return 0; } /* Compute file size. */ fseek(in, 0, SEEK_END); size = ftell(in); fseek(in, 0, SEEK_SET); size -= ftell(in); /* Check size */ if(0 == size) { ERROR_MSG("Empty file: %s", filename); goto err_0; } /* Check for possible header */ if(size & 0x200) { /* Jump header */ size &= ~0x200; if(fseek(in, 0x200, SEEK_SET)) { ERROR_MSG("Failed to jump rom header in %s: %s", filename, strerror(errno)); goto err_0; } } /* Allocate rom storage */ if(0 == createMemory(&memmap->rom, (size + 0x1fff) & ~0x1fff)) { ERROR_MSG("Failed to allocate ROM storage : %s", strerror(errno)); goto err_0; } /* Fill rom with 0xff */ memset(memmap->rom.data, 0xff, memmap->rom.len); /* Read ROM data */ count = (size < memmap->rom.len) ? size : memmap->rom.len; nRead = fread(memmap->rom.data, 1, count, in); if(nRead != count) { ERROR_MSG("Failed to read ROM data from %s : %s", filename, strerror(errno)); goto err_1; } fclose(in); /* Initialize ROM pages (from mednafen source code). */ /* Note : the decrement by (i*8192) is a trick to avoid doing a * bitwise with the address when reading a byte from that * page. */ if(0x60000 == memmap->rom.len) { int i; for(i=0; i<64; i++) { memmap->page[i] = &memmap->rom.data[(i & 0x1f) * 8192] - (i*8192); } for(i=64; i<128; i++) { memmap->page[i] = &memmap->rom.data[((i & 0x0f) + 32) * 8192] - (i*8192); } } else if(0x80000 == memmap->rom.len) { int i; for(i=0; i<64; i++) { memmap->page[i] = &memmap->rom.data[(i & 0x3f) * 8192] - (i*8192); } for(i=64; i<128; i++) { memmap->page[i] = &memmap->rom.data[((i & 0x1f) + 32) * 8192] - (i*8192); } } else { int i; for(i=0; i<128; i++) { uint8_t bank = i % (memmap->rom.len / 8192); memmap->page[i] = &memmap->rom.data[bank * 8192] - (i*8192); } } return 1; err_1: destroyMemory(&memmap->rom); err_0: fclose(in); return 0; }