udebug: add functions for manipulating entry length

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>
This commit is contained in:
Felix Fietkau 2023-11-29 15:38:30 +01:00
parent e80dc00ee9
commit 325fea5c57
2 changed files with 21 additions and 0 deletions

View file

@ -467,6 +467,25 @@ void *udebug_entry_append(struct udebug_buf *buf, const void *data, uint32_t len
return ret; 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, ...) int udebug_entry_printf(struct udebug_buf *buf, const char *fmt, ...)
{ {
va_list ap; va_list ap;

View file

@ -157,6 +157,8 @@ int udebug_entry_printf(struct udebug_buf *buf, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3))); __attribute__ ((format (printf, 2, 3)));
int udebug_entry_vprintf(struct udebug_buf *buf, const char *fmt, va_list ap) int udebug_entry_vprintf(struct udebug_buf *buf, const char *fmt, va_list ap)
__attribute__ ((format (printf, 2, 0))); __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); void udebug_entry_add(struct udebug_buf *buf);
int udebug_buf_init(struct udebug_buf *buf, size_t entries, size_t size); int udebug_buf_init(struct udebug_buf *buf, size_t entries, size_t size);