Added public io_request_is_vip(), returning whether the given request has the

VIP flag set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37678 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2010-07-22 11:08:34 +00:00
parent ab58e877e8
commit 0a1dabca7e
6 changed files with 25 additions and 4 deletions
+1
View File
@@ -20,6 +20,7 @@ extern "C" {
#endif #endif
bool io_request_is_write(const io_request* request); bool io_request_is_write(const io_request* request);
bool io_request_is_vip(const io_request* request);
off_t io_request_offset(const io_request* request); off_t io_request_offset(const io_request* request);
off_t io_request_length(const io_request* request); off_t io_request_length(const io_request* request);
status_t read_from_io_request(io_request* request, void* buffer, status_t read_from_io_request(io_request* request, void* buffer,
@@ -1228,6 +1228,7 @@ Volume::DoIO(void* _node, void* cookie, io_request* ioRequest)
request->offset = ioRequest->Offset(); request->offset = ioRequest->Offset();
request->length = ioRequest->Length(); request->length = ioRequest->Length();
request->isWrite = ioRequest->IsWrite(); request->isWrite = ioRequest->IsWrite();
request->isVIP = (ioRequest->Flags() & B_VIP_IO_REQUEST) != 0;
// send the request // send the request
KernelRequestHandler handler(this, DO_IO_REPLY); KernelRequestHandler handler(this, DO_IO_REPLY);
@@ -15,13 +15,16 @@ struct IORequestInfo {
size_t length; size_t length;
int32 id; int32 id;
bool isWrite; bool isWrite;
bool isVIP;
IORequestInfo(int32 id, bool isWrite, off_t offset, size_t length) IORequestInfo(int32 id, bool isWrite, off_t offset, size_t length,
bool isVIP)
: :
offset(offset), offset(offset),
length(length), length(length),
id(id), id(id),
isWrite(isWrite) isWrite(isWrite),
isVIP(isVIP)
{ {
} }
@@ -30,7 +33,8 @@ struct IORequestInfo {
offset(other.offset), offset(other.offset),
length(other.length), length(other.length),
id(other.id), id(other.id),
isWrite(other.isWrite) isWrite(other.isWrite),
isVIP(other.isVIP)
{ {
} }
}; };
@@ -572,7 +572,7 @@ UserlandRequestHandler::_HandleRequest(DoIORequest* request)
if (result == B_OK) { if (result == B_OK) {
RequestThreadContext context(volume, request); RequestThreadContext context(volume, request);
IORequestInfo requestInfo(request->request, request->isWrite, IORequestInfo requestInfo(request->request, request->isWrite,
request->offset, request->length); request->offset, request->length, request->isVIP);
result = volume->DoIO(request->node, request->fileCookie, requestInfo); result = volume->DoIO(request->node, request->fileCookie, requestInfo);
} }
@@ -343,6 +343,13 @@ io_request_is_write(const io_request* request)
} }
bool
io_request_is_vip(const io_request* request)
{
return ((HaikuKernelIORequest*)request)->isVIP;
}
off_t off_t
io_request_offset(const io_request* request) io_request_offset(const io_request* request)
{ {
@@ -52,6 +52,14 @@ io_request_is_write(const io_request* request)
} }
/*! Returns whether the I/O request has VIP status. */
bool
io_request_is_vip(const io_request* request)
{
return (request->Flags() & B_VIP_IO_REQUEST) != 0;
}
/*! Returns the read/write offset of the given I/O request. /*! Returns the read/write offset of the given I/O request.
This is the immutable offset the request was created with; This is the immutable offset the request was created with;
read_from_io_request() and write_to_io_request() don't change it. read_from_io_request() and write_to_io_request() don't change it.