#include #include #include #include #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; }