Changeset b5cd711 for lib/fifo.c
- Timestamp:
- 08/26/05 11:22:23 (15 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:
- 53f8305
- Parents:
- 1974620
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/fifo.c
r23c13e8 rb5cd711 57 57 enum which_t { IN, OUT, ACK }; 58 58 59 struct fifo_t {59 struct tracefifo_t { 60 60 size_t length; 61 61 size_t datamap[3]; … … 66 66 67 67 68 static char * fifo_stat_buffer = 0;69 70 static void increment_pointer(struct fifo_t *fifo, enum which_t which, int amount);71 static void set_pointer(struct fifo_t *fifo, enum which_t which, int location);72 static size_t fifo_compare(structfifo_t *fifo, enum which_t first, enum which_t second);73 static int fifo_read_generic(structfifo_t *fifo, void *buffer, size_t len, enum which_t which, char update);74 75 struct fifo_t *create_fifo(size_t size)68 static char *tracefifo_stat_buffer = 0; 69 70 static void increment_pointer(struct tracefifo_t *fifo, enum which_t which, int amount); 71 static void set_pointer(struct tracefifo_t *fifo, enum which_t which, int location); 72 static size_t tracefifo_compare(struct tracefifo_t *fifo, enum which_t first, enum which_t second); 73 static int tracefifo_read_generic(struct tracefifo_t *fifo, void *buffer, size_t len, enum which_t which, char update); 74 75 struct tracefifo_t *create_tracefifo(size_t size) 76 76 { 77 77 /* Set up our fifo 78 78 */ 79 struct fifo_t *fifo = malloc(sizeof(structfifo_t));79 struct tracefifo_t *fifo = malloc(sizeof(struct tracefifo_t)); 80 80 assert(size > 0); 81 81 82 if ( fifo_stat_buffer == 0)83 fifo_stat_buffer = (char *)malloc(513);82 if (tracefifo_stat_buffer == 0) 83 tracefifo_stat_buffer = (char *)malloc(513); 84 84 fifo->length = size; 85 85 … … 95 95 } 96 96 97 void destroy_ fifo(structfifo_t *fifo)98 { 99 assert(fifo); 100 //free( fifo_stat_buffer);97 void destroy_tracefifo(struct tracefifo_t *fifo) 98 { 99 assert(fifo); 100 //free(tracefifo_stat_buffer); 101 101 free(fifo->base); 102 102 free(fifo); 103 103 } 104 104 105 static void increment_pointer(struct fifo_t *fifo, enum which_t which, int amount) {105 static void increment_pointer(struct tracefifo_t *fifo, enum which_t which, int amount) { 106 106 assert(fifo); 107 107 assert(which == IN || which == OUT || which == ACK); … … 115 115 } 116 116 117 void fifo_flush(structfifo_t *fifo) {117 void tracefifo_flush(struct tracefifo_t *fifo) { 118 118 // do nothing 119 119 return; 120 120 } 121 121 122 static void set_pointer(struct fifo_t *fifo, enum which_t which, int location) {122 static void set_pointer(struct tracefifo_t *fifo, enum which_t which, int location) { 123 123 assert(fifo); 124 124 assert(which == IN || which == OUT || which == ACK); … … 130 130 } 131 131 132 static size_t fifo_compare(structfifo_t *fifo, enum which_t first, enum which_t second) {132 static size_t tracefifo_compare(struct tracefifo_t *fifo, enum which_t first, enum which_t second) { 133 133 assert(fifo); 134 134 assert(first == IN || first == OUT || first == ACK); … … 145 145 } 146 146 147 size_t fifo_free(structfifo_t *fifo) {148 assert(fifo); 149 return (fifo->length - fifo_compare(fifo,IN,ACK));147 size_t tracefifo_free(struct tracefifo_t *fifo) { 148 assert(fifo); 149 return (fifo->length - tracefifo_compare(fifo,IN,ACK)); 150 150 } 151 151 152 size_t fifo_length(structfifo_t *fifo) {152 size_t tracefifo_length(struct tracefifo_t *fifo) { 153 153 assert(fifo); 154 154 return fifo->length; 155 155 } 156 156 157 size_t fifo_out_available(structfifo_t *fifo) {158 assert(fifo); 159 return fifo_compare(fifo,IN,OUT);160 } 161 162 size_t fifo_ack_available(structfifo_t *fifo) {163 assert(fifo); 164 return fifo_compare(fifo,OUT,ACK);165 } 166 167 void fifo_stat_int(struct fifo_t *fifo,fifo_state_t *state)157 size_t tracefifo_out_available(struct tracefifo_t *fifo) { 158 assert(fifo); 159 return tracefifo_compare(fifo,IN,OUT); 160 } 161 162 size_t tracefifo_ack_available(struct tracefifo_t *fifo) { 163 assert(fifo); 164 return tracefifo_compare(fifo,OUT,ACK); 165 } 166 167 void tracefifo_stat_int(struct tracefifo_t *fifo, tracefifo_state_t *state) 168 168 { 169 169 assert(fifo); … … 174 174 state->ack = fifo->datamap[ACK]; 175 175 state->length = fifo->length; 176 state->used = fifo_compare(fifo,IN,ACK);177 178 } 179 char * fifo_stat_str(structfifo_t *fifo, char *desc, int delta)176 state->used = tracefifo_compare(fifo,IN,ACK); 177 178 } 179 char *tracefifo_stat_str(struct tracefifo_t *fifo, char *desc, int delta) 180 180 { 181 181 char *scan = 0; 182 182 assert(fifo); 183 183 184 bzero( fifo_stat_buffer,513);185 scan = fifo_stat_buffer;184 bzero(tracefifo_stat_buffer,513); 185 scan = tracefifo_stat_buffer; 186 186 if (desc) 187 187 scan += sprintf(scan,"%s\t",desc); … … 191 191 if (delta > 0) 192 192 scan += sprintf(scan,"delta: %d\t", delta); 193 scan += sprintf(scan,"Size: %d", fifo_compare(fifo,IN,ACK));193 scan += sprintf(scan,"Size: %d", tracefifo_compare(fifo,IN,ACK)); 194 194 scan += sprintf(scan,"\n"); 195 return fifo_stat_buffer;196 } 197 void fifo_stat(structfifo_t *fifo, char *desc, int delta)198 { 199 assert(fifo); 200 201 printf("%s", fifo_stat_str(fifo,desc,delta));195 return tracefifo_stat_buffer; 196 } 197 void tracefifo_stat(struct tracefifo_t *fifo, char *desc, int delta) 198 { 199 assert(fifo); 200 201 printf("%s",tracefifo_stat_str(fifo,desc,delta)); 202 202 } 203 203 … … 206 206 * starting at the pointer corresponding to which - if thats bogus data then its not 207 207 * the fault of this function */ 208 static int fifo_read_generic(structfifo_t *fifo, void *buffer, size_t len, enum which_t which, char update) {208 static int tracefifo_read_generic(struct tracefifo_t *fifo, void *buffer, size_t len, enum which_t which, char update) { 209 209 size_t oldptr; 210 210 int lenleft; … … 232 232 } 233 233 234 int fifo_write(structfifo_t *fifo, void *buffer, size_t len) {234 int tracefifo_write(struct tracefifo_t *fifo, void *buffer, size_t len) { 235 235 int lenleft; 236 236 int size; … … 239 239 assert(len >= 0); 240 240 241 if ( fifo_free(fifo) < len) {241 if (tracefifo_free(fifo) < len) { 242 242 return 0; 243 243 } … … 257 257 258 258 259 int fifo_out_read(structfifo_t *fifo, void *buffer, size_t len) {259 int tracefifo_out_read(struct tracefifo_t *fifo, void *buffer, size_t len) { 260 260 assert(fifo); 261 261 assert(buffer); 262 262 assert(len >= 0); 263 if ( fifo_compare(fifo,IN,OUT) < len) {264 return 0; 265 } 266 return fifo_read_generic(fifo,buffer,len,OUT,0);267 } 268 269 int fifo_ack_read(structfifo_t *fifo, void *buffer, size_t len) {263 if (tracefifo_compare(fifo,IN,OUT) < len) { 264 return 0; 265 } 266 return tracefifo_read_generic(fifo,buffer,len,OUT,0); 267 } 268 269 int tracefifo_ack_read(struct tracefifo_t *fifo, void *buffer, size_t len) { 270 270 assert(fifo); 271 271 assert(buffer); 272 272 assert(len >= 0); 273 if ( fifo_compare(fifo,OUT,ACK) < len) {274 return 0; 275 } 276 return fifo_read_generic(fifo,buffer,len,ACK,0);277 } 278 279 int fifo_out_update(structfifo_t *fifo, size_t len){280 assert(fifo); 281 assert(len >= 0); 282 if ( fifo_compare(fifo,IN,OUT) < len) {273 if (tracefifo_compare(fifo,OUT,ACK) < len) { 274 return 0; 275 } 276 return tracefifo_read_generic(fifo,buffer,len,ACK,0); 277 } 278 279 int tracefifo_out_update(struct tracefifo_t *fifo, size_t len){ 280 assert(fifo); 281 assert(len >= 0); 282 if (tracefifo_compare(fifo,IN,OUT) < len) { 283 283 return 0; 284 284 } … … 287 287 } 288 288 289 int fifo_ack_update(structfifo_t *fifo, size_t len){290 assert(fifo); 291 assert(len >= 0); 292 if ( fifo_compare(fifo,OUT,ACK) < len) {289 int tracefifo_ack_update(struct tracefifo_t *fifo, size_t len){ 290 assert(fifo); 291 assert(len >= 0); 292 if (tracefifo_compare(fifo,OUT,ACK) < len) { 293 293 return 0; 294 294 } … … 297 297 } 298 298 299 void fifo_out_reset(structfifo_t *fifo) {299 void tracefifo_out_reset(struct tracefifo_t *fifo) { 300 300 /* 301 301 * This will reset the sent pointer back to the ack pointer. This
Note: See TracChangeset
for help on using the changeset viewer.