1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <time.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include "kiro-trb.h"
struct test {
uint32_t zahl;
uint8_t buchstabe;
} __attribute__((packed));
int main(void)
{
/*
void* ptr = malloc(sizeof(struct test) + sizeof(uint64_t));
memset(ptr, 0xFA, sizeof(struct test) + sizeof(uint64_t));
struct test foo;
foo.zahl = 42;
foo.buchstabe = 'R';
memcpy(ptr, &foo, sizeof(foo));
struct test *tmp = (struct test *)ptr;
printf("Zahl = %d\n",tmp->zahl);
printf("Buchstabe = %c\n", tmp->buchstabe);
printf("Remaining = %x\n", *((uint64_t *)(ptr+sizeof(struct test))));
*/
KiroTrb *rb = g_object_new(KIRO_TYPE_TRB, NULL);
kiro_trb_reshape(rb, sizeof(uint64_t), 3);
void *buffer = kiro_trb_get_raw_buffer(rb);
uint64_t foo = 0xAFFED00F;
uint64_t bar = 0x1337BEEF;
memcpy(kiro_trb_dma_push(rb), &foo, sizeof(foo));
memcpy(kiro_trb_dma_push(rb), &foo, sizeof(foo));
memcpy(kiro_trb_dma_push(rb), &foo, sizeof(foo));
kiro_trb_push(rb, &bar);
kiro_trb_push(rb, &foo);
kiro_trb_push(rb, &foo);
uint64_t *maman = kiro_trb_get_element(rb, 3);
printf("Stored in old: %x\n", *maman);
KiroTrb *rb2 = g_object_new(KIRO_TYPE_TRB, NULL);
kiro_trb_clone(rb2, kiro_trb_get_raw_buffer(rb));
maman = kiro_trb_get_element(rb2, 3);
printf("Stored in New: %x\n", *maman);
sleep(1);
g_object_unref(rb);
g_object_unref(rb2);
return 0;
}
|