X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=9b544dd112cbc58b4e339a3126b19e83116fd577;hp=bcede1ef5d8f3857515baeaf709ad9b78294a684;hb=5c786dedd0156b93984f89ba47ec841277ed7dae;hpb=5f4c2d807e49a7d1a5e149615d37ee824f0155a6 diff --git a/src/common/consumer.c b/src/common/consumer.c index bcede1ef5..9b544dd11 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -3457,3 +3457,23 @@ int consumer_send_status_channel(int sock, return lttcomm_send_unix_sock(sock, &msg, sizeof(msg)); } + +/* + * Using a maximum stream size with the produced and consumed position of a + * stream, computes the new consumed position to be as close as possible to the + * maximum possible stream size. + * + * If maximum stream size is lower than the possible buffer size (produced - + * consumed), the consumed_pos given is returned untouched else the new value + * is returned. + */ +unsigned long consumer_get_consumed_maxsize(unsigned long consumed_pos, + unsigned long produced_pos, uint64_t max_stream_size) +{ + if (max_stream_size && max_stream_size < (produced_pos - consumed_pos)) { + /* Offset from the produced position to get the latest buffers. */ + return produced_pos - max_stream_size; + } + + return consumed_pos; +}