Changeset 1067:23989d6c8390 in freeDiameter for libfdproto
- Timestamp:
- Apr 30, 2013, 10:51:09 AM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/fifo.c
r1060 r1067 71 71 int highest_ever; /* The max count value this queue has reached (for tweaking) */ 72 72 73 long long total_items; /* Cumulated number of items that went through this fifo (excluding current count), always increasing. */ 73 74 struct timespec total_time; /* Cumulated time all items spent in this queue, including blocking time (always growing, use deltas for monitoring) */ 74 75 struct timespec blocking_time; /* Cumulated time threads trying to post new items were blocked (queue full). */ … … 140 141 queue->h_cb, queue->l_cb, queue->data, 141 142 queue->highest_ever); 142 fd_log_debug(" timings: total:%ld.%06ld, blocking:%ld.%06ld, last:%ld.%06ld", 143 (long)queue->total_time.tv_sec,(long)(queue->total_time.tv_nsec/1000), 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), 144 146 (long)queue->blocking_time.tv_sec,(long)(queue->blocking_time.tv_nsec/1000), 145 147 (long)queue->last_time.tv_sec,(long)(queue->last_time.tv_nsec/1000) ); … … 259 261 old->eyec = FIFO_EYEC; 260 262 263 /* Merge the stats in the new queue */ 264 new->total_items += old->total_items; 265 old->total_items = 0; 266 267 new->total_time.tv_nsec += old->total_time.tv_nsec; 268 new->total_time.tv_sec += old->total_time.tv_sec + (new->total_time.tv_nsec / 1000000000); 269 new->total_time.tv_nsec %= 1000000000; 270 old->total_time.tv_nsec = 0; 271 old->total_time.tv_sec = 0; 272 273 new->blocking_time.tv_nsec += old->blocking_time.tv_nsec; 274 new->blocking_time.tv_sec += old->blocking_time.tv_sec + (new->blocking_time.tv_nsec / 1000000000); 275 new->blocking_time.tv_nsec %= 1000000000; 276 old->blocking_time.tv_nsec = 0; 277 old->blocking_time.tv_sec = 0; 278 261 279 /* Unlock, we're done */ 262 280 CHECK_POSIX( pthread_mutex_unlock( &new->mtx ) ); … … 291 309 292 310 /* Get the timings */ 293 int fd_fifo_getstats( struct fifo * queue, struct timespec * total, struct timespec * blocking, struct timespec * last)294 { 295 TRACE_ENTRY( "%p %p %p %p ", queue, total, blocking, last);311 int fd_fifo_getstats( struct fifo * queue, long long *items, struct timespec * total, struct timespec * blocking, struct timespec * last) 312 { 313 TRACE_ENTRY( "%p %p %p %p %p", queue, items, total, blocking, last); 296 314 297 315 /* Check the parameters */ … … 300 318 /* lock the queue */ 301 319 CHECK_POSIX( pthread_mutex_lock( &queue->mtx ) ); 320 321 if (items) 322 *items = queue->total_items; 302 323 303 324 if (total) … … 467 488 fd_list_unlink(&fi->item); 468 489 queue->count--; 490 queue->total_items++; 469 491 ret = fi->item.o; 470 492
Note: See TracChangeset
for help on using the changeset viewer.