From 04b174ca25bb106f620a42500413c3d4a38fe0c5 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 21 Apr 2010 11:20:07 +0000 Subject: [PATCH] * Moved IOCallback class into separate source file. * Moved IOScheduler::_IOCallbackWrapper() to IOCallback::WrapperFunction(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36394 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/device_manager/IOCallback.cpp | 27 +++++++++++++++++++ src/system/kernel/device_manager/IOCallback.h | 27 +++++++++++++++++++ .../kernel/device_manager/IOScheduler.cpp | 24 +---------------- .../kernel/device_manager/IOScheduler.h | 16 ++--------- src/system/kernel/device_manager/Jamfile | 3 ++- 5 files changed, 59 insertions(+), 38 deletions(-) create mode 100644 src/system/kernel/device_manager/IOCallback.cpp create mode 100644 src/system/kernel/device_manager/IOCallback.h diff --git a/src/system/kernel/device_manager/IOCallback.cpp b/src/system/kernel/device_manager/IOCallback.cpp new file mode 100644 index 0000000000..4a8a2d9edc --- /dev/null +++ b/src/system/kernel/device_manager/IOCallback.cpp @@ -0,0 +1,27 @@ +/* + * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2004-2009, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include "IOCallback.h" + + +IOCallback::~IOCallback() +{ +} + + +status_t +IOCallback::DoIO(IOOperation* operation) +{ + return B_ERROR; +} + + +/*static*/ status_t +IOCallback::WrapperFunction(void* data, io_operation* operation) +{ + return ((IOCallback*)data)->DoIO(operation); +} diff --git a/src/system/kernel/device_manager/IOCallback.h b/src/system/kernel/device_manager/IOCallback.h new file mode 100644 index 0000000000..7fb1e812a3 --- /dev/null +++ b/src/system/kernel/device_manager/IOCallback.h @@ -0,0 +1,27 @@ +/* + * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2004-2008, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ +#ifndef IO_CALLBACK_H +#define IO_CALLBACK_H + + +#include "IORequest.h" + + +typedef status_t (*io_callback)(void* data, io_operation* operation); + + +class IOCallback { +public: + virtual ~IOCallback(); + + virtual status_t DoIO(IOOperation* operation) = 0; + + static status_t WrapperFunction(void* data, + io_operation* operation); +}; + + +#endif // IO_CALLBACK_H diff --git a/src/system/kernel/device_manager/IOScheduler.cpp b/src/system/kernel/device_manager/IOScheduler.cpp index 49e2fdc0f6..5315253ff9 100644 --- a/src/system/kernel/device_manager/IOScheduler.cpp +++ b/src/system/kernel/device_manager/IOScheduler.cpp @@ -31,21 +31,6 @@ #endif -// #pragma mark - IOCallback - - -IOCallback::~IOCallback() -{ -} - - -status_t -IOCallback::DoIO(IOOperation* operation) -{ - return B_ERROR; -} - - // #pragma mark - @@ -254,7 +239,7 @@ IOScheduler::InitCheck() const void IOScheduler::SetCallback(IOCallback& callback) { - SetCallback(&_IOCallbackWrapper, &callback); + SetCallback(&IOCallback::WrapperFunction, &callback); } @@ -870,13 +855,6 @@ IOScheduler::_GetRequestOwner(team_id team, thread_id thread, bool allocate) } -/*static*/ status_t -IOScheduler::_IOCallbackWrapper(void* data, io_operation* operation) -{ - return ((IOCallback*)data)->DoIO(operation); -} - - // #pragma mark - IOSchedulerNotificationService diff --git a/src/system/kernel/device_manager/IOScheduler.h b/src/system/kernel/device_manager/IOScheduler.h index 42197c3aa1..3ec0deb67e 100644 --- a/src/system/kernel/device_manager/IOScheduler.h +++ b/src/system/kernel/device_manager/IOScheduler.h @@ -1,5 +1,5 @@ /* - * Copyright 2008-2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de. * Copyright 2004-2008, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -16,6 +16,7 @@ #include #include "dma_resources.h" +#include "IOCallback.h" #include "IORequest.h" @@ -29,16 +30,6 @@ #define IO_SCHEDULER_OPERATION_FINISHED 0x20 -class IOCallback { -public: - virtual ~IOCallback(); - - virtual status_t DoIO(IOOperation* operation) = 0; -}; - -typedef status_t (*io_callback)(void* data, io_operation* operation); - - struct IORequestOwner : DoublyLinkedListLinkImpl { team_id team; thread_id thread; @@ -114,9 +105,6 @@ private: IORequestOwner* _GetRequestOwner(team_id team, thread_id thread, bool allocate); - static status_t _IOCallbackWrapper(void* data, - io_operation* operation); - private: DMAResource* fDMAResource; char* fName; diff --git a/src/system/kernel/device_manager/Jamfile b/src/system/kernel/device_manager/Jamfile index 40013c0b28..5f5264dd37 100644 --- a/src/system/kernel/device_manager/Jamfile +++ b/src/system/kernel/device_manager/Jamfile @@ -11,12 +11,13 @@ KernelMergeObject kernel_device_manager.o : FileDevice.cpp id_generator.cpp io_resources.cpp - IOScheduler.cpp legacy_drivers.cpp dma_resources.cpp io_requests.cpp + IOCallback.cpp IORequest.cpp + IOScheduler.cpp : $(TARGET_KERNEL_PIC_CCFLAGS) ;