projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a by-address equality short-circuit to condition comparison
[lttng-tools.git]
/
src
/
common
/
condition.c
diff --git
a/src/common/condition.c
b/src/common/condition.c
index 0b184422a69bf0b3f3b36f877d0522b1ce8d8ee7..6cebeb03f7bb9d35e651a9a110bb36f087cfd1fe 100644
(file)
--- a/
src/common/condition.c
+++ b/
src/common/condition.c
@@
-17,6
+17,7
@@
#include <lttng/condition/condition-internal.h>
#include <lttng/condition/buffer-usage-internal.h>
#include <lttng/condition/condition-internal.h>
#include <lttng/condition/buffer-usage-internal.h>
+#include <lttng/condition/session-consumed-size-internal.h>
#include <common/macros.h>
#include <common/error.h>
#include <common/dynamic-buffer.h>
#include <common/macros.h>
#include <common/error.h>
#include <common/dynamic-buffer.h>
@@
-62,11
+63,11
@@
end:
}
LTTNG_HIDDEN
}
LTTNG_HIDDEN
-
ssize_
t lttng_condition_serialize(const struct lttng_condition *condition,
-
cha
r *buf)
+
in
t lttng_condition_serialize(const struct lttng_condition *condition,
+
struct lttng_dynamic_buffe
r *buf)
{
{
-
ssize_t ret, condition_size
;
- struct lttng_condition_comm condition_comm;
+
int ret
;
+ struct lttng_condition_comm condition_comm
= { 0 }
;
if (!condition) {
ret = -1;
if (!condition) {
ret = -1;
@@
-74,18
+75,17
@@
ssize_t lttng_condition_serialize(const struct lttng_condition *condition,
}
condition_comm.condition_type = (int8_t) condition->type;
}
condition_comm.condition_type = (int8_t) condition->type;
- ret = sizeof(struct lttng_condition_comm);
- if (buf) {
- memcpy(buf, &condition_comm, ret);
- buf += ret;
+
+ ret = lttng_dynamic_buffer_append(buf, &condition_comm,
+ sizeof(condition_comm));
+ if (ret) {
+ goto end;
}
}
- condition_size = condition->serialize(condition, buf);
- if (condition_size < 0) {
- ret = condition_size;
+ ret = condition->serialize(condition, buf);
+ if (ret) {
goto end;
}
goto end;
}
- ret += condition_size;
end:
return ret;
}
end:
return ret;
}
@@
-104,6
+104,11
@@
bool lttng_condition_is_equal(const struct lttng_condition *a,
goto end;
}
goto end;
}
+ if (a == b) {
+ is_equal = true;
+ goto end;
+ }
+
is_equal = a->equal ? a->equal(a, b) : true;
end:
return is_equal;
is_equal = a->equal ? a->equal(a, b) : true;
end:
return is_equal;
@@
-134,6
+139,9
@@
ssize_t lttng_condition_create_from_buffer(
case LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH:
create_from_buffer = lttng_condition_buffer_usage_high_create_from_buffer;
break;
case LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH:
create_from_buffer = lttng_condition_buffer_usage_high_create_from_buffer;
break;
+ case LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE:
+ create_from_buffer = lttng_condition_session_consumed_size_create_from_buffer;
+ break;
default:
ERR("Attempted to create condition of unknown type (%i)",
(int) condition_comm->condition_type);
default:
ERR("Attempted to create condition of unknown type (%i)",
(int) condition_comm->condition_type);
This page took
0.02607 seconds
and
4
git commands to generate.