Lines Matching refs:table

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