On Thu, 03 Dec 2015 10:36:18 -0800 "Shi, Yang" yang.shi@linaro.org wrote:
called directly that calls these functions internally and the tracepoint can trap the return value.
This will incur more changes in other subsystems (futex, kvm, etc), I'm not sure if it is worth making such changes to get return value.
No, it wouldn't require any changes outside of this.
-long __get_user_pages(..) +static long __get_user_pages_internal(..) { [..] } + +long __get_user_pages(..) +{ + long ret; + ret = __get_user_pages_internal(..); + trace_get_user_pages(.., ret) +}
I can probably make function_graph tracer give return values, although it will give a return value for void functions as well. And it may give long long returns for int returns that may have bogus data in the higher bits.
If the return value requirement is not limited to gup, the approach sounds more reasonable.
Others have asked about it. Maybe I should do it.
-- Steve