tools: acrntrace: output trace data as raw data

Benefits of outputing trace data as raw data:
  - Smaller trace data size
  - More convenient to add new trace entry. There is no need to change acrntrace
    when we add new trace entry to HV. All we need do is to update the analysis
    scripts to deal with this situation.

Trace data size(with 1 UOS):
~57M   -- with patch
~137M  -- without patch

Signed-off-by: Kaige Fu <kaige.fu@intel.com>
Reviewed-by: Yan, Like <like.yan@intel.com>
Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
This commit is contained in:
Kaige Fu
2018-06-25 22:37:59 +08:00
committed by lijinxia
parent bfe47a7a91
commit a35a650f5f
5 changed files with 36 additions and 200 deletions

View File

@@ -6,6 +6,8 @@
#include <asm/errno.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <stdbool.h>
#include "sbuf.h"
@@ -43,6 +45,31 @@ int sbuf_get(shared_buf_t *sbuf, uint8_t *data)
return sbuf->ele_size;
}
int sbuf_write(int fd, shared_buf_t *sbuf)
{
const void *start;
int written;
if (sbuf == NULL)
return -EINVAL;
if (sbuf_is_empty(sbuf)) {
return 0;
}
start = (void *)sbuf + SBUF_HEAD_SIZE + sbuf->head;
written = write(fd, start, sbuf->ele_size);
if ( written != sbuf->ele_size) {
printf("Failed to write. Expect written size %d, returned %d\n",
sbuf->ele_size, written);
return -1;
}
sbuf->head = sbuf_next_ptr(sbuf->head, sbuf->ele_size, sbuf->size);
return sbuf->ele_size;
}
int sbuf_clear_buffered(shared_buf_t *sbuf)
{
if (sbuf == NULL)