void OSystem_Wii::deleteMutex(MutexRef mutex) { s32 res = LWP_MutexDestroy(*(mutex_t *) mutex); if (res) printf("ERROR destroying mutex %p (%d)\n", mutex, res); free(mutex); }
void CMEM2Alloc::cleanup(void) { LWP_MutexDestroy(m_mutex); m_mutex = 0; m_first = 0; // Try to release the range we took through SYS functions if (SYS_GetArena2Lo() == m_endAddress) SYS_SetArena2Lo(m_baseAddress); m_baseAddress = 0; m_endAddress = 0; }
int __libogc_lock_close(int *lock) { s32 ret; mutex_t plock; if(!lock || *lock==LWP_MUTEX_NULL) return -1; plock = (mutex_t)*lock; ret = LWP_MutexDestroy(plock); *lock = LWP_MUTEX_NULL; return ret; }
int __libogc_lock_close(int *lock) { s32 ret; mutex_t plock; if(!lock || *lock==0) return -1; plock = (mutex_t)*lock; ret = LWP_MutexDestroy(plock); if(ret==0) *lock = 0; return ret; }
void ntfsDeinitVolume (ntfs_vd *vd) { // Sanity check if (!vd) { errno = ENODEV; return; } // Lock ntfsLock(vd); // Close any directories which are still open (lazy programmers!) ntfs_dir_state *nextDir = vd->firstOpenDir; while (nextDir) { ntfs_log_warning("Cleaning up orphaned directory @ %p\n", nextDir); ntfsCloseDir(nextDir); nextDir = nextDir->nextOpenDir; } // Close any files which are still open (lazy programmers!) ntfs_file_state *nextFile = vd->firstOpenFile; while (nextFile) { ntfs_log_warning("Cleaning up orphaned file @ %p\n", nextFile); ntfsCloseFile(nextFile); nextFile = nextFile->nextOpenFile; } // Reset open directory and file stats vd->openDirCount = 0; vd->openFileCount = 0; vd->firstOpenDir = NULL; vd->firstOpenFile = NULL; // Close the volumes current directory (if any) //if (vd->cwd_ni) { //ntfsCloseEntry(vd, vd->cwd_ni); //vd->cwd_ni = NULL; //} // Force the underlying device to sync ntfs_device_sync(vd->dev); // Unlock ntfsUnlock(vd); #ifndef LIBXENON // Deinitialise the volume lock LWP_MutexDestroy(vd->lock); #endif return; }
void destroyBlinkTexts(struct stBlinkTextsGroup *stBlinkTexts) { unsigned char i; if (stBlinkTexts->intThreadId!=LWP_THREAD_NULL) { while (LWP_MutexLock(stBlinkTexts->mtxThread)) {} for (i=0;i<stBlinkTexts->chBlinkTextsCount;i++) { stBlinkTexts->stBlinkTexts[i].stBlinkTimer.blnRunning=false; free(stBlinkTexts->stBlinkTexts[i].strBlinkText); stBlinkTexts->stBlinkTexts[i].strBlinkText=NULL; } LWP_MutexUnlock(stBlinkTexts->mtxThread); LWP_JoinThread(stBlinkTexts->intThreadId,NULL); LWP_MutexDestroy(stBlinkTexts->mtxThread); stBlinkTexts->intThreadId=LWP_THREAD_NULL; stBlinkTexts->mtxThread=LWP_MUTEX_NULL; } }
void log_console_deinit(void) { u16 i; if (log_size && log) { for (i = 0; i < log_size; ++i) if (log[i]) free(log[i]); free(log); log = NULL; } log_size = 0; log_next = 0; devoptab_list[STD_OUT] = dot_video; devoptab_list[STD_ERR] = dot_video; VIDEO_SetPostRetraceCallback(rcb); LWP_MutexDestroy(console_mutex); dot_video = NULL; }
s32 USBStorageOGC_Close(usbstorage_handle *dev) { if(dev != NULL) { important_storage_data *d = (important_storage_data*)0x932C1000; d->sector_size = __sector_size; d->sector_count = __sector_count; d->lun = __lun; d->vid = __vid; d->pid = __pid; d->tag = dev->tag; d->interface = dev->interface; d->usb_fd = dev->usb_fd; d->ep_in = dev->ep_in; d->ep_out = dev->ep_out; DCFlushRange((void*)0x932C1000, sizeof(important_storage_data)); } __mounted = false; __lun = 0; __vid = 0; __pid = 0; if (dev->usb_fd != -1) USB_OGC_CloseDevice(&dev->usb_fd); LWP_MutexDestroy(dev->lock); SYS_RemoveAlarm(dev->alarm); if(dev->sector_size) free(dev->sector_size); if (dev->buffer) __lwp_heap_free(&__heap, dev->buffer); memset(dev, 0, sizeof(*dev)); dev->usb_fd = -1; return 0; }
s32 USBStorage_Close(usbstorage_handle *dev) { __mounted = false; __lun = 0; __vid = 0; __pid = 0; if (dev->usb_fd != -1) USB_CloseDevice(&dev->usb_fd); LWP_MutexDestroy(dev->lock); SYS_RemoveAlarm(dev->alarm); if(dev->sector_size) free(dev->sector_size); if (dev->buffer) __lwp_heap_free(&__heap, dev->buffer); memset(dev, 0, sizeof(*dev)); dev->usb_fd = -1; return 0; }
void mutex_destroy(bor_mutex *mutex) { LWP_MutexDestroy(*mutex); free(mutex); }
~mutex() noexcept { LWP_MutexDestroy(mutex_); }