#include #include #include #include #include #include #include static struct traceobj trobj; #define ADD_CONTENT(buffer,bytes,counter) \ { \ char *bufPtr = buffer; \ for (k=0; k 0) { bytesGot = rngBufGet(rng, &bigBuffer[0], sizeof(bigBuffer)); CHECK_CONTENT(bigBuffer, bytesGot, expectedCounter); } rngDelete(rng); chunks = 10; rng = rngCreate(chunks); bytesPut = 5; traceobj_assert(&trobj, rngFreeBytes(rng) > bytesPut); checkCounter = 0xaa; expectedCounter = checkCounter; for (j = 0; j < bytesPut; j++) { rngPutAhead(rng, checkCounter, j); checkCounter++; } rngMoveAhead(rng, bytesPut); bytesGot = rngBufGet(rng, &bigBuffer[0], sizeof(bigBuffer)); traceobj_assert(&trobj, bytesGot == bytesPut); CHECK_CONTENT(bigBuffer, bytesGot, expectedCounter); /* Check also wrap-around */ bytesPut = chunks -2; traceobj_assert(&trobj, rngFreeBytes(rng) > bytesPut); checkCounter = 0xaa; expectedCounter = checkCounter; for (j = 0; j < bytesPut; j++) { rngPutAhead(rng, checkCounter, j); checkCounter++; } rngMoveAhead(rng, bytesPut); bytesGot = rngBufGet(rng, &bigBuffer[0], sizeof(bigBuffer)); traceobj_assert(&trobj, bytesGot == bytesPut); CHECK_CONTENT(bigBuffer, bytesGot, expectedCounter); rngDelete(rng); traceobj_exit(&trobj); } int main(int argc, char *const argv[]) { TASK_ID tid; traceobj_init(&trobj, argv[0], 0); tid = taskSpawn("rootTask", 50, 0, 0, rootTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); traceobj_assert(&trobj, tid != ERROR); traceobj_join(&trobj); exit(0); }