xref: /haiku/src/add-ons/kernel/file_systems/userlandfs/server/haiku/HaikuKernelIORequest.h (revision 5147963dcd57fefa4f63c484eb88e9eaf4002976)
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