4
4
#include "frame_buffer.h"
5
5
#include "trace_meta.h"
6
6
7
- static Frame * frame_new_std (uint64_t addr , int vcpu_id ) {
7
+ static Frame * frame_new_std (uint64_t addr , int vcpu_id , uint8_t * bytes ,
8
+ size_t bytes_len ) {
8
9
Frame * frame = g_new (Frame , 1 );
9
10
frame__init (frame );
10
11
@@ -14,6 +15,9 @@ static Frame *frame_new_std(uint64_t addr, int vcpu_id) {
14
15
15
16
sframe -> address = addr ;
16
17
sframe -> thread_id = vcpu_id ;
18
+ sframe -> rawbytes .len = bytes_len ;
19
+ sframe -> rawbytes .data = g_malloc (bytes_len );
20
+ memcpy (sframe -> rawbytes .data , bytes , bytes_len );
17
21
18
22
OperandValueList * ol_in = g_new (OperandValueList , 1 );
19
23
operand_value_list__init (ol_in );
@@ -183,29 +187,10 @@ bool frame_buffer_new_frame_std(FrameBuffer *buf, unsigned int thread_id,
183
187
if (frame_buffer_is_full (buf )) {
184
188
return false;
185
189
}
186
- Frame * frame = frame_new_std (0 , -1 );
187
- frame__init (frame );
188
-
189
- StdFrame * stdframe = g_new (StdFrame , 1 );
190
- std_frame__init (stdframe );
191
- frame -> std_frame = stdframe ;
192
-
193
- stdframe -> thread_id = thread_id ;
194
- stdframe -> address = vaddr ;
195
- stdframe -> rawbytes .len = bytes_len ;
196
- stdframe -> rawbytes .data = g_malloc (bytes_len );
197
- memcpy (stdframe -> rawbytes .data , bytes , bytes_len );
198
-
199
- OperandValueList * ol_in = g_new (OperandValueList , 1 );
200
- operand_value_list__init (ol_in );
201
- ol_in -> n_elem = 0 ;
202
- stdframe -> operand_pre_list = ol_in ;
203
-
204
- OperandValueList * ol_out = g_new (OperandValueList , 1 );
205
- operand_value_list__init (ol_out );
206
- ol_out -> n_elem = 0 ;
207
- stdframe -> operand_post_list = ol_out ;
208
-
190
+ Frame * frame = frame_new_std (vaddr , thread_id , bytes , bytes_len );
191
+ if (!frame ) {
192
+ return false;
193
+ }
209
194
buf -> fbuf [buf -> idx ] = frame ;
210
195
return true;
211
196
}
0 commit comments