Add a cancel() function to the Request class that allows to forcefully complete the request and its associated buffers in error state. Only pending requests can be forcefully cancelled. Enforce that by asserting the request state to be RequestPending. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
93 lines
1.6 KiB
Plaintext
93 lines
1.6 KiB
Plaintext
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Google Inc.
|
|
*
|
|
* request.tp - Tracepoints for the request object
|
|
*/
|
|
|
|
#include <libcamera/buffer.h>
|
|
#include <libcamera/request.h>
|
|
|
|
TRACEPOINT_EVENT_CLASS(
|
|
libcamera,
|
|
request,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
),
|
|
TP_FIELDS(
|
|
ctf_integer_hex(uintptr_t, request, reinterpret_cast<uintptr_t>(req))
|
|
ctf_integer(uint64_t, cookie, req->cookie())
|
|
ctf_enum(libcamera, request_status, uint32_t, status, req->status())
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_construct,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_destroy,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_reuse,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_queue,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_complete,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_cancel,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT(
|
|
libcamera,
|
|
request_complete_buffer,
|
|
TP_ARGS(
|
|
libcamera::Request *, req,
|
|
libcamera::FrameBuffer *, buf
|
|
),
|
|
TP_FIELDS(
|
|
ctf_integer_hex(uintptr_t, request, reinterpret_cast<uintptr_t>(req))
|
|
ctf_integer(uint64_t, cookie, req->cookie())
|
|
ctf_integer(int, status, req->status())
|
|
ctf_integer_hex(uintptr_t, buffer, reinterpret_cast<uintptr_t>(buf))
|
|
ctf_enum(libcamera, buffer_status, uint32_t, buf_status, buf->metadata().status)
|
|
)
|
|
)
|