On 20/07/16 21:38, Mathieu Poirier wrote:
Up to now function coresight_build_path() was counting on a sink to have been selected (from sysFS) prior to being called. This patch adds a string argument so that a sink matching the argument can be selected.
static int _coresight_build_path(struct coresight_device *csdev, - struct list_head *path) + struct list_head *path, const char *sink) { int i; bool found = false; struct coresight_node *node; - /* An activated sink has been found. Enqueue the element */ - if ((csdev->type == CORESIGHT_DEV_TYPE_SINK || - csdev->type == CORESIGHT_DEV_TYPE_LINKSINK) && csdev->activated) - goto out; + /* + * First see if we are dealing with a sink. If we have one check if + * it was selected via sysFS or the perf cmd line. + */ + if (csdev->type == CORESIGHT_DEV_TYPE_SINK || + csdev->type == CORESIGHT_DEV_TYPE_LINKSINK) { + /* Activated via perf cmd line */ + if (sink && !strcmp(dev_name(&csdev->dev), sink)) + goto out; + /* Activated via sysFS */ + if (csdev->activated)
When a sink is specified, should we skip an activated sink and continue to find the specified one ? or at least fail with an error as we may not be using the sink specified by the user ? i.e may be : if (!sink && csdev->activated) goto out; Suzuki