static ssize_t arm_ccn_pmu_event_show()

in arm-ccn.c [323:363]


static ssize_t arm_ccn_pmu_event_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct arm_ccn *ccn = pmu_to_arm_ccn(dev_get_drvdata(dev));
	struct arm_ccn_pmu_event *event = container_of(attr,
			struct arm_ccn_pmu_event, attr);
	int res;

	res = sysfs_emit(buf, "type=0x%x", event->type);
	if (event->event)
		res += sysfs_emit_at(buf, res, ",event=0x%x", event->event);
	if (event->def)
		res += sysfs_emit_at(buf, res, ",%s", event->def);
	if (event->mask)
		res += sysfs_emit_at(buf, res, ",mask=0x%x", event->mask);

	/* Arguments required by an event */
	switch (event->type) {
	case CCN_TYPE_CYCLES:
		break;
	case CCN_TYPE_XP:
		res += sysfs_emit_at(buf, res, ",xp=?,vc=?");
		if (event->event == CCN_EVENT_WATCHPOINT)
			res += sysfs_emit_at(buf, res,
					",port=?,dir=?,cmp_l=?,cmp_h=?,mask=?");
		else
			res += sysfs_emit_at(buf, res, ",bus=?");

		break;
	case CCN_TYPE_MN:
		res += sysfs_emit_at(buf, res, ",node=%d", ccn->mn_id);
		break;
	default:
		res += sysfs_emit_at(buf, res, ",node=?");
		break;
	}

	res += sysfs_emit_at(buf, res, "\n");

	return res;
}