コード例 #1
0
def requests_queued(queue: gdb.Value) -> Tuple[int, int]:
    """
    Report how many requests are queued for this queue

    Args:
        queue: The request queue to inspect for number of queued requests.
            The value must be of type ``struct request_queue``.

    Returns:
        (:obj:`int`, :obj:`int`): The number of queued requests.  The first
        member of the 2-tuple is the number of async requests, the second is
        the number of sync requests.
    """
    if queue_is_mq(queue):
        return mq_requests_queued(queue)
    return sq_requests_queued(queue)
コード例 #2
0
def queue_request_stats(queue: gdb.Value) -> Tuple[int, int, int, int]:
    """
    Report various request information for this queue

    Args:
        queue: The request queue to inspect for request information.
            The value must be of type ``struct request_queue``.

    Returns:
        (:obj:`int`, :obj:`int`, :obj:`int`, :obj:`int`): Number queued async
        requests, number of queued sync requests, number of async requests
        being processed by the driver, number of sync requests being processed
        by the driver.
    """
    if queue_is_mq(queue):
        return mq_queue_request_stats(queue)
    return sq_requests_queued(queue) + sq_requests_in_flight(
        queue)  # type: ignore
コード例 #3
0
def for_each_request_in_queue(queue: gdb.Value) -> Iterable[gdb.Value]:
    """
    Iterates over each ``struct request`` in request_queue

    This method iterates over requests queued in ``request_queue``. It takes
    care of properly handling both single and multiqueue queues.

    Args:
        queue: The ``struct request_queue`` used to iterate.  The value
            must be of type ``struct request_queue``.

    Yields:
        :obj:`gdb.Value`: Each ``struct request`` contained within the
        ``request_queue``.  The value is of type ``struct request``.
    """
    if queue_is_mq(queue):
        return mq_for_each_request_in_queue(queue)
    return sq_for_each_request_in_queue(queue)
コード例 #4
0
ファイル: blockmq.py プロジェクト: tehcaster/crash-python
def _check_queue_type(queue: gdb.Value) -> None:
    if not queue_is_mq(queue):
        raise InvalidArgumentError(
            "Passed request queue is not a multiqueue queue")