Changeset 1085:7d7266115a34 in freeDiameter for libfdproto/fifo.c
- Timestamp:
- May 3, 2013, 8:20:56 PM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/fifo.c
r1073 r1085 119 119 120 120 /* 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); 121 DECLARE_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 129 133 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"); 134 135 } 135 136 136 137 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); 148 144 149 145 if (dump_item) { … … 152 148 for (li = queue->list.next; li != &queue->list; li = li->next) { 153 149 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); 157 154 } 158 155 } 159 156 CHECK_POSIX_DO( pthread_mutex_unlock( &queue->mtx ), /* continue */ ); 160 157 return *buf; 158 error: 159 CHECK_POSIX_DO( pthread_mutex_unlock( &queue->mtx ), /* continue */ ); 160 return NULL; 161 161 } 162 162
Note: See TracChangeset
for help on using the changeset viewer.