udebug: add functions for manipulating entry length
authorFelix Fietkau <nbd@nbd.name>
Wed, 29 Nov 2023 14:38:30 +0000 (15:38 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 29 Nov 2023 20:59:23 +0000 (21:59 +0100)
Can be used to reserve worst case length using udebug_entry_append,
then setting the final length using udebug_entry_set_length

Signed-off-by: Felix Fietkau <nbd@nbd.name>
udebug.c
udebug.h

index 5be9b54d8724a0ac29fe51e7294003a6d3a31deb..00a66abd42e7b74c54e88f179dfee9101629b8e1 100644 (file)
--- a/udebug.c
+++ b/udebug.c
@@ -467,6 +467,25 @@ void *udebug_entry_append(struct udebug_buf *buf, const void *data, uint32_t len
        return ret;
 }
 
+uint16_t udebug_entry_trim(struct udebug_buf *buf, uint16_t len)
+{
+       struct udebug_hdr *hdr = buf->hdr;
+       struct udebug_ptr *ptr = udebug_ring_ptr(hdr, hdr->head);
+
+       if (len)
+               ptr->len -= len;
+
+       return ptr->len;
+}
+
+void udebug_entry_set_length(struct udebug_buf *buf, uint16_t len)
+{
+       struct udebug_hdr *hdr = buf->hdr;
+       struct udebug_ptr *ptr = udebug_ring_ptr(hdr, hdr->head);
+
+       ptr->len = len;
+}
+
 int udebug_entry_printf(struct udebug_buf *buf, const char *fmt, ...)
 {
        va_list ap;
index d24dbfcbee015a56061afa71169e1de9c9bd5754..75c2e3f916701bf0e86f757e912e8b2a8afa5a62 100644 (file)
--- a/udebug.h
+++ b/udebug.h
@@ -157,6 +157,8 @@ int udebug_entry_printf(struct udebug_buf *buf, const char *fmt, ...)
        __attribute__ ((format (printf, 2, 3)));
 int udebug_entry_vprintf(struct udebug_buf *buf, const char *fmt, va_list ap)
        __attribute__ ((format (printf, 2, 0)));
+uint16_t udebug_entry_trim(struct udebug_buf *buf, uint16_t len);
+void udebug_entry_set_length(struct udebug_buf *buf, uint16_t len);
 void udebug_entry_add(struct udebug_buf *buf);
 
 int udebug_buf_init(struct udebug_buf *buf, size_t entries, size_t size);