/* Note: @ops->func and all the functions it calls must be labeled with "notrace", otherwise it will go into a recursive loop.  */
int register_ftrace_function(struct ftrace_ops *ops)
/* Note: @ops->func and all the functions it calls must be labeled with "notrace", otherwise it will go into a recursive loop.  */
int register_ftrace_function(struct ftrace_ops *ops)
{
	int ret;
	if (unlikely(ftrace_disabled))
		return -1;
	mutex_lock(&ftrace_lock);
	ret = __register_ftrace_function(ops);
	ftrace_startup(0);
	mutex_unlock(&ftrace_lock);
	return ret;
}