Navigation


Changeset 1085:7d7266115a34 in freeDiameter for libfdproto/fifo.c


Ignore:
Timestamp:
May 3, 2013, 8:20:56 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Cleaning of the traces in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdproto/fifo.c

    r1073 r1085  
    119119
    120120/* Dump the content of a queue */
    121 void fd_fifo_dump(int level, char * name, struct fifo * queue, void (*dump_item)(int level, void * item))
    122 {
    123         TRACE_ENTRY("%i %p %p %p", level, name, queue, dump_item);
    124        
    125         if (!TRACE_BOOL(level))
    126                 return;
    127        
    128         fd_log_debug("Dumping queue '%s' (%p):", name ?: "?", queue);
     121DECLARE_FD_DUMP_PROTOTYPE(fd_fifo_dump, char * name, struct fifo * queue, fd_fifo_dump_item_cb dump_item)
     122{
     123        size_t o = 0;
     124        if (!offset)
     125                offset = &o;
     126       
     127        if (name) {
     128                CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "'%s'(@%p): ", name, queue), return NULL);
     129        } else {
     130                CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "{fifo}(@%p): ", queue), return NULL);
     131        }
     132       
    129133        if (!CHECK_FIFO( queue )) {
    130                 fd_log_debug("  Queue invalid!");
    131                 if (queue)
    132                         fd_log_debug("  (%x != %x)", queue->eyec, FIFO_EYEC);
    133                 return;
     134                return fd_dump_extend(FD_DUMP_STD_PARAMS, "INVALID/NULL\n");
    134135        }
    135136       
    136137        CHECK_POSIX_DO(  pthread_mutex_lock( &queue->mtx ), /* continue */  );
    137         fd_log_debug("   %d elements in queue / %d threads waiting", queue->count, queue->thrs);
    138         fd_log_debug("   %d elements max / %d threads waiting to push", queue->max, queue->thrs_push);
    139         fd_log_debug("   thresholds: %d / %d (h:%d), cb: %p,%p (%p), highest: %d",
    140                         queue->high, queue->low, queue->highest,
    141                         queue->h_cb, queue->l_cb, queue->data,
    142                         queue->highest_ever);
    143         fd_log_debug("   stats: total:%lld in %ld.%06ld, blocking:%ld.%06ld, last:%ld.%06ld",
    144                         queue->total_items,
    145                         (long)queue->total_time.tv_sec,(long)(queue->total_time.tv_nsec/1000),
    146                         (long)queue->blocking_time.tv_sec,(long)(queue->blocking_time.tv_nsec/1000),
    147                         (long)queue->last_time.tv_sec,(long)(queue->last_time.tv_nsec/1000) );
     138        CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "items:%d,%d,%d threads:%d,%d stats:%lld/%ld.%06ld,%ld.%06ld,%ld.%06ld thresholds:%d,%d,%d,%p,%p,%p\n",
     139                                                queue->count, queue->highest_ever, queue->max,
     140                                                queue->thrs, queue->thrs_push,
     141                                                queue->total_items,(long)queue->total_time.tv_sec,(long)(queue->total_time.tv_nsec/1000),(long)queue->blocking_time.tv_sec,(long)(queue->blocking_time.tv_nsec/1000),(long)queue->last_time.tv_sec,(long)(queue->last_time.tv_nsec/1000),
     142                                                queue->high, queue->low, queue->highest, queue->h_cb, queue->l_cb, queue->data),
     143                         goto error);
    148144       
    149145        if (dump_item) {
     
    152148                for (li = queue->list.next; li != &queue->list; li = li->next) {
    153149                        struct fifo_item * fi = (struct fifo_item *)li;
    154                         fd_log_debug("  [%i] item %p in fifo %p, posted:%ld.%06ld",
    155                                 i++, fi->item.o, queue, (long)fi->posted_on.tv_sec,(long)(fi->posted_on.tv_nsec/1000));
    156                         (*dump_item)(level, fi->item.o);
     150                        CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, " [#%i](@%p)@%ld.%06ld: ",
     151                                                i++, fi->item.o, (long)fi->posted_on.tv_sec,(long)(fi->posted_on.tv_nsec/1000)),
     152                                         goto error);
     153                        CHECK_MALLOC_DO( (*dump_item)(FD_DUMP_STD_PARAMS, fi->item.o), goto error);
    157154                }
    158155        }
    159156        CHECK_POSIX_DO(  pthread_mutex_unlock( &queue->mtx ), /* continue */  );
    160        
     157        return *buf;
     158error:
     159        CHECK_POSIX_DO(  pthread_mutex_unlock( &queue->mtx ), /* continue */  );
     160        return NULL;
    161161}
    162162
Note: See TracChangeset for help on using the changeset viewer.