kvisc/vm/dv/DEVCTL

39 lines
1.5 KiB
Plaintext

# The OS/K Team licenses this file to you under the MIT license.
# See the LICENSE file in the project root for more information.
To communicate with devices, use:
devctl #dev #slot
iocall #dev #slot
This will call a function from the device's slot table.
It will take registers ax0-ax7 as its parameters, and
return a value in rdx:rax.
The return value in rax is a status value:
≥0 ok (>0 only when meaningful)
-1 unspecified error
-2 no such device
-3 device powered off
-4 device fatal error
-5 device not plugged
-6 no such function slot
-7 slot not implemented
-8 slot reserved
-9 invalid parameters
-10 to -256 (reserved)
< -256 (left to device)
The slots for "devctl" are architecture-rerserved.
They consist of the following functions:
Slot Param (ax0) Description
0 ptr Write device type into 32-bytes buffer
1 ptr Write device name into 32-bytes buffer
2 ptr Write device model into 32-bytes buffer
3 ptr Write device vendor into 32-bytes buffer
4 rax=major, rdx=minor
5 rax=feats, rdx=revis
The slots for "iocall" are device-defined. (They correspond
to the "fslots" array of the dev_t structure.) See that
particular device's documentation (if any).