• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/devif/backends/debug/

Lines Matching refs:buffer

26  * to check for non valid buffer enqueues/deqeues that might happen.
27 * A not valid enqueue of a buffer is when the endpoint that enqueues
28 * the buffer does not own the buffer.
37 * If a a buffer is enqueued, it has to be contained in one of these
39 * the buffer is contained in the chunk. If it is at the beginning or
41 * If the buffer is in the middle of the chunk, we split the memory chunk
42 * into two new memory chunks that do not contain the buffer.
44 * If a buffer is dequeued the buffer is added to the existing memory
46 * list of chunks. If a buffer is dequeued that is in between two
195 // add the whole regions as a buffer
227 // add the whole regions as a buffer
349 // assumes that the buffer described by offset and length is contained
350 // in the buffer that is given as a struct
353 struct memory_ele* buffer,
357 // split the buffer
358 // insert half before the buffer
362 offset, length, buffer->offset, buffer->length);
364 // check if buffer at beginning of region
365 if (buffer->offset == offset) {
366 buffer->offset += length;
367 buffer->length -= length;
369 if (buffer->length == 0) {
371 DEBUG("enqueue remove buffer from list\n");
373 if (buffer->prev != NULL) {
374 buffer->prev->next = buffer->next;
376 region->buffers = buffer->next;
379 if (buffer->next != NULL) {
380 buffer->next->prev = buffer->prev;
382 slab_free(&que->alloc, buffer);
389 buffer->offset, buffer->length);
393 // check if buffer at end of region
394 if ((buffer->offset+buffer->length) == (offset+length)) {
395 buffer->length -= length;
397 if (buffer->length == 0) {
400 if (buffer->prev != NULL) {
401 buffer->prev = buffer->next;
404 if (buffer->next != NULL) {
405 buffer->next->prev = buffer->prev;
407 slab_free(&que->alloc, buffer);
414 buffer->offset, buffer->length);
418 // now if this did not work need to split buffer that contains the
419 // enqueued buffer into two buffers (might also result only in one)
421 // inset half before buffer
422 genoffset_t old_len = buffer->length;
424 buffer->length = offset - buffer->offset;
431 after->offset = buffer->offset + buffer->length + length;
432 after->length = old_len - buffer->length - length;
434 // insert after buffer
435 after->prev = buffer;
436 after->next = buffer->next;
438 if (buffer->next != NULL) {
439 buffer->next->prev = after;
442 buffer->next = after;
444 add_to_history(que, offset, length, "enq split buffer");
446 DEBUG("Split buffer length=%lu to "
450 buffer->offset, buffer->length,
456 * Inserts a buffer either before or after an existing buffer into the queue
457 * Checks for merges of prev/next buffer in the queue
461 struct memory_ele* buffer,
465 assert(buffer != NULL);
468 if (offset >= buffer->offset+buffer->length) {// insert after
469 // buffer is on lower boundary
471 if (buffer->offset+length == offset) {
472 buffer->length += length;
476 offset, length, buffer->offset, buffer->length);
478 if (buffer->next != NULL &&
479 (buffer->offset + buffer->length == buffer->next->offset)) {
480 buffer->length += buffer->next->length;
481 struct memory_ele* next = buffer->next;
482 if (buffer->next->next != NULL) {
483 buffer->next = buffer->next->next;
484 buffer->next->next->prev = buffer;
490 buffer->offset, buffer->length);
501 if (buffer->next != NULL &&
502 buffer->next->offset == offset+length) {
504 buffer->next->offset = offset;
505 buffer->next->length += length;
510 buffer->next->offset, buffer->next->length);
515 // buffer->next can be null and the newly inserted buffer
517 if (buffer->next == NULL &&
518 buffer->offset + buffer->length == offset) {
520 buffer->length += length;
528 offset, length, buffer->offset, buffer->length);
536 ele->next = buffer->next;
537 ele->prev = buffer;
539 if (buffer->next != NULL) {
540 buffer->next->prev = ele;
543 buffer->next = ele;
549 offset, length, buffer->offset, buffer->length);
553 } else { // insert before buffer
554 // buffer is on lower boundary
555 if (buffer->offset == offset+length) {
556 buffer->length += length;
557 buffer->offset = offset;
560 if (buffer->prev != NULL &&
561 (buffer->prev->offset+ buffer->prev->length ==
562 buffer->offset)) {
563 struct memory_ele* prev = buffer->prev;
564 prev->length += buffer->length;
565 prev->next = buffer->next;
567 if (buffer->next != NULL) {
568 buffer->next->prev = prev;
571 slab_free(&que->alloc, buffer);
573 add_to_history(que, offset, length, "deq insert buffer"
579 add_to_history(que, offset, length, "deq insert buffer"
584 if (buffer->prev != NULL &&
585 (buffer->prev->offset+ buffer->prev->length ==
589 buffer->prev->length += 2048;
592 buffer->prev->length += length;
594 add_to_history(que, offset, length, "deq insert buffer"
598 offset, length, buffer->prev->offset, buffer->prev->length);
608 ele->next = buffer;
609 ele->prev = buffer->prev;
611 if (buffer->prev != NULL) {
612 buffer->prev->next = ele;
617 buffer->prev = ele;
619 add_to_history(que, offset, length, "deq insert buffer"
624 buffer->offset, buffer->length);
672 // find the buffer
673 struct memory_ele* buffer = region->buffers;
679 // the only buffer
680 if (buffer->next == NULL) {
682 buffer->offset, buffer->length)) {
689 remove_split_buffer(que, region, buffer, offset, length);
692 printf("Bounds check failed only buffer offset=%lu length=%lu "
694 buffer->offset, buffer->length);
702 // more than one buffer
703 while (buffer != NULL) {
705 buffer->offset, buffer->length)){
712 remove_split_buffer(que, region, buffer, offset, length);
715 buffer = buffer->next;
759 // add the whole regions as a buffer
787 // add the whole regions as a buffer
806 // find the buffer
807 struct memory_ele* buffer = region->buffers;
808 if (buffer == NULL) {
819 if (buffer->next == NULL) {
820 if (!buffer_in_bounds(*offset, *length, buffer->offset,
821 buffer->length)) {
822 insert_merge_buffer(que, region, buffer, *offset, *length);
830 while (buffer->next != NULL) {
831 if (*offset >= buffer->offset) {
832 buffer = buffer->next;
834 if (!buffer_in_bounds(*offset, *length, buffer->offset,
835 buffer->length)) {
836 insert_merge_buffer(que, region, buffer, *offset, *length);
844 // insert after the last buffer
845 if (!buffer_in_bounds(*offset, *length, buffer->offset,
846 buffer->length)) {
847 insert_merge_buffer(que, region, buffer, *offset, *length);