⛏️ index : haiku.git

/*
 * Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */


#include "IOScheduler.h"

#include <stdlib.h>
#include <string.h>

#include "IOSchedulerRoster.h"


IOScheduler::IOScheduler(DMAResource* resource)
	:
	fDMAResource(resource),
	fName(NULL),
	fID(IOSchedulerRoster::Default()->NextID()),
	fIOCallback(NULL),
	fIOCallbackData(NULL),
	fSchedulerRegistered(false)
{
}


IOScheduler::~IOScheduler()
{
	if (fSchedulerRegistered)
		IOSchedulerRoster::Default()->RemoveScheduler(this);

	free(fName);
}


status_t
IOScheduler::Init(const char* name)
{
	fName = strdup(name);
	if (fName == NULL)
		return B_NO_MEMORY;

	IOSchedulerRoster::Default()->AddScheduler(this);
	fSchedulerRegistered = true;

	return B_OK;
}


void
IOScheduler::SetCallback(IOCallback& callback)
{
	SetCallback(&IOCallback::WrapperFunction, &callback);
}


void
IOScheduler::SetCallback(io_callback callback, void* data)
{
	fIOCallback = callback;
	fIOCallbackData = data;
}


void
IOScheduler::SetDeviceCapacity(off_t deviceCapacity)
{
}


void
IOScheduler::MediaChanged()
{
}