From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
Mauro Carvalho Chehab <mchehab@infradead.org>
Subject: Re: [PATCH v6 7/8] [media] media: add a debug message to warn about gobj creation/removal
Date: Fri, 21 Aug 2015 04:32:51 +0300 [thread overview]
Message-ID: <1485912.HaZnsqcIqp@avalon> (raw)
In-Reply-To: <7424c6b03ca0bcb8d5af55a6bda6f4c3414d3083.1439981515.git.mchehab@osg.samsung.com>
Hi Mauro,
Thank you for the patch.
On Wednesday 19 August 2015 08:01:54 Mauro Carvalho Chehab wrote:
> It helps to check if the media controller is doing the
> right thing with the object creation and removal.
>
> No extra code/data will be produced if DEBUG or
> CONFIG_DYNAMIC_DEBUG is not enabled.
CONFIG_DYNAMIC_DEBUG is often enabled.
You're more or less adding function call tracing in this patch, isn't that
something that ftrace is supposed to do ?
> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
>
> diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
> index 36d725ec5f3d..6d515e149d7f 100644
> --- a/drivers/media/media-entity.c
> +++ b/drivers/media/media-entity.c
> @@ -27,6 +27,69 @@
> #include <media/media-device.h>
>
> /**
> + * dev_dbg_obj - Prints in debug mode a change on some object
> + *
> + * @event_name: Name of the event to report. Could be __func__
> + * @gobj: Pointer to the object
> + *
> + * Enabled only if DEBUG or CONFIG_DYNAMIC_DEBUG. Otherwise, it
> + * won't produce any code.
> + */
> +static inline const char *gobj_type(enum media_gobj_type type)
> +{
> + switch (type) {
> + case MEDIA_GRAPH_ENTITY:
> + return "entity";
> + case MEDIA_GRAPH_PAD:
> + return "pad";
> + case MEDIA_GRAPH_LINK:
> + return "link";
> + default:
> + return "unknown";
> + }
> +}
> +
> +static void dev_dbg_obj(const char *event_name, struct media_gobj *gobj)
> +{
> +#if defined(DEBUG) || defined (CONFIG_DYNAMIC_DEBUG)
> + switch (media_type(gobj)) {
> + case MEDIA_GRAPH_ENTITY:
> + dev_dbg(gobj->mdev->dev,
> + "%s: id 0x%08x entity#%d: '%s'\n",
> + event_name, gobj->id, media_localid(gobj),
> + gobj_to_entity(gobj)->name);
> + break;
> + case MEDIA_GRAPH_LINK:
> + {
> + struct media_link *link = gobj_to_link(gobj);
> +
> + dev_dbg(gobj->mdev->dev,
> + "%s: id 0x%08x link#%d: '%s' %s#%d ==> '%s' %s#%d\n",
> + event_name, gobj->id, media_localid(gobj),
> +
> + link->source->entity->name,
> + gobj_type(media_type(&link->source->graph_obj)),
> + media_localid(&link->source->graph_obj),
> +
> + link->sink->entity->name,
> + gobj_type(media_type(&link->sink->graph_obj)),
> + media_localid(&link->sink->graph_obj));
> + break;
> + }
> + case MEDIA_GRAPH_PAD:
> + {
> + struct media_pad *pad = gobj_to_pad(gobj);
> +
> + dev_dbg(gobj->mdev->dev,
> + "%s: id 0x%08x pad#%d: '%s':%d\n",
> + event_name, gobj->id, media_localid(gobj),
> + pad->entity->name, pad->index);
> + }
> + }
> +#endif
> +}
> +
> +/**
> * media_gobj_init - Initialize a graph object
> *
> * @mdev: Pointer to the media_device that contains the object
> @@ -43,6 +106,8 @@ void media_gobj_init(struct media_device *mdev,
> enum media_gobj_type type,
> struct media_gobj *gobj)
> {
> + gobj->mdev = mdev;
> +
> /* Create a per-type unique object ID */
> switch (type) {
> case MEDIA_GRAPH_ENTITY:
> @@ -55,6 +120,7 @@ void media_gobj_init(struct media_device *mdev,
> gobj->id = media_gobj_gen_id(type, ++mdev->link_id);
> break;
> }
> + dev_dbg_obj(__func__, gobj);
> }
>
> /**
> @@ -66,7 +132,7 @@ void media_gobj_init(struct media_device *mdev,
> */
> void media_gobj_remove(struct media_gobj *gobj)
> {
> - /* For now, nothing to do */
> + dev_dbg_obj(__func__, gobj);
> }
>
> /**
> diff --git a/include/media/media-entity.h b/include/media/media-entity.h
> index 749b46c91217..bdd5e565ae76 100644
> --- a/include/media/media-entity.h
> +++ b/include/media/media-entity.h
> @@ -61,6 +61,7 @@ enum media_gobj_type {
> * All elements on the media graph should have this struct embedded
> */
> struct media_gobj {
> + struct media_device *mdev;
I'd move this to the patch that introduces media_gobj.
> u32 id;
> };
>
> @@ -192,6 +193,12 @@ struct media_entity_graph {
> #define gobj_to_entity(gobj) \
> container_of(gobj, struct media_entity, graph_obj)
>
> +#define gobj_to_pad(gobj) \
> + container_of(gobj, struct media_pad, graph_obj)
> +
> +#define gobj_to_link(gobj) \
> + container_of(gobj, struct media_link, graph_obj)
> +
And I'd call these media_gobj_* as commented on patch 2/8.
> void media_gobj_init(struct media_device *mdev,
> enum media_gobj_type type,
> struct media_gobj *gobj);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2015-08-21 1:32 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-19 11:01 [PATCH v6 0/8] MC preparation patches Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 1/8] [media] media: create a macro to get entity ID Mauro Carvalho Chehab
2015-08-21 0:40 ` Laurent Pinchart
2015-08-21 8:42 ` Mauro Carvalho Chehab
2015-08-21 17:27 ` Laurent Pinchart
2015-08-21 17:45 ` Mauro Carvalho Chehab
2015-08-21 18:11 ` Laurent Pinchart
2015-08-21 20:46 ` Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 2/8] [media] media: add a common struct to be embed on media graph objects Mauro Carvalho Chehab
2015-08-19 11:09 ` Hans Verkuil
2015-08-21 1:02 ` Laurent Pinchart
2015-08-21 8:07 ` Hans Verkuil
2015-09-07 21:49 ` Laurent Pinchart
2015-09-08 10:05 ` Mauro Carvalho Chehab
2015-08-21 9:57 ` Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 3/8] [media] media: use media_gobj inside entities Mauro Carvalho Chehab
2015-08-21 1:10 ` Laurent Pinchart
2015-08-21 10:09 ` Mauro Carvalho Chehab
2015-08-21 17:51 ` Laurent Pinchart
2015-08-21 21:01 ` Mauro Carvalho Chehab
2015-08-21 22:47 ` Laurent Pinchart
2015-08-24 9:18 ` Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 4/8] [media] media: use media_gobj inside pads Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 5/8] [media] media: use media_gobj inside links Mauro Carvalho Chehab
2015-08-19 11:11 ` Hans Verkuil
2015-08-19 11:01 ` [PATCH v6 6/8] [media] media: add messages when media device gets (un)registered Mauro Carvalho Chehab
2015-08-19 11:11 ` Hans Verkuil
2015-08-21 1:35 ` Laurent Pinchart
2015-08-21 10:25 ` Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 7/8] [media] media: add a debug message to warn about gobj creation/removal Mauro Carvalho Chehab
2015-08-19 11:12 ` Hans Verkuil
2015-08-21 1:32 ` Laurent Pinchart [this message]
2015-08-21 10:19 ` Mauro Carvalho Chehab
2015-08-21 17:54 ` Laurent Pinchart
2015-08-21 21:09 ` Mauro Carvalho Chehab
2015-08-21 22:54 ` Laurent Pinchart
2015-08-24 9:40 ` Mauro Carvalho Chehab
2015-08-19 11:01 ` [PATCH v6 8/8] [media] media: rename the function that create pad links Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1485912.HaZnsqcIqp@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@infradead.org \
--cc=mchehab@osg.samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).