Lines Matching refs:subops
3295 struct ftrace_ops *subops; in append_hashes() local
3302 list_for_each_entry(subops, &ops->subop_list, list) { in append_hashes()
3303 ret = append_hash(&new_hash, subops->func_hash->filter_hash); in append_hashes()
3319 struct ftrace_ops *subops; in intersect_hashes() local
3323 list_for_each_entry(subops, &ops->subop_list, list) { in intersect_hashes()
3327 size_bits = subops->func_hash->notrace_hash->size_bits; in intersect_hashes()
3336 ret = intersect_hash(&new_hash, next_hash, subops->func_hash->notrace_hash); in intersect_hashes()
3430 int ftrace_startup_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command) in ftrace_startup_subops() argument
3443 ftrace_ops_init(subops); in ftrace_startup_subops()
3445 if (WARN_ON_ONCE(subops->flags & FTRACE_OPS_FL_ENABLED)) in ftrace_startup_subops()
3453 if (!subops->func_hash->filter_hash) in ftrace_startup_subops()
3454 subops->func_hash->filter_hash = EMPTY_HASH; in ftrace_startup_subops()
3455 if (!subops->func_hash->notrace_hash) in ftrace_startup_subops()
3456 subops->func_hash->notrace_hash = EMPTY_HASH; in ftrace_startup_subops()
3461 filter_hash = copy_hash(subops->func_hash->filter_hash); in ftrace_startup_subops()
3462 notrace_hash = copy_hash(subops->func_hash->notrace_hash); in ftrace_startup_subops()
3474 list_add(&subops->list, &ops->subop_list); in ftrace_startup_subops()
3477 list_del(&subops->list); in ftrace_startup_subops()
3485 subops->flags |= FTRACE_OPS_FL_ENABLED | FTRACE_OPS_FL_SUBOP; in ftrace_startup_subops()
3486 subops->managed = ops; in ftrace_startup_subops()
3499 ftrace_hash_empty(subops->func_hash->filter_hash)) { in ftrace_startup_subops()
3503 subops->func_hash->filter_hash->size_bits); in ftrace_startup_subops()
3507 ret = append_hash(&filter_hash, subops->func_hash->filter_hash); in ftrace_startup_subops()
3515 ftrace_hash_empty(subops->func_hash->notrace_hash)) { in ftrace_startup_subops()
3519 subops->func_hash->filter_hash->size_bits); in ftrace_startup_subops()
3527 subops->func_hash->filter_hash); in ftrace_startup_subops()
3535 list_add(&subops->list, &ops->subop_list); in ftrace_startup_subops()
3541 list_del(&subops->list); in ftrace_startup_subops()
3543 subops->flags |= FTRACE_OPS_FL_ENABLED | FTRACE_OPS_FL_SUBOP; in ftrace_startup_subops()
3544 subops->managed = ops; in ftrace_startup_subops()
3561 int ftrace_shutdown_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command) in ftrace_shutdown_subops() argument
3570 if (WARN_ON_ONCE(!(subops->flags & FTRACE_OPS_FL_ENABLED))) in ftrace_shutdown_subops()
3573 list_del(&subops->list); in ftrace_shutdown_subops()
3580 list_add(&subops->list, &ops->subop_list); in ftrace_shutdown_subops()
3584 subops->flags &= ~FTRACE_OPS_FL_ENABLED; in ftrace_shutdown_subops()
3590 subops->flags &= ~(FTRACE_OPS_FL_ENABLED | FTRACE_OPS_FL_SUBOP); in ftrace_shutdown_subops()
3591 subops->managed = NULL; in ftrace_shutdown_subops()
3602 list_add(&subops->list, &ops->subop_list); in ftrace_shutdown_subops()
3608 list_add(&subops->list, &ops->subop_list); in ftrace_shutdown_subops()
3610 subops->flags &= ~(FTRACE_OPS_FL_ENABLED | FTRACE_OPS_FL_SUBOP); in ftrace_shutdown_subops()
3611 subops->managed = NULL; in ftrace_shutdown_subops()
3618 static int ftrace_hash_move_and_update_subops(struct ftrace_ops *subops, in ftrace_hash_move_and_update_subops() argument
3623 struct ftrace_ops *ops = subops->managed; in ftrace_hash_move_and_update_subops()
4897 struct ftrace_ops *subops; in ftrace_hash_move_and_update_ops() local
4899 list_for_each_entry(subops, &op->subop_list, list) { in ftrace_hash_move_and_update_ops()
4900 if ((subops->flags & FTRACE_OPS_FL_ENABLED) && in ftrace_hash_move_and_update_ops()
4901 subops->func_hash == ops->func_hash) { in ftrace_hash_move_and_update_ops()
4902 return ftrace_hash_move_and_update_subops(subops, orig_hash, hash, enable); in ftrace_hash_move_and_update_ops()