github ↗
docs menu

Module Rig_mlx5_abi.Doorbell

A doorbell record holds a count that a process stores for the NIC in its memory.

A queue pair's record and a completion queue's record are 8 bytes each, aligned to 8.

#val size : int

size is 8, the bytes of a record.

#val send : int

send is the byte offset in a queue pair's record of its send count, a 32-bit word holding the low 16 bits of the ring's producer count.

#val receive : int

receive is the byte offset in a queue pair's record of its receive count, a 32-bit word holding the low 16 bits of the receive ring's producer count.

#val consumed : int

consumed is the byte offset in a completion queue's record of its consumer count, a 32-bit word holding the count's low 24 bits.

#val armed : int

armed is the byte offset in a completion queue's record of its arm word, the first word of arm.

#val arm : sequence:int -> count:int -> cq:int -> int * int

arm ~sequence ~count ~cq is the two 32-bit words of the store that arms completion queue number cq at consumer count count, after which the NIC raises an event at the next completion. sequence counts the events the queue raised, and its low 2 bits are stored. The first word is also stored at armed.

Raises Invalid_argument if sequence or count is negative, or cq is not in [0;2{^24}-1].