static status_t cd_write(void* cookie, off_t pos, const void* buffer, size_t* _length) { cd_handle* handle = (cd_handle*)cookie; size_t length = *_length; if (handle->info->capacity == 0) return B_DEV_NO_MEDIA; IORequest request; status_t status = request.Init(pos, (addr_t)buffer, length, true, 0); if (status != B_OK) return status; status = handle->info->io_scheduler->ScheduleRequest(&request); if (status != B_OK) return status; status = request.Wait(0, 0); if (status == B_OK) *_length = length; else dprintf("cd_write(): request.Wait() returned: %s\n", strerror(status)); return status; }
static status_t das_write(void* cookie, off_t pos, const void* buffer, size_t* _length) { das_handle* handle = (das_handle*)cookie; size_t length = *_length; IORequest request; status_t status = request.Init(pos, (void*)buffer, length, true, 0); if (status != B_OK) return status; status = handle->info->io_scheduler->ScheduleRequest(&request); if (status != B_OK) return status; status = request.Wait(0, 0); if (status == B_OK) *_length = length; else dprintf("das_write(): request.Wait() returned: %s\n", strerror(status)); return status; }