haiku/docs/develop/storage/DiskDeviceAPI_Protocols

91 lines
2.5 KiB
Plaintext
Raw Normal View History

Disk Device Protocols
=====================
disk device job scheduled message
target: Registered job update BMessengers
message: B_DISK_DEVICE_JOB_SCHEDULED
"job_id": B_INT32_TYPE
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
-----------------------------------------------------------------------
disk device job initiated message
target: Registered job update BMessengers
message: B_DISK_DEVICE_JOB_INITIATED
"job_id": B_INT32_TYPE
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
-----------------------------------------------------------------------
disk device job canceled message
target: Registered job update BMessengers
message: B_DISK_DEVICE_JOB_CANCELED
"job_id": B_INT32_TYPE
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
-----------------------------------------------------------------------
disk device job finished message
target: Registered job update BMessengers
message: B_DISK_DEVICE_JOB_FINISHED
"job_id": B_INT32_TYPE
"succeeded": B_BOOL_TYPE
[ "info": B_STRING_TYPE ]
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
- info: Optional description of success or failure
notes:
A separate job finished message is needed, as rounding error in
the computation of job progress may result in multiple
B_DISK_DEVICE_JOB_UPDATE messages with "progress" fields of 100.
-----------------------------------------------------------------------
disk device job simple progress update message
target: Registered job simple progress update BMessengers
message: B_DISK_DEVICE_JOB_SIMPLE_PROGRESS
"job_id": B_INT32_TYPE
"progress": B_UINT8_TYPE
"info": B_STRING_TYPE
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
- progress: Percent of job completed (0 to 100)
- info: Description of current action being taken, i.e.
"allocating inodes", "writing superblock", etc.
-----------------------------------------------------------------------
disk device job extra progress update message
target: Registered job extra progress update BMessengers
message: B_DISK_DEVICE_JOB_EXTRA_PROGRESS
"job_id": B_INT32_TYPE
"info": B_STRING_TYPE
reply: none (asynchronous message)
message fields:
- job_id: Unique job identifier
- info: Extended progress info string, i.e. "block 123: found
invalid inode; fixing"
-----------------------------------------------------------------------