#include <RandomAccessRequest.h>
Public Types | |
enum | Type { READ, WRITE } |
typedef IntrusiveList< RandomAccessRequestBinding > | BindingList |
typedef IntrusiveListIter< RandomAccessRequestBinding > | BindingListIter |
typedef IntrusiveListMutator< RandomAccessRequestBinding > | BindingListMutator |
Public Member Functions | |
void | execute () |
Executes this request. | |
Public Attributes | |
RandomAccessDevice * | pDevice |
The device to be accessed. | |
FileSize | cbOffset |
Byte offset within device at which access should start. | |
FileSize | cbTransfer |
Number of bytes to be transferred. | |
Type | type |
Access type: READ for transfer from device to memory; WRITE for transfer from memory to device. | |
BindingList | bindingList |
Bindings for memory source or destination and notifications. |
Currently supported operations are reads and writes spanning a contiguous range of byte offsets within the device. The RandomAccessRequestBinding memory locations need not be contiguous (scatter/gather).
Definition at line 94 of file RandomAccessRequest.h.
Definition at line 102 of file RandomAccessRequest.h.
Definition at line 103 of file RandomAccessRequest.h.
Definition at line 105 of file RandomAccessRequest.h.
void RandomAccessRequest::execute | ( | ) |
Executes this request.
(Satisfies the ThreadPool Task signature, allowing instances of this class to be submitted directly as a Task by ThreadPoolScheduler).
Definition at line 137 of file DeviceAccessScheduler.cpp.
References pDevice, and RandomAccessDevice::transfer().
The device to be accessed.
It's a pointer rather than a reference so that RandomAccessRequest behaves as a concrete class.
Definition at line 111 of file RandomAccessRequest.h.
Referenced by SegPageBackupRestoreDevice::backupPage(), execute(), CacheImpl< PageT, VictimPolicyT >::prefetchBatch(), RandomAccessFileDevice::prepareTransfer(), SegPageBackupRestoreDevice::restorePage(), ThreadPoolScheduler::schedule(), IoCompletionPortScheduler::schedule(), AioSignalScheduler::schedule(), AioPollingScheduler::schedule(), AioLinuxScheduler::schedule(), RandomAccessFileDeviceTest::testAsyncIOImpl(), RandomAccessFileDevice::transfer(), and CacheImpl< PageT, VictimPolicyT >::transferPageAsync().
Byte offset within device at which access should start.
Definition at line 116 of file RandomAccessRequest.h.
Referenced by SegPageBackupRestoreDevice::backupPage(), CacheImpl< PageT, VictimPolicyT >::prefetchBatch(), RandomAccessFileDevice::prepareTransfer(), SegPageBackupRestoreDevice::restorePage(), ThreadPoolScheduler::schedule(), IoCompletionPortScheduler::schedule(), RandomAccessFileDeviceTest::testAsyncIOImpl(), FileDevice::transfer(), and CacheImpl< PageT, VictimPolicyT >::transferPageAsync().
Number of bytes to be transferred.
Definition at line 121 of file RandomAccessRequest.h.
Referenced by SegPageBackupRestoreDevice::backupPage(), CacheImpl< PageT, VictimPolicyT >::prefetchBatch(), RandomAccessFileDevice::prepareTransfer(), SegPageBackupRestoreDevice::restorePage(), ThreadPoolScheduler::schedule(), IoCompletionPortScheduler::schedule(), RandomAccessFileDeviceTest::testAsyncIOImpl(), FileDevice::transfer(), and CacheImpl< PageT, VictimPolicyT >::transferPageAsync().
Access type: READ for transfer from device to memory; WRITE for transfer from memory to device.
Definition at line 127 of file RandomAccessRequest.h.
Referenced by SegPageBackupRestoreDevice::backupPage(), CacheImpl< PageT, VictimPolicyT >::prefetchBatch(), RandomAccessFileDevice::prepareTransfer(), SegPageBackupRestoreDevice::restorePage(), ThreadPoolScheduler::schedule(), IoCompletionPortScheduler::schedule(), AioSignalScheduler::schedule(), RandomAccessFileDeviceTest::testAsyncIOImpl(), FileDevice::transfer(), and CacheImpl< PageT, VictimPolicyT >::transferPageAsync().
Bindings for memory source or destination and notifications.
Definition at line 132 of file RandomAccessRequest.h.
Referenced by SegPageBackupRestoreDevice::backupPage(), CacheImpl< PageT, VictimPolicyT >::prefetchBatch(), RandomAccessFileDevice::prepareTransfer(), SegPageBackupRestoreDevice::restorePage(), ThreadPoolScheduler::schedule(), IoCompletionPortScheduler::schedule(), AioSignalScheduler::schedule(), AioPollingScheduler::schedule(), AioLinuxScheduler::schedule(), RandomAccessFileDeviceTest::testAsyncIOImpl(), FileDevice::transfer(), and CacheImpl< PageT, VictimPolicyT >::transferPageAsync().