Hi Felipe,

On Friday 09 June 2017 11:43 AM, Felipe Balbi wrote:
+static void notrace ftrace_write(struct trace_export *ftrace, const void *buf,
+                                unsigned int len)
+{
+       struct usb_ftrace               *trace = ftrace_to_trace(ftrace);
+       struct usb_request              *req = next_request(&trace->list);
+
+       if (!req)
+               return;
+
+       if (!trace->in->enabled)
+               return;
+
+       req->buf = kmemdup(buf, len, GFP_ATOMIC);

Probably we can avoid the copy of trace data.

We can make write() call of "struct trace_export" as posted. Can have a write_complete() callback function implemented in struct trace_export,which can be called from your ftrace_complete().

We need to execute __buffer_unlock_commit() only in write_complete() in case of ftrace_export is enabled.


+       req->length = len;
+       req->context = trace;
+       req->complete = ftrace_complete;
+       list_move_tail(&req->list, &trace->pending);
+
+       schedule_work(&trace->queue_work);
+}
+

--
Pratyush
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to