Home | History | Annotate | Download | only in utils

Lines Matching defs:table

52 	struct eloop_sock *table;
59 int count; /* sum of all table counts */
92 static void eloop_trace_sock_add_ref(struct eloop_sock_table *table)
95 if (table == NULL || table->table == NULL)
97 for (i = 0; i < table->count; i++) {
98 wpa_trace_add_ref(&table->table[i], eloop,
99 table->table[i].eloop_data);
100 wpa_trace_add_ref(&table->table[i], user,
101 table->table[i].user_data);
106 static void eloop_trace_sock_remove_ref(struct eloop_sock_table *table)
109 if (table == NULL || table->table == NULL)
111 for (i = 0; i < table->count; i++) {
112 wpa_trace_remove_ref(&table->table[i], eloop,
113 table->table[i].eloop_data);
114 wpa_trace_remove_ref(&table->table[i], user,
115 table->table[i].user_data);
121 #define eloop_trace_sock_add_ref(table) do { } while (0)
122 #define eloop_trace_sock_remove_ref(table) do { } while (0)
138 static int eloop_sock_table_add_sock(struct eloop_sock_table *table,
150 if (table == NULL)
178 eloop_trace_sock_remove_ref(table);
179 tmp = os_realloc_array(table->table, table->count + 1,
184 tmp[table->count].sock = sock;
185 tmp[table->count].eloop_data = eloop_data;
186 tmp[table->count].user_data = user_data;
187 tmp[table->count].handler = handler;
188 wpa_trace_record(&tmp[table->count]);
189 table->count++;
190 table->table = tmp;
193 table->changed = 1;
194 eloop_trace_sock_add_ref(table);
200 static void eloop_sock_table_remove_sock(struct eloop_sock_table *table,
205 if (table == NULL || table->table == NULL || table->count == 0)
208 for (i = 0; i < table->count; i++) {
209 if (table->table[i].sock == sock)
212 if (i == table->count)
214 eloop_trace_sock_remove_ref(table);
215 if (i != table->count - 1) {
216 os_memmove(&table->table[i], &table->table[i + 1],
217 (table->count - i - 1) *
220 table->count--;
222 table->changed = 1;
223 eloop_trace_sock_add_ref(table);
252 if (readers && readers->table) {
254 fd = readers->table[i].sock;
264 if (writers && writers->table) {
270 fd = writers->table[i].sock;
290 if (exceptions && exceptions->table) {
296 fd = exceptions->table[i].sock;
314 static int eloop_sock_table_dispatch_table(struct eloop_sock_table *table,
322 if (!table || !table->table)
325 table->changed = 0;
326 for (i = 0; i < table->count; i++) {
327 pfd = find_pollfd(pollfds_map, table->table[i].sock,
335 table->table[i].handler(table->table[i].sock,
336 table->table[i].eloop_data,
337 table->table[i].user_data);
338 if (table->changed)
367 static void eloop_sock_table_set_fds(struct eloop_sock_table *table,
374 if (table->table == NULL)
377 for (i = 0; i < table->count; i++)
378 FD_SET(table->table[i].sock, fds);
382 static void eloop_sock_table_dispatch(struct eloop_sock_table *table,
387 if (table == NULL || table->table == NULL)
390 table->changed = 0;
391 for (i = 0; i < table->count; i++) {
392 if (FD_ISSET(table->table[i].sock, fds)) {
393 table->table[i].handler(table->table[i].sock,
394 table->table[i].eloop_data,
395 table->table[i].user_data);
396 if (table->changed)
405 static void eloop_sock_table_destroy(struct eloop_sock_table *table)
407 if (table) {
409 for (i = 0; i < table->count && table->table; i++) {
413 table->table[i].sock,
414 table->table[i].eloop_data,
415 table->table[i].user_data,
416 table->table[i].handler);
419 table->table[i].handler);
420 wpa_trace_dump("eloop sock", &table->table[i]);
422 os_free(table->table);
460 struct eloop_sock_table *table;
462 table = eloop_get_sock_table(type);
463 return eloop_sock_table_add_sock(table, sock, handler,
470 struct eloop_sock_table *table;
472 table = eloop_get_sock_table(type);
473 eloop_sock_table_remove_sock(table, sock);