/* implemented by ring */ void alloc_ring(void)
{ int ret = ptr_ring_init(&array, ring_size, 0);
assert(!ret); /* Hacky way to poke at ring internals. Useful for testing though. */ if (param)
array.batch = param;
}
/* guest side */ int add_inbuf(unsigned len, void *buf, void *datap)
{ int ret;
ret = __ptr_ring_produce(&array, buf); if (ret >= 0) {
ret = 0;
headcnt++;
}
return ret;
}
/* * ptr_ring API provides no way for producer to find out whether a given * buffer was consumed. Our tests merely require that a successful get_buf * implies that add_inbuf succeed in the past, and that add_inbuf will succeed, * fake it accordingly.
*/ void *get_buf(unsigned *lenp, void **bufp)
{ void *datap;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.