Lines Matching full:table

72 	struct eloop_sock *table;  member
80 size_t count; /* sum of all table counts */
126 static void eloop_trace_sock_add_ref(struct eloop_sock_table *table) in eloop_trace_sock_add_ref() argument
130 if (table == NULL || table->table == NULL) in eloop_trace_sock_add_ref()
132 for (i = 0; i < table->count; i++) { in eloop_trace_sock_add_ref()
133 wpa_trace_add_ref(&table->table[i], eloop, in eloop_trace_sock_add_ref()
134 table->table[i].eloop_data); in eloop_trace_sock_add_ref()
135 wpa_trace_add_ref(&table->table[i], user, in eloop_trace_sock_add_ref()
136 table->table[i].user_data); in eloop_trace_sock_add_ref()
141 static void eloop_trace_sock_remove_ref(struct eloop_sock_table *table) in eloop_trace_sock_remove_ref() argument
145 if (table == NULL || table->table == NULL) in eloop_trace_sock_remove_ref()
147 for (i = 0; i < table->count; i++) { in eloop_trace_sock_remove_ref()
148 wpa_trace_remove_ref(&table->table[i], eloop, in eloop_trace_sock_remove_ref()
149 table->table[i].eloop_data); in eloop_trace_sock_remove_ref()
150 wpa_trace_remove_ref(&table->table[i], user, in eloop_trace_sock_remove_ref()
151 table->table[i].user_data); in eloop_trace_sock_remove_ref()
157 #define eloop_trace_sock_add_ref(table) do { } while (0) argument
158 #define eloop_trace_sock_remove_ref(table) do { } while (0) argument
259 static int eloop_sock_table_add_sock(struct eloop_sock_table *table, in eloop_sock_table_add_sock() argument
281 if (table == NULL) in eloop_sock_table_add_sock()
355 eloop_trace_sock_remove_ref(table); in eloop_sock_table_add_sock()
356 tmp = os_realloc_array(table->table, table->count + 1, in eloop_sock_table_add_sock()
359 eloop_trace_sock_add_ref(table); in eloop_sock_table_add_sock()
363 tmp[table->count].sock = sock; in eloop_sock_table_add_sock()
364 tmp[table->count].eloop_data = eloop_data; in eloop_sock_table_add_sock()
365 tmp[table->count].user_data = user_data; in eloop_sock_table_add_sock()
366 tmp[table->count].handler = handler; in eloop_sock_table_add_sock()
367 wpa_trace_record(&tmp[table->count]); in eloop_sock_table_add_sock()
368 table->count++; in eloop_sock_table_add_sock()
369 table->table = tmp; in eloop_sock_table_add_sock()
372 table->changed = 1; in eloop_sock_table_add_sock()
373 eloop_trace_sock_add_ref(table); in eloop_sock_table_add_sock()
376 if (eloop_sock_queue(sock, table->type) < 0) in eloop_sock_table_add_sock()
378 os_memcpy(&eloop.fd_table[sock], &table->table[table->count - 1], in eloop_sock_table_add_sock()
385 static void eloop_sock_table_remove_sock(struct eloop_sock_table *table, in eloop_sock_table_remove_sock() argument
393 if (table == NULL || table->table == NULL || table->count == 0) in eloop_sock_table_remove_sock()
396 for (i = 0; i < table->count; i++) { in eloop_sock_table_remove_sock()
397 if (table->table[i].sock == sock) in eloop_sock_table_remove_sock()
400 if (i == table->count) in eloop_sock_table_remove_sock()
402 eloop_trace_sock_remove_ref(table); in eloop_sock_table_remove_sock()
403 if (i != table->count - 1) { in eloop_sock_table_remove_sock()
404 os_memmove(&table->table[i], &table->table[i + 1], in eloop_sock_table_remove_sock()
405 (table->count - i - 1) * in eloop_sock_table_remove_sock()
408 table->count--; in eloop_sock_table_remove_sock()
410 table->changed = 1; in eloop_sock_table_remove_sock()
411 eloop_trace_sock_add_ref(table); in eloop_sock_table_remove_sock()
421 EV_SET(&ke, sock, event_type_kevent_filter(table->type), EV_DELETE, 0, in eloop_sock_table_remove_sock()
458 if (readers && readers->table) { in eloop_sock_table_set_fds()
460 fd = readers->table[i].sock; in eloop_sock_table_set_fds()
470 if (writers && writers->table) { in eloop_sock_table_set_fds()
476 fd = writers->table[i].sock; in eloop_sock_table_set_fds()
496 if (exceptions && exceptions->table) { in eloop_sock_table_set_fds()
502 fd = exceptions->table[i].sock; in eloop_sock_table_set_fds()
520 static int eloop_sock_table_dispatch_table(struct eloop_sock_table *table, in eloop_sock_table_dispatch_table() argument
528 if (!table || !table->table) in eloop_sock_table_dispatch_table()
531 table->changed = 0; in eloop_sock_table_dispatch_table()
532 for (i = 0; i < table->count; i++) { in eloop_sock_table_dispatch_table()
533 pfd = find_pollfd(pollfds_map, table->table[i].sock, in eloop_sock_table_dispatch_table()
541 table->table[i].handler(table->table[i].sock, in eloop_sock_table_dispatch_table()
542 table->table[i].eloop_data, in eloop_sock_table_dispatch_table()
543 table->table[i].user_data); in eloop_sock_table_dispatch_table()
544 if (table->changed) in eloop_sock_table_dispatch_table()
575 static void eloop_sock_table_set_fds(struct eloop_sock_table *table, in eloop_sock_table_set_fds() argument
582 if (table->table == NULL) in eloop_sock_table_set_fds()
585 for (i = 0; i < table->count; i++) { in eloop_sock_table_set_fds()
586 assert(table->table[i].sock >= 0); in eloop_sock_table_set_fds()
587 FD_SET(table->table[i].sock, fds); in eloop_sock_table_set_fds()
592 static void eloop_sock_table_dispatch(struct eloop_sock_table *table, in eloop_sock_table_dispatch() argument
597 if (table == NULL || table->table == NULL) in eloop_sock_table_dispatch()
600 table->changed = 0; in eloop_sock_table_dispatch()
601 for (i = 0; i < table->count; i++) { in eloop_sock_table_dispatch()
602 if (FD_ISSET(table->table[i].sock, fds)) { in eloop_sock_table_dispatch()
603 table->table[i].handler(table->table[i].sock, in eloop_sock_table_dispatch()
604 table->table[i].eloop_data, in eloop_sock_table_dispatch()
605 table->table[i].user_data); in eloop_sock_table_dispatch()
606 if (table->changed) in eloop_sock_table_dispatch()
618 struct eloop_sock *table; in eloop_sock_table_dispatch() local
622 table = &eloop.fd_table[events[i].data.fd]; in eloop_sock_table_dispatch()
623 if (table->handler == NULL) in eloop_sock_table_dispatch()
625 table->handler(table->sock, table->eloop_data, in eloop_sock_table_dispatch()
626 table->user_data); in eloop_sock_table_dispatch()
640 struct eloop_sock *table; in eloop_sock_table_dispatch() local
644 table = &eloop.fd_table[events[i].ident]; in eloop_sock_table_dispatch()
645 if (table->handler == NULL) in eloop_sock_table_dispatch()
647 table->handler(table->sock, table->eloop_data, in eloop_sock_table_dispatch()
648 table->user_data); in eloop_sock_table_dispatch()
657 static int eloop_sock_table_requeue(struct eloop_sock_table *table) in eloop_sock_table_requeue() argument
663 for (i = 0; i < table->count && table->table; i++) { in eloop_sock_table_requeue()
664 if (eloop_sock_queue(table->table[i].sock, table->type) == -1) in eloop_sock_table_requeue()
698 static void eloop_sock_table_destroy(struct eloop_sock_table *table) in eloop_sock_table_destroy() argument
700 if (table) { in eloop_sock_table_destroy()
703 for (i = 0; i < table->count && table->table; i++) { in eloop_sock_table_destroy()
707 table->table[i].sock, in eloop_sock_table_destroy()
708 table->table[i].eloop_data, in eloop_sock_table_destroy()
709 table->table[i].user_data, in eloop_sock_table_destroy()
710 table->table[i].handler); in eloop_sock_table_destroy()
713 table->table[i].handler); in eloop_sock_table_destroy()
714 wpa_trace_dump("eloop sock", &table->table[i]); in eloop_sock_table_destroy()
716 os_free(table->table); in eloop_sock_table_destroy()
754 struct eloop_sock_table *table; in eloop_register_sock() local
757 table = eloop_get_sock_table(type); in eloop_register_sock()
758 return eloop_sock_table_add_sock(table, sock, handler, in eloop_register_sock()
765 struct eloop_sock_table *table; in eloop_unregister_sock() local
767 table = eloop_get_sock_table(type); in eloop_unregister_sock()
768 eloop_sock_table_remove_sock(table, sock); in eloop_unregister_sock()