Lines Matching refs:table
84 struct eloop_sock *table; member
141 static void eloop_trace_sock_add_ref(struct eloop_sock_table *table) in eloop_trace_sock_add_ref() argument
144 if (table == NULL || table->table == NULL) in eloop_trace_sock_add_ref()
146 for (i = 0; i < table->count; i++) { in eloop_trace_sock_add_ref()
147 wpa_trace_add_ref(&table->table[i], eloop, in eloop_trace_sock_add_ref()
148 table->table[i].eloop_data); in eloop_trace_sock_add_ref()
149 wpa_trace_add_ref(&table->table[i], user, in eloop_trace_sock_add_ref()
150 table->table[i].user_data); in eloop_trace_sock_add_ref()
155 static void eloop_trace_sock_remove_ref(struct eloop_sock_table *table) in eloop_trace_sock_remove_ref() argument
158 if (table == NULL || table->table == NULL) in eloop_trace_sock_remove_ref()
160 for (i = 0; i < table->count; i++) { in eloop_trace_sock_remove_ref()
161 wpa_trace_remove_ref(&table->table[i], eloop, in eloop_trace_sock_remove_ref()
162 table->table[i].eloop_data); in eloop_trace_sock_remove_ref()
163 wpa_trace_remove_ref(&table->table[i], user, in eloop_trace_sock_remove_ref()
164 table->table[i].user_data); in eloop_trace_sock_remove_ref()
170 #define eloop_trace_sock_add_ref(table) do { } while (0) argument
171 #define eloop_trace_sock_remove_ref(table) do { } while (0) argument
334 static int eloop_sock_table_add_sock(struct eloop_sock_table *table, in eloop_sock_table_add_sock() argument
356 if (table == NULL) in eloop_sock_table_add_sock()
429 eloop_trace_sock_remove_ref(table); in eloop_sock_table_add_sock()
430 tmp = os_realloc_array(table->table, table->count + 1, in eloop_sock_table_add_sock()
433 eloop_trace_sock_add_ref(table); in eloop_sock_table_add_sock()
437 tmp[table->count].sock = sock; in eloop_sock_table_add_sock()
438 tmp[table->count].eloop_data = eloop_data; in eloop_sock_table_add_sock()
439 tmp[table->count].user_data = user_data; in eloop_sock_table_add_sock()
440 tmp[table->count].handler = handler; in eloop_sock_table_add_sock()
441 wpa_trace_record(&tmp[table->count]); in eloop_sock_table_add_sock()
442 table->count++; in eloop_sock_table_add_sock()
443 table->table = tmp; in eloop_sock_table_add_sock()
446 table->changed = 1; in eloop_sock_table_add_sock()
447 eloop_trace_sock_add_ref(table); in eloop_sock_table_add_sock()
450 if (eloop_sock_queue(sock, table->type) < 0) in eloop_sock_table_add_sock()
452 os_memcpy(&eloop.fd_table[sock], &table->table[table->count - 1], in eloop_sock_table_add_sock()
459 static void eloop_sock_table_remove_sock(struct eloop_sock_table *table, in eloop_sock_table_remove_sock() argument
467 if (table == NULL || table->table == NULL || table->count == 0) in eloop_sock_table_remove_sock()
470 for (i = 0; i < table->count; i++) { in eloop_sock_table_remove_sock()
471 if (table->table[i].sock == sock) in eloop_sock_table_remove_sock()
474 if (i == table->count) in eloop_sock_table_remove_sock()
476 eloop_trace_sock_remove_ref(table); in eloop_sock_table_remove_sock()
477 if (i != table->count - 1) { in eloop_sock_table_remove_sock()
478 os_memmove(&table->table[i], &table->table[i + 1], in eloop_sock_table_remove_sock()
479 (table->count - i - 1) * in eloop_sock_table_remove_sock()
482 table->count--; in eloop_sock_table_remove_sock()
484 table->changed = 1; in eloop_sock_table_remove_sock()
485 eloop_trace_sock_add_ref(table); in eloop_sock_table_remove_sock()
495 EV_SET(&ke, sock, event_type_kevent_filter(table->type), EV_DELETE, 0, in eloop_sock_table_remove_sock()
532 if (readers && readers->table) { in eloop_sock_table_set_fds()
534 fd = readers->table[i].sock; in eloop_sock_table_set_fds()
544 if (writers && writers->table) { in eloop_sock_table_set_fds()
550 fd = writers->table[i].sock; in eloop_sock_table_set_fds()
570 if (exceptions && exceptions->table) { in eloop_sock_table_set_fds()
576 fd = exceptions->table[i].sock; in eloop_sock_table_set_fds()
594 static int eloop_sock_table_dispatch_table(struct eloop_sock_table *table, in eloop_sock_table_dispatch_table() argument
602 if (!table || !table->table) in eloop_sock_table_dispatch_table()
605 table->changed = 0; in eloop_sock_table_dispatch_table()
606 for (i = 0; i < table->count; i++) { in eloop_sock_table_dispatch_table()
607 pfd = find_pollfd(pollfds_map, table->table[i].sock, in eloop_sock_table_dispatch_table()
615 table->table[i].handler(table->table[i].sock, in eloop_sock_table_dispatch_table()
616 table->table[i].eloop_data, in eloop_sock_table_dispatch_table()
617 table->table[i].user_data); in eloop_sock_table_dispatch_table()
618 if (table->changed) in eloop_sock_table_dispatch_table()
649 static void eloop_sock_table_set_fds(struct eloop_sock_table *table, in eloop_sock_table_set_fds() argument
656 if (table->table == NULL) in eloop_sock_table_set_fds()
659 for (i = 0; i < table->count; i++) { in eloop_sock_table_set_fds()
660 assert(table->table[i].sock >= 0); in eloop_sock_table_set_fds()
661 FD_SET(table->table[i].sock, fds); in eloop_sock_table_set_fds()
666 static void eloop_sock_table_dispatch(struct eloop_sock_table *table, in eloop_sock_table_dispatch() argument
671 if (table == NULL || table->table == NULL) in eloop_sock_table_dispatch()
674 table->changed = 0; in eloop_sock_table_dispatch()
675 for (i = 0; i < table->count; i++) { in eloop_sock_table_dispatch()
676 if (FD_ISSET(table->table[i].sock, fds)) { in eloop_sock_table_dispatch()
677 table->table[i].handler(table->table[i].sock, in eloop_sock_table_dispatch()
678 table->table[i].eloop_data, in eloop_sock_table_dispatch()
679 table->table[i].user_data); in eloop_sock_table_dispatch()
680 if (table->changed) in eloop_sock_table_dispatch()
692 struct eloop_sock *table; in eloop_sock_table_dispatch() local
696 table = &eloop.fd_table[events[i].data.fd]; in eloop_sock_table_dispatch()
697 if (table->handler == NULL) in eloop_sock_table_dispatch()
699 table->handler(table->sock, table->eloop_data, in eloop_sock_table_dispatch()
700 table->user_data); in eloop_sock_table_dispatch()
714 struct eloop_sock *table; in eloop_sock_table_dispatch() local
718 table = &eloop.fd_table[events[i].ident]; in eloop_sock_table_dispatch()
719 if (table->handler == NULL) in eloop_sock_table_dispatch()
721 table->handler(table->sock, table->eloop_data, in eloop_sock_table_dispatch()
722 table->user_data); in eloop_sock_table_dispatch()
731 static int eloop_sock_table_requeue(struct eloop_sock_table *table) in eloop_sock_table_requeue() argument
736 for (i = 0; i < table->count && table->table; i++) { in eloop_sock_table_requeue()
737 if (eloop_sock_queue(table->table[i].sock, table->type) == -1) in eloop_sock_table_requeue()
771 static void eloop_sock_table_destroy(struct eloop_sock_table *table) in eloop_sock_table_destroy() argument
773 if (table) { in eloop_sock_table_destroy()
775 for (i = 0; i < table->count && table->table; i++) { in eloop_sock_table_destroy()
779 table->table[i].sock, in eloop_sock_table_destroy()
780 table->table[i].eloop_data, in eloop_sock_table_destroy()
781 table->table[i].user_data, in eloop_sock_table_destroy()
782 table->table[i].handler); in eloop_sock_table_destroy()
785 table->table[i].handler); in eloop_sock_table_destroy()
786 wpa_trace_dump("eloop sock", &table->table[i]); in eloop_sock_table_destroy()
788 os_free(table->table); in eloop_sock_table_destroy()
826 struct eloop_sock_table *table; in eloop_register_sock() local
829 table = eloop_get_sock_table(type); in eloop_register_sock()
830 return eloop_sock_table_add_sock(table, sock, handler, in eloop_register_sock()
837 struct eloop_sock_table *table; in eloop_unregister_sock() local
839 table = eloop_get_sock_table(type); in eloop_unregister_sock()
840 eloop_sock_table_remove_sock(table, sock); in eloop_unregister_sock()