Changeset aa67e26
- Timestamp:
- 04/08/06 13:46:28 (16 years ago)
- Branches:
- 4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
- Children:
- 5da3315
- Parents:
- 67a14d4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/fifo.c
re4e1635 raa67e26 56 56 57 57 58 enum which_t { IN, OUT,ACK };58 enum which_t { FIFO_PTR_IN, FIFO_PTR_OUT, FIFO_PTR_ACK }; 59 59 60 60 struct tracefifo_t { … … 89 89 } 90 90 91 fifo->datamap[ IN] = 0;92 fifo->datamap[ OUT] = 0;93 fifo->datamap[ ACK] = 0;91 fifo->datamap[FIFO_PTR_IN] = 0; 92 fifo->datamap[FIFO_PTR_OUT] = 0; 93 fifo->datamap[FIFO_PTR_ACK] = 0; 94 94 return fifo; 95 95 } … … 104 104 static void increment_pointer(struct tracefifo_t *fifo, enum which_t which, int amount) { 105 105 assert(fifo); 106 assert(which == IN || which == OUT || which ==ACK);106 assert(which == FIFO_PTR_IN || which == FIFO_PTR_OUT || which == FIFO_PTR_ACK); 107 107 assert(amount >= 0); 108 108 … … 121 121 static void set_pointer(struct tracefifo_t *fifo, enum which_t which, unsigned int location) { 122 122 assert(fifo); 123 assert(which == IN || which == OUT || which ==ACK);123 assert(which == FIFO_PTR_IN || which == FIFO_PTR_OUT || which == FIFO_PTR_ACK); 124 124 125 125 assert(location <= fifo->length); … … 130 130 static size_t tracefifo_compare(struct tracefifo_t *fifo, enum which_t first, enum which_t second) { 131 131 assert(fifo); 132 assert(first == IN || first == OUT || first ==ACK);133 assert(second == IN || second == OUT || second ==ACK);132 assert(first == FIFO_PTR_IN || first == FIFO_PTR_OUT || first == FIFO_PTR_ACK); 133 assert(second == FIFO_PTR_IN || second == FIFO_PTR_OUT || second == FIFO_PTR_ACK); 134 134 135 135 if (fifo->datamap[first] == fifo->datamap[second]) { … … 145 145 size_t tracefifo_free(struct tracefifo_t *fifo) { 146 146 assert(fifo); 147 return (fifo->length - tracefifo_compare(fifo, IN,ACK));147 return (fifo->length - tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_ACK)); 148 148 } 149 149 … … 155 155 size_t tracefifo_out_available(struct tracefifo_t *fifo) { 156 156 assert(fifo); 157 return tracefifo_compare(fifo, IN,OUT);157 return tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_OUT); 158 158 } 159 159 160 160 size_t tracefifo_ack_available(struct tracefifo_t *fifo) { 161 161 assert(fifo); 162 return tracefifo_compare(fifo, OUT,ACK);162 return tracefifo_compare(fifo,FIFO_PTR_OUT,FIFO_PTR_ACK); 163 163 } 164 164 … … 168 168 assert(state); 169 169 170 state->in = fifo->datamap[ IN];171 state->out = fifo->datamap[ OUT];172 state->ack = fifo->datamap[ ACK];170 state->in = fifo->datamap[FIFO_PTR_IN]; 171 state->out = fifo->datamap[FIFO_PTR_OUT]; 172 state->ack = fifo->datamap[FIFO_PTR_ACK]; 173 173 state->length = fifo->length; 174 state->used = tracefifo_compare(fifo, IN,ACK);174 state->used = tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_ACK); 175 175 176 176 } … … 187 187 if (desc) 188 188 scan += sprintf(scan,"%s\t",desc); 189 scan += sprintf(scan,"in: %d \t",fifo->datamap[ IN]);190 scan += sprintf(scan,"sent: %d\t", fifo->datamap[ OUT]);191 scan += sprintf(scan,"ack: %d\t", fifo->datamap[ ACK]);189 scan += sprintf(scan,"in: %d \t",fifo->datamap[FIFO_PTR_IN]); 190 scan += sprintf(scan,"sent: %d\t", fifo->datamap[FIFO_PTR_OUT]); 191 scan += sprintf(scan,"ack: %d\t", fifo->datamap[FIFO_PTR_ACK]); 192 192 if (delta > 0) 193 193 scan += sprintf(scan,"delta: %d\t", delta); 194 scan += sprintf(scan,"Size: %d", tracefifo_compare(fifo, IN,ACK));194 scan += sprintf(scan,"Size: %d", tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_ACK)); 195 195 scan += sprintf(scan,"\n"); 196 196 return tracefifo_stat_buffer; … … 244 244 lenleft = len; 245 245 while (lenleft > 0) { 246 size = MIN((fifo->length - fifo->datamap[ IN]), lenleft );247 memcpy((char *)((ptrdiff_t)fifo->base + fifo->datamap[ IN]),246 size = MIN((fifo->length - fifo->datamap[FIFO_PTR_IN]), lenleft ); 247 memcpy((char *)((ptrdiff_t)fifo->base + fifo->datamap[FIFO_PTR_IN]), 248 248 buffer, 249 249 size); 250 increment_pointer(fifo, IN,size);250 increment_pointer(fifo,FIFO_PTR_IN,size); 251 251 buffer = (char*)buffer+size; 252 252 lenleft -= size; … … 259 259 assert(fifo); 260 260 assert(buffer); 261 if (tracefifo_compare(fifo, IN,OUT) < len) {262 return 0; 263 } 264 return tracefifo_read_generic(fifo,buffer,len, OUT,0);261 if (tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_OUT) < len) { 262 return 0; 263 } 264 return tracefifo_read_generic(fifo,buffer,len,FIFO_PTR_OUT,0); 265 265 } 266 266 … … 268 268 assert(fifo); 269 269 assert(buffer); 270 if (tracefifo_compare(fifo, OUT,ACK) < len) {271 return 0; 272 } 273 return tracefifo_read_generic(fifo,buffer,len, ACK,0);270 if (tracefifo_compare(fifo,FIFO_PTR_OUT,FIFO_PTR_ACK) < len) { 271 return 0; 272 } 273 return tracefifo_read_generic(fifo,buffer,len,FIFO_PTR_ACK,0); 274 274 } 275 275 276 276 int tracefifo_out_update(struct tracefifo_t *fifo, size_t len){ 277 277 assert(fifo); 278 if (tracefifo_compare(fifo, IN,OUT) < len) {279 return 0; 280 } 281 increment_pointer(fifo, OUT,len);278 if (tracefifo_compare(fifo,FIFO_PTR_IN,FIFO_PTR_OUT) < len) { 279 return 0; 280 } 281 increment_pointer(fifo,FIFO_PTR_OUT,len); 282 282 return len; 283 283 } … … 285 285 int tracefifo_ack_update(struct tracefifo_t *fifo, size_t len){ 286 286 assert(fifo); 287 if (tracefifo_compare(fifo, OUT,ACK) < len) {288 return 0; 289 } 290 increment_pointer(fifo, ACK,len);287 if (tracefifo_compare(fifo,FIFO_PTR_OUT,FIFO_PTR_ACK) < len) { 288 return 0; 289 } 290 increment_pointer(fifo,FIFO_PTR_ACK,len); 291 291 return len; 292 292 } … … 299 299 */ 300 300 assert(fifo); 301 fifo->datamap[ OUT] = fifo->datamap[ACK];302 } 303 301 fifo->datamap[FIFO_PTR_OUT] = fifo->datamap[FIFO_PTR_ACK]; 302 } 303
Note: See TracChangeset
for help on using the changeset viewer.