-enum lttng_event_rule_status lttng_event_rule_kernel_probe_set_location(
- struct lttng_event_rule *rule,
- const struct lttng_kernel_probe_location *location)
-{
- struct lttng_kernel_probe_location *location_copy = NULL;
- struct lttng_event_rule_kernel_probe *kprobe;
- enum lttng_event_rule_status status = LTTNG_EVENT_RULE_STATUS_OK;
-
- if (!rule || !IS_KPROBE_EVENT_RULE(rule) || !location) {
- status = LTTNG_EVENT_RULE_STATUS_INVALID;
- goto end;
- }
-
- kprobe = container_of(rule, struct lttng_event_rule_kernel_probe, parent);
- location_copy = lttng_kernel_probe_location_copy(location);
- if (!location_copy) {
- status = LTTNG_EVENT_RULE_STATUS_ERROR;
- goto end;
- }
-
- if (kprobe->location) {
- lttng_kernel_probe_location_destroy(kprobe->location);
- }
-
- kprobe->location = location_copy;
- location_copy = NULL;
-end:
- lttng_kernel_probe_location_destroy(location_copy);
- return status;
-}
-