diff options
Diffstat (limited to 'src/usr/trace/tracebuffer.C')
-rw-r--r-- | src/usr/trace/tracebuffer.C | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/src/usr/trace/tracebuffer.C b/src/usr/trace/tracebuffer.C deleted file mode 100644 index 7eda6ae25..000000000 --- a/src/usr/trace/tracebuffer.C +++ /dev/null @@ -1,77 +0,0 @@ -// IBM_PROLOG_BEGIN_TAG -// This is an automatically generated prolog. -// -// $Source: src/usr/trace/tracebuffer.C $ -// -// IBM CONFIDENTIAL -// -// COPYRIGHT International Business Machines Corp. 2011 -// -// p1 -// -// Object Code Only (OCO) source materials -// Licensed Internal Code Source Materials -// IBM HostBoot Licensed Internal Code -// -// The source code for this program is not published or other- -// wise divested of its trade secrets, irrespective of what has -// been deposited with the U.S. Copyright Office. -// -// Origin: 30 -// -// IBM_PROLOG_END -#include <limits.h> -#include "tracebuffer.H" - -TracePage* TracePage::setNext(TracePage* new_next) -{ - return __sync_val_compare_and_swap(&this->next, NULL, new_next); -} - -traceEntry* TracePage::claimEntry(size_t size) -{ - // this->size will eventually wrap and it will suddenly look like there - // is free space? - size_t position = __sync_fetch_and_add(&this->size, size); - if (position > (PAGE_SIZE - sizeof(TracePage))) - { - return NULL; - } - else - { - return (traceEntry*)&((uint8_t*)this)[sizeof(TracePage) + position]; - } -} - -traceEntry* TraceBuffer::claimEntry(size_t size) -{ - traceEntry* result = NULL; - TracePage* page = last; - - while (result == NULL) - { - result = page->claimEntry(size); - - if (NULL == result) - { - if (NULL != page->getNext()) - { - __sync_bool_compare_and_swap(&this->last, - page, page->getNext()); - page = page->getNext(); - } - else - { - TracePage* new_page = new (malloc(PAGE_SIZE)) TracePage(); - TracePage* prev = page; - - while(prev != NULL) - { - prev = prev->setNext(new_page); - } - } - } - } - - return result; -} |