36 #include <gwenhywfar/debug.h>
55 idt->freeEntries=GWEN_IDTABLE_MAXENTRIES;
76 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
77 if (idt->entries[i]==0) {
94 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
95 if (idt->entries[i]==
id) {
110 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
111 if (idt->entries[i]==
id) {
124 return GWEN_IDTABLE_MAXENTRIES==idt->freeEntries;
131 return idt->freeEntries==0;
138 return GWEN_IDTABLE_MAXENTRIES-idt->freeEntries;
148 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
149 if (idt->entries[i]!=0) {
151 return idt->entries[i];
164 for (i=idt->current+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
165 if (idt->entries[i]!=0) {
167 return idt->entries[i];
170 idt->current=GWEN_IDTABLE_MAXENTRIES;
181 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
182 if (idt->entries[i]!=0) {
184 return idt->entries[i];
198 for (i=(*tabIdx)+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
199 if (idt->entries[i]!=0) {
201 return idt->entries[i];
216 idl->idTables=GWEN_IdTable_List_new();
224 GWEN_IdTable_List_free(idl->idTables);
237 idt=GWEN_IdTable_List_First(idl->idTables);
242 idt=GWEN_IdTable_List_Next(idt);
247 GWEN_IdTable_List_Add(idt, idl->idTables);;
263 idt=GWEN_IdTable_List_First(idl->idTables);
272 idt=GWEN_IdTable_List_Next(idt);
284 idt=GWEN_IdTable_List_First(idl->idTables);
289 idt=GWEN_IdTable_List_Next(idt);
301 idt=GWEN_IdTable_List_First(idl->idTables);
306 next=GWEN_IdTable_List_Next(idt);
308 GWEN_IdTable_List_Del(idt);
322 idt=GWEN_IdTable_List_First(idl->idTables);
328 next=GWEN_IdTable_List_Next(idt);
361 idt=GWEN_IdTable_List_Next(idt);
368 idt=GWEN_IdTable_List_Next(idt);
386 idt=GWEN_IdTable_List_First(idl->idTables);
391 next=GWEN_IdTable_List_Next(idt);
400 ptr=(uint32_t*)malloc(
sizeof(uint32_t)*cnt);
403 for (i=0; i<cnt; i++) {
414 GWEN_IdTable_List_Clear(idl->idTables);
422 for (i=0; i<(cnt-1); i++) {
423 if (ptr[i]>ptr[i+1]) {
437 for (i=0; i<cnt; i++) {
449 GWEN_IdTable_List_Clear(idl->idTables);
463 idt=GWEN_IdTable_List_First(idl->idTables);
465 if (idt->freeEntries!=GWEN_IDTABLE_MAXENTRIES){
468 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
469 if (idt->entries[i]!=0)
473 idt=GWEN_IdTable_List_Next(idt);
488 idt=GWEN_IdTable_List_First(idl->idTables);
495 next=GWEN_IdTable_List_Next(idt);
498 *pos=(tabNum*GWEN_IDTABLE_MAXENTRIES)+tabIdx;
518 tabNum=(*pos)/GWEN_IDTABLE_MAXENTRIES;
519 tabIdx=(*pos)%GWEN_IDTABLE_MAXENTRIES;
523 idt=GWEN_IdTable_List_First(idl->idTables);
524 while(i--) idt=GWEN_IdTable_List_Next(idt);
531 next=GWEN_IdTable_List_Next(idt);
534 *pos=(tabNum*GWEN_IDTABLE_MAXENTRIES)+tabIdx;