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
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_length(const io_request* request);
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->length = ioRequest->Length();
request->isWrite = ioRequest->IsWrite();
request->isVIP = (ioRequest->Flags() & B_VIP_IO_REQUEST) != 0;
// send the request
KernelRequestHandler handler(this, DO_IO_REPLY);
@@ -15,13 +15,16 @@ struct IORequestInfo {
size_t length;
int32 id;
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),
length(length),
id(id),
isWrite(isWrite)
isWrite(isWrite),
isVIP(isVIP)
{
}
@@ -30,7 +33,8 @@ struct IORequestInfo {
offset(other.offset),
length(other.length),
id(other.id),
isWrite(other.isWrite)
isWrite(other.isWrite),
isVIP(other.isVIP)
{
}
};
@@ -572,7 +572,7 @@ UserlandRequestHandler::_HandleRequest(DoIORequest* request)
if (result == B_OK) {
RequestThreadContext context(volume, request);
IORequestInfo requestInfo(request->request, request->isWrite,
request->offset, request->length);
request->offset, request->length, request->isVIP);
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
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.
This is the immutable offset the request was created with;
read_from_io_request() and write_to_io_request() don't change it.