1 /* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef USERLAND_FS_HAIKU_KERNEL_IO_REQUEST_H 6 #define USERLAND_FS_HAIKU_KERNEL_IO_REQUEST_H 7 8 #include <fs_interface.h> 9 10 #include <util/OpenHashTable.h> 11 12 #include "../IORequestInfo.h" 13 14 15 namespace UserlandFS { 16 17 class HaikuKernelVolume; 18 19 struct HaikuKernelIORequest : IORequestInfo { 20 21 HaikuKernelVolume* volume; 22 int32 refCount; 23 HaikuKernelIORequest* hashLink; 24 HaikuKernelIORequestHaikuKernelIORequest25 HaikuKernelIORequest(HaikuKernelVolume* volume, const IORequestInfo& info) 26 : 27 IORequestInfo(info), 28 volume(volume), 29 refCount(1) 30 { 31 } 32 }; 33 34 struct HaikuKernelIterativeFDIOCookie { 35 int fd; 36 HaikuKernelIORequest* request; 37 iterative_io_get_vecs getVecs; 38 iterative_io_finished finished; 39 void* cookie; 40 HaikuKernelIterativeFDIOCookieHaikuKernelIterativeFDIOCookie41 HaikuKernelIterativeFDIOCookie(int fd, HaikuKernelIORequest* request, 42 iterative_io_get_vecs getVecs, iterative_io_finished finished, 43 void* cookie) 44 : 45 fd(fd), 46 request(request), 47 getVecs(getVecs), 48 finished(finished), 49 cookie(cookie) 50 { 51 } 52 }; 53 54 } // namespace UserlandFS 55 56 57 using UserlandFS::HaikuKernelIORequest; 58 using UserlandFS::HaikuKernelIterativeFDIOCookie; 59 60 61 #endif // USERLAND_FS_HAIKU_KERNEL_IO_REQUEST_H 62