*
*/
-#include <assert.h>
#include <common/credentials.h>
#include <common/dynamic-array.h>
#include <common/error.h>
#include <lttng/trigger/trigger-internal.h>
#include <pthread.h>
-LTTNG_HIDDEN
bool lttng_trigger_validate(const struct lttng_trigger *trigger)
{
bool valid;
struct lttng_condition *condition =
lttng_trigger_get_condition(trigger);
- assert(action);
- assert(condition);
+ LTTNG_ASSERT(action);
+ LTTNG_ASSERT(condition);
/* Release ownership. */
lttng_action_put(action);
lttng_trigger_put(trigger);
}
-LTTNG_HIDDEN
ssize_t lttng_trigger_create_from_payload(
struct lttng_payload_view *src_view,
struct lttng_trigger **_trigger)
* Both elements are stored contiguously, see their "*_comm" structure
* for the detailed format.
*/
-LTTNG_HIDDEN
int lttng_trigger_serialize(const struct lttng_trigger *trigger,
struct lttng_payload *payload)
{
const struct lttng_credentials *creds = NULL;
creds = lttng_trigger_get_credentials(trigger);
- assert(creds);
+ LTTNG_ASSERT(creds);
trigger_comm.uid = LTTNG_OPTIONAL_GET(creds->uid);
return ret;
}
-LTTNG_HIDDEN
bool lttng_trigger_is_equal(
const struct lttng_trigger *a, const struct lttng_trigger *b)
{
return true;
}
-LTTNG_HIDDEN
bool lttng_trigger_is_hidden(const struct lttng_trigger *trigger)
{
return trigger->is_hidden;
}
-LTTNG_HIDDEN
void lttng_trigger_set_hidden(struct lttng_trigger *trigger)
{
- assert(!trigger->is_hidden);
+ LTTNG_ASSERT(!trigger->is_hidden);
trigger->is_hidden = true;
}
-LTTNG_HIDDEN
enum lttng_trigger_status lttng_trigger_set_name(struct lttng_trigger *trigger,
const char* name)
{
return status;
}
-LTTNG_HIDDEN
int lttng_trigger_assign_name(struct lttng_trigger *dst,
const struct lttng_trigger *src)
{
return ret;
}
-LTTNG_HIDDEN
void lttng_trigger_set_tracer_token(struct lttng_trigger *trigger,
uint64_t token)
{
- assert(trigger);
+ LTTNG_ASSERT(trigger);
LTTNG_OPTIONAL_SET(&trigger->tracer_token, token);
}
-LTTNG_HIDDEN
uint64_t lttng_trigger_get_tracer_token(const struct lttng_trigger *trigger)
{
- assert(trigger);
+ LTTNG_ASSERT(trigger);
return LTTNG_OPTIONAL_GET(trigger->tracer_token);
}
-LTTNG_HIDDEN
int lttng_trigger_generate_name(struct lttng_trigger *trigger,
uint64_t unique_id)
{
return ret;
}
-LTTNG_HIDDEN
void lttng_trigger_get(struct lttng_trigger *trigger)
{
urcu_ref_get(&trigger->ref);
}
-LTTNG_HIDDEN
void lttng_trigger_put(struct lttng_trigger *trigger)
{
if (!trigger) {
lttng_trigger_put(trigger);
}
-LTTNG_HIDDEN
struct lttng_triggers *lttng_triggers_create(void)
{
struct lttng_triggers *triggers = NULL;
return triggers;
}
-LTTNG_HIDDEN
struct lttng_trigger *lttng_triggers_borrow_mutable_at_index(
const struct lttng_triggers *triggers, unsigned int index)
{
struct lttng_trigger *trigger = NULL;
- assert(triggers);
+ LTTNG_ASSERT(triggers);
if (index >= lttng_dynamic_pointer_array_get_count(&triggers->array)) {
goto end;
}
return trigger;
}
-LTTNG_HIDDEN
int lttng_triggers_add(
struct lttng_triggers *triggers, struct lttng_trigger *trigger)
{
int ret;
- assert(triggers);
- assert(trigger);
+ LTTNG_ASSERT(triggers);
+ LTTNG_ASSERT(trigger);
lttng_trigger_get(trigger);
return ret;
}
-LTTNG_HIDDEN
int lttng_triggers_remove_hidden_triggers(struct lttng_triggers *triggers)
{
int ret;
unsigned int trigger_count, i = 0;
enum lttng_trigger_status trigger_status;
- assert(triggers);
+ LTTNG_ASSERT(triggers);
trigger_status = lttng_triggers_get_count(triggers, &trigger_count);
- assert(trigger_status == LTTNG_TRIGGER_STATUS_OK);
+ LTTNG_ASSERT(trigger_status == LTTNG_TRIGGER_STATUS_OK);
while (i < trigger_count) {
const struct lttng_trigger *trigger =
const struct lttng_trigger *trigger =
lttng_triggers_get_at_index(triggers, i);
- assert(trigger);
+ LTTNG_ASSERT(trigger);
ret = lttng_trigger_serialize(trigger, payload);
if (ret) {
return ret;
}
-LTTNG_HIDDEN
ssize_t lttng_triggers_create_from_payload(
struct lttng_payload_view *src_view,
struct lttng_triggers **triggers)
return ret;
}
-LTTNG_HIDDEN
const struct lttng_credentials *lttng_trigger_get_credentials(
const struct lttng_trigger *trigger)
{
return &trigger->creds;
}
-LTTNG_HIDDEN
void lttng_trigger_set_credentials(struct lttng_trigger *trigger,
const struct lttng_credentials *creds)
{
- assert(creds);
+ LTTNG_ASSERT(creds);
trigger->creds = *creds;
}
return ret;
}
-LTTNG_HIDDEN
enum lttng_domain_type lttng_trigger_get_underlying_domain_type_restriction(
const struct lttng_trigger *trigger)
{
enum lttng_condition_status c_status;
enum lttng_condition_type c_type;
- assert(trigger);
- assert(trigger->condition);
+ LTTNG_ASSERT(trigger);
+ LTTNG_ASSERT(trigger->condition);
c_type = lttng_condition_get_type(trigger->condition);
assert (c_type != LTTNG_CONDITION_TYPE_UNKNOWN);
/* Return the domain of the event rule. */
c_status = lttng_condition_event_rule_matches_get_rule(
trigger->condition, &event_rule);
- assert(c_status == LTTNG_CONDITION_STATUS_OK);
+ LTTNG_ASSERT(c_status == LTTNG_CONDITION_STATUS_OK);
type = lttng_event_rule_get_domain_type(event_rule);
break;
case LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH:
/* Return the domain of the channel being monitored. */
c_status = lttng_condition_buffer_usage_get_domain_type(
trigger->condition, &type);
- assert(c_status == LTTNG_CONDITION_STATUS_OK);
+ LTTNG_ASSERT(c_status == LTTNG_CONDITION_STATUS_OK);
break;
default:
abort();
* Generate bytecode related to the trigger.
* On success LTTNG_OK. On error, returns lttng_error code.
*/
-LTTNG_HIDDEN
enum lttng_error_code lttng_trigger_generate_bytecode(
struct lttng_trigger *trigger,
const struct lttng_credentials *creds)
lttng_condition_event_rule_matches_borrow_rule_mutable(
condition, &event_rule);
- assert(condition_status == LTTNG_CONDITION_STATUS_OK);
+ LTTNG_ASSERT(condition_status == LTTNG_CONDITION_STATUS_OK);
/* Generate the filter bytecode. */
ret = lttng_event_rule_generate_filter_bytecode(
return ret;
}
-LTTNG_HIDDEN
struct lttng_trigger *lttng_trigger_copy(const struct lttng_trigger *trigger)
{
int ret;
return copy;
}
-LTTNG_HIDDEN
bool lttng_trigger_needs_tracer_notifier(const struct lttng_trigger *trigger)
{
bool needs_tracer_notifier = false;
return needs_tracer_notifier;
}
-LTTNG_HIDDEN
void lttng_trigger_set_as_registered(struct lttng_trigger *trigger)
{
pthread_mutex_lock(&trigger->lock);
pthread_mutex_unlock(&trigger->lock);
}
-LTTNG_HIDDEN
void lttng_trigger_set_as_unregistered(struct lttng_trigger *trigger)
{
pthread_mutex_lock(&trigger->lock);
* the trigger lock for the duration of the manipulation using
* `lttng_trigger_lock` and `lttng_trigger_unlock`.
*/
-LTTNG_HIDDEN
bool lttng_trigger_is_registered(struct lttng_trigger *trigger)
{
ASSERT_LOCKED(trigger->lock);
return trigger->registered;
}
-LTTNG_HIDDEN
void lttng_trigger_lock(struct lttng_trigger *trigger)
{
pthread_mutex_lock(&trigger->lock);
}
-LTTNG_HIDDEN
void lttng_trigger_unlock(struct lttng_trigger *trigger)
{
pthread_mutex_unlock(&trigger->lock);
}
-LTTNG_HIDDEN
enum lttng_error_code lttng_trigger_mi_serialize(const struct lttng_trigger *trigger,
struct mi_writer *writer,
const struct mi_lttng_error_query_callbacks
struct lttng_dynamic_array action_path_indexes;
uid_t owner_uid;
- assert(trigger);
- assert(writer);
+ LTTNG_ASSERT(trigger);
+ LTTNG_ASSERT(writer);
lttng_dynamic_array_init(&action_path_indexes, sizeof(uint64_t), NULL);
}
trigger_status = lttng_trigger_get_owner_uid(trigger, &owner_uid);
- assert(trigger_status == LTTNG_TRIGGER_STATUS_OK);
+ LTTNG_ASSERT(trigger_status == LTTNG_TRIGGER_STATUS_OK);
/* Name. */
ret = mi_lttng_writer_write_element_string(
/* Condition. */
condition = lttng_trigger_get_const_condition(trigger);
- assert(condition);
+ LTTNG_ASSERT(condition);
ret_code = lttng_condition_mi_serialize(
trigger, condition, writer, error_query_callbacks);
if (ret_code != LTTNG_OK) {
/* Action. */
action = lttng_trigger_get_const_action(trigger);
- assert(action);
+ LTTNG_ASSERT(action);
ret_code = lttng_action_mi_serialize(trigger, action, writer,
error_query_callbacks, &action_path_indexes);
if (ret_code != LTTNG_OK) {
/* Anonymous triggers are not reachable here. */
trigger_status = lttng_trigger_get_name(trigger_a, &name_a);
- assert(trigger_status == LTTNG_TRIGGER_STATUS_OK);
+ LTTNG_ASSERT(trigger_status == LTTNG_TRIGGER_STATUS_OK);
trigger_status = lttng_trigger_get_name(trigger_b, &name_b);
- assert(trigger_status == LTTNG_TRIGGER_STATUS_OK);
+ LTTNG_ASSERT(trigger_status == LTTNG_TRIGGER_STATUS_OK);
return strcmp(name_a, name_b);
}
-LTTNG_HIDDEN
enum lttng_error_code lttng_triggers_mi_serialize(const struct lttng_triggers *triggers,
struct mi_writer *writer,
const struct mi_lttng_error_query_callbacks
unsigned int count, i;
struct lttng_dynamic_pointer_array sorted_triggers;
- assert(triggers);
- assert(writer);
+ LTTNG_ASSERT(triggers);
+ LTTNG_ASSERT(writer);
/*
* Sort trigger by name to ensure an order at the MI level and ignore
lttng_dynamic_pointer_array_init(&sorted_triggers, NULL);
status = lttng_triggers_get_count(triggers, &count);
- assert(status == LTTNG_TRIGGER_STATUS_OK);
+ LTTNG_ASSERT(status == LTTNG_TRIGGER_STATUS_OK);
for (i = 0; i < count; i++) {
int add_ret;