private SubmissionQueue(uint *head, uint *tail, uint *ringMask, uint *ringEntries, uint *flags, uint *dropped, uint *array, io_uring_sqe *sqes) { _head = head; _tail = tail; _ringMask = ringMask; _ringEntries = ringEntries; _flags = flags; _dropped = dropped; _array = array; _sqes = sqes; _tailInternal = 0; _headInternal = 0; }
public SubmissionQueue(int ringFd, void *ringBase, io_sqring_offsets *offsets, io_uring_sqe *elements, bool sqPolled, bool ioPolled) : this(ringBase, offsets) { _ringFd = ringFd; _head = Add <uint>(ringBase, offsets->head); _tail = Add <uint>(ringBase, offsets->tail); _ringMask = *Add <uint>(ringBase, offsets->ring_mask); _ringEntries = *Add <uint>(ringBase, offsets->ring_entries); _flags = Add <uint>(ringBase, offsets->flags); _dropped = Add <uint>(ringBase, offsets->dropped); _array = Add <uint>(ringBase, offsets->array); _sqes = elements; _tailInternal = 0; _headInternal = 0; _sqPolled = sqPolled; _ioPolled = ioPolled; }
private bool NextSubmissionQueueEntry(out io_uring_sqe *sqe) { sqe = _sq.NextSubmissionQueueEntry(); if (sqe == NULL) { if (Flush(Submit()) > 0) { // Flushed one more item, retry to get an entry sqe = _sq.NextSubmissionQueueEntry(); if (sqe == NULL) { return(false); } } } return(true); }
private SubmissionAcquireResult NextSubmissionQueueEntry(out io_uring_sqe *sqe) { sqe = (io_uring_sqe *)NULL; if (!CheckAndIncrementOperationsInFlight()) { return(SubmissionAcquireResult.TooManyOperationsInFlight); } var result = _sq.NextSubmissionQueueEntry(); if (result == NULL) { return(SubmissionAcquireResult.SubmissionQueueFull); } sqe = result; return(SubmissionAcquireResult.SubmissionAcquired); }
internal Submission(io_uring_sqe *sqe) { _sqe = sqe; }
public static SubmissionQueue CreateSubmissionQueue(void *ringBase, io_sqring_offsets *offsets, io_uring_sqe *elements) => new SubmissionQueue( head: Add <uint>(ringBase, offsets->head), tail: Add <uint>(ringBase, offsets->tail), ringMask: Add <uint>(ringBase, offsets->ring_mask), ringEntries: Add <uint>(ringBase, offsets->ring_entries), flags: Add <uint>(ringBase, offsets->flags), dropped: Add <uint>(ringBase, offsets->dropped), array: Add <uint>(ringBase, offsets->array), sqes: elements );
internal Submission(io_uring_sqe *sqe, uint index) { _sqe = sqe; Index = index; }