Example #1
0
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;
}
Example #2
0
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;
}