• Home
  • Raw
  • Download

Lines Matching refs:s

31 static void local_socket_close_locked(asocket *s);
64 asocket *s; in find_local_socket() local
68 for (s = local_socket_list.next; s != &local_socket_list; s = s->next) { in find_local_socket()
69 if (s->id == id) { in find_local_socket()
70 result = s; in find_local_socket()
80 insert_local_socket(asocket* s, asocket* list) in insert_local_socket() argument
82 s->next = list; in insert_local_socket()
83 s->prev = s->next->prev; in insert_local_socket()
84 s->prev->next = s; in insert_local_socket()
85 s->next->prev = s; in insert_local_socket()
89 void install_local_socket(asocket *s) in install_local_socket() argument
93 s->id = local_socket_next_id++; in install_local_socket()
94 insert_local_socket(s, &local_socket_list); in install_local_socket()
99 void remove_socket(asocket *s) in remove_socket() argument
102 if (s->prev && s->next) in remove_socket()
104 s->prev->next = s->next; in remove_socket()
105 s->next->prev = s->prev; in remove_socket()
106 s->next = 0; in remove_socket()
107 s->prev = 0; in remove_socket()
108 s->id = 0; in remove_socket()
114 asocket *s; in close_all_sockets() local
121 for(s = local_socket_list.next; s != &local_socket_list; s = s->next){ in close_all_sockets()
122 if(s->transport == t || (s->peer && s->peer->transport == t)) { in close_all_sockets()
123 local_socket_close_locked(s); in close_all_sockets()
130 static int local_socket_enqueue(asocket *s, apacket *p) in local_socket_enqueue() argument
132 D("LS(%d): enqueue %d\n", s->id, p->len); in local_socket_enqueue()
140 if(s->pkt_first) { in local_socket_enqueue()
148 int r = adb_write(s->fd, p->ptr, p->len); in local_socket_enqueue()
155 D( "LS(%d): not ready, errno=%d: %s\n", s->id, errno, strerror(errno) ); in local_socket_enqueue()
156 s->close(s); in local_socket_enqueue()
170 if(s->pkt_first) { in local_socket_enqueue()
171 s->pkt_last->next = p; in local_socket_enqueue()
173 s->pkt_first = p; in local_socket_enqueue()
175 s->pkt_last = p; in local_socket_enqueue()
178 fdevent_add(&s->fde, FDE_WRITE); in local_socket_enqueue()
183 static void local_socket_ready(asocket *s) in local_socket_ready() argument
187 fdevent_add(&s->fde, FDE_READ); in local_socket_ready()
191 static void local_socket_close(asocket *s) in local_socket_close() argument
194 local_socket_close_locked(s); in local_socket_close()
199 static void local_socket_destroy(asocket *s) in local_socket_destroy() argument
202 int exit_on_close = s->exit_on_close; in local_socket_destroy()
204 D("LS(%d): destroying fde.fd=%d\n", s->id, s->fde.fd); in local_socket_destroy()
209 fdevent_remove(&s->fde); in local_socket_destroy()
212 for(p = s->pkt_first; p; p = n) { in local_socket_destroy()
213 D("LS(%d): discarding %d bytes\n", s->id, p->len); in local_socket_destroy()
217 remove_socket(s); in local_socket_destroy()
218 free(s); in local_socket_destroy()
227 static void local_socket_close_locked(asocket *s) in local_socket_close_locked() argument
229 D("entered. LS(%d) fd=%d\n", s->id, s->fd); in local_socket_close_locked()
230 if(s->peer) { in local_socket_close_locked()
232 s->id, s->peer->id, s->peer->fd); in local_socket_close_locked()
233 s->peer->peer = 0; in local_socket_close_locked()
235 if (s->peer->close == local_socket_close) { in local_socket_close_locked()
236 local_socket_close_locked(s->peer); in local_socket_close_locked()
238 s->peer->close(s->peer); in local_socket_close_locked()
240 s->peer = 0; in local_socket_close_locked()
246 if (s->closing || s->pkt_first == NULL) { in local_socket_close_locked()
247 int id = s->id; in local_socket_close_locked()
248 local_socket_destroy(s); in local_socket_close_locked()
255 D("LS(%d): closing\n", s->id); in local_socket_close_locked()
256 s->closing = 1; in local_socket_close_locked()
257 fdevent_del(&s->fde, FDE_READ); in local_socket_close_locked()
258 remove_socket(s); in local_socket_close_locked()
259 D("LS(%d): put on socket_closing_list fd=%d\n", s->id, s->fd); in local_socket_close_locked()
260 insert_local_socket(s, &local_socket_closing_list); in local_socket_close_locked()
265 asocket *s = _s; in local_socket_event_func() local
267 D("LS(%d): event_func(fd=%d(==%d), ev=%04x)\n", s->id, s->fd, fd, ev); in local_socket_event_func()
275 while((p = s->pkt_first) != 0) { in local_socket_event_func()
291 s->close(s); in local_socket_event_func()
296 s->pkt_first = p->next; in local_socket_event_func()
297 if(s->pkt_first == 0) s->pkt_last = 0; in local_socket_event_func()
305 if (s->closing) { in local_socket_event_func()
307 s->close(s); in local_socket_event_func()
315 fdevent_del(&s->fde, FDE_WRITE); in local_socket_event_func()
316 s->peer->ready(s->peer); in local_socket_event_func()
329 …D("LS(%d): post adb_read(fd=%d,...) r=%d (errno=%d) avail=%d\n", s->id, s->fd, r, r<0?errno:0, ava… in local_socket_event_func()
345 s->id, s->fd, r, is_eof, s->fde.force_eof); in local_socket_event_func()
346 if((avail == MAX_PAYLOAD) || (s->peer == 0)) { in local_socket_event_func()
351 r = s->peer->enqueue(s->peer, p); in local_socket_event_func()
352 D("LS(%d): fd=%d post peer->enqueue(). r=%d\n", s->id, s->fd, r); in local_socket_event_func()
371 fdevent_del(&s->fde, FDE_READ); in local_socket_event_func()
375 if((s->fde.force_eof && !r) || is_eof) { in local_socket_event_func()
376 D(" closing because is_eof=%d r=%d s->fde.force_eof=%d\n", is_eof, r, s->fde.force_eof); in local_socket_event_func()
377 s->close(s); in local_socket_event_func()
387 D("LS(%d): FDE_ERROR (fd=%d)\n", s->id, s->fd); in local_socket_event_func()
395 asocket *s = calloc(1, sizeof(asocket)); in create_local_socket() local
396 if (s == NULL) fatal("cannot allocate socket"); in create_local_socket()
397 s->fd = fd; in create_local_socket()
398 s->enqueue = local_socket_enqueue; in create_local_socket()
399 s->ready = local_socket_ready; in create_local_socket()
400 s->close = local_socket_close; in create_local_socket()
401 install_local_socket(s); in create_local_socket()
403 fdevent_install(&s->fde, fd, local_socket_event_func, s); in create_local_socket()
406 D("LS(%d): created (fd=%d)\n", s->id, s->fd); in create_local_socket()
407 return s; in create_local_socket()
412 asocket *s; in create_local_service_socket() local
426 s = create_local_socket(fd); in create_local_service_socket()
427 D("LS(%d): bound to '%s' via %d\n", s->id, name, fd); in create_local_service_socket()
433 D("LS(%d): enabling exit_on_close\n", s->id); in create_local_service_socket()
434 s->exit_on_close = 1; in create_local_service_socket()
438 return s; in create_local_service_socket()
444 asocket *s; in create_host_service_socket() local
446 s = host_service_to_socket(name, serial); in create_host_service_socket()
448 if (s != NULL) { in create_host_service_socket()
449 D("LS(%d) bound to '%s'\n", s->id, name); in create_host_service_socket()
450 return s; in create_host_service_socket()
453 return s; in create_host_service_socket()
465 static int remote_socket_enqueue(asocket *s, apacket *p) in remote_socket_enqueue() argument
468 s->id, s->fd, s->peer->fd); in remote_socket_enqueue()
470 p->msg.arg0 = s->peer->id; in remote_socket_enqueue()
471 p->msg.arg1 = s->id; in remote_socket_enqueue()
473 send_packet(p, s->transport); in remote_socket_enqueue()
477 static void remote_socket_ready(asocket *s) in remote_socket_ready() argument
480 s->id, s->fd, s->peer->fd); in remote_socket_ready()
483 p->msg.arg0 = s->peer->id; in remote_socket_ready()
484 p->msg.arg1 = s->id; in remote_socket_ready()
485 send_packet(p, s->transport); in remote_socket_ready()
488 static void remote_socket_close(asocket *s) in remote_socket_close() argument
491 s->id, s->fd, s->peer?s->peer->fd:-1); in remote_socket_close()
494 if(s->peer) { in remote_socket_close()
495 p->msg.arg0 = s->peer->id; in remote_socket_close()
496 s->peer->peer = 0; in remote_socket_close()
498 s->id, s->peer->id, s->peer->fd); in remote_socket_close()
499 s->peer->close(s->peer); in remote_socket_close()
501 p->msg.arg1 = s->id; in remote_socket_close()
502 send_packet(p, s->transport); in remote_socket_close()
503 D("RS(%d): closed\n", s->id); in remote_socket_close()
504 remove_transport_disconnect( s->transport, &((aremotesocket*)s)->disconnect ); in remote_socket_close()
505 free(s); in remote_socket_close()
510 asocket* s = _s; in remote_socket_disconnect() local
511 asocket* peer = s->peer; in remote_socket_disconnect()
513 D("remote_socket_disconnect RS(%d)\n", s->id); in remote_socket_disconnect()
518 remove_transport_disconnect( s->transport, &((aremotesocket*)s)->disconnect ); in remote_socket_disconnect()
519 free(s); in remote_socket_disconnect()
524 asocket *s = calloc(1, sizeof(aremotesocket)); in create_remote_socket() local
525 adisconnect* dis = &((aremotesocket*)s)->disconnect; in create_remote_socket()
527 if (s == NULL) fatal("cannot allocate socket"); in create_remote_socket()
528 s->id = id; in create_remote_socket()
529 s->enqueue = remote_socket_enqueue; in create_remote_socket()
530 s->ready = remote_socket_ready; in create_remote_socket()
531 s->close = remote_socket_close; in create_remote_socket()
532 s->transport = t; in create_remote_socket()
535 dis->opaque = s; in create_remote_socket()
537 D("RS(%d): created\n", s->id); in create_remote_socket()
538 return s; in create_remote_socket()
541 void connect_to_remote(asocket *s, const char *destination) in connect_to_remote() argument
543 D("Connect_to_remote call RS(%d) fd=%d\n", s->id, s->fd); in connect_to_remote()
551 D("LS(%d): connect('%s')\n", s->id, destination); in connect_to_remote()
553 p->msg.arg0 = s->id; in connect_to_remote()
556 send_packet(p, s->transport); in connect_to_remote()
562 static void local_socket_ready_notify(asocket *s) in local_socket_ready_notify() argument
564 s->ready = local_socket_ready; in local_socket_ready_notify()
565 s->close = local_socket_close; in local_socket_ready_notify()
566 adb_write(s->fd, "OKAY", 4); in local_socket_ready_notify()
567 s->ready(s); in local_socket_ready_notify()
573 static void local_socket_close_notify(asocket *s) in local_socket_close_notify() argument
575 s->ready = local_socket_ready; in local_socket_close_notify()
576 s->close = local_socket_close; in local_socket_close_notify()
577 sendfailmsg(s->fd, "closed"); in local_socket_close_notify()
578 s->close(s); in local_socket_close_notify()
581 unsigned unhex(unsigned char *s, int len) in unhex() argument
586 switch((c = *s++)) { in unhex()
655 static int smart_socket_enqueue(asocket *s, apacket *p) in smart_socket_enqueue() argument
664 D("SS(%d): enqueue %d\n", s->id, p->len); in smart_socket_enqueue()
666 if(s->pkt_first == 0) { in smart_socket_enqueue()
667 s->pkt_first = p; in smart_socket_enqueue()
668 s->pkt_last = p; in smart_socket_enqueue()
670 if((s->pkt_first->len + p->len) > MAX_PAYLOAD) { in smart_socket_enqueue()
671 D("SS(%d): overflow\n", s->id); in smart_socket_enqueue()
676 memcpy(s->pkt_first->data + s->pkt_first->len, in smart_socket_enqueue()
678 s->pkt_first->len += p->len; in smart_socket_enqueue()
681 p = s->pkt_first; in smart_socket_enqueue()
689 D("SS(%d): bad size (%d)\n", s->id, len); in smart_socket_enqueue()
693 D("SS(%d): len is %d\n", s->id, len ); in smart_socket_enqueue()
696 D("SS(%d): waiting for %d more bytes\n", s->id, len+4 - p->len); in smart_socket_enqueue()
702 D("SS(%d): '%s'\n", s->id, (char*) (p->data + 4)); in smart_socket_enqueue()
738 if(handle_host_request(service, ttype, serial, s->peer->fd, s) == 0) { in smart_socket_enqueue()
740 D( "SS(%d): handled host service '%s'\n", s->id, service ); in smart_socket_enqueue()
744 D( "SS(%d): okay transport\n", s->id ); in smart_socket_enqueue()
755 D( "SS(%d): couldn't create host service '%s'\n", s->id, service ); in smart_socket_enqueue()
756 sendfailmsg(s->peer->fd, "unknown host service"); in smart_socket_enqueue()
767 adb_write(s->peer->fd, "OKAY", 4); in smart_socket_enqueue()
769 s->peer->ready = local_socket_ready; in smart_socket_enqueue()
770 s->peer->close = local_socket_close; in smart_socket_enqueue()
771 s->peer->peer = s2; in smart_socket_enqueue()
772 s2->peer = s->peer; in smart_socket_enqueue()
773 s->peer = 0; in smart_socket_enqueue()
774 D( "SS(%d): okay\n", s->id ); in smart_socket_enqueue()
775 s->close(s); in smart_socket_enqueue()
782 if (s->transport == NULL) { in smart_socket_enqueue()
784 s->transport = acquire_one_transport (CS_ANY, in smart_socket_enqueue()
787 if (s->transport == NULL) { in smart_socket_enqueue()
788 sendfailmsg(s->peer->fd, error_string); in smart_socket_enqueue()
794 if(!(s->transport) || (s->transport->connection_state == CS_OFFLINE)) { in smart_socket_enqueue()
798 sendfailmsg(s->peer->fd, "device offline (x)"); in smart_socket_enqueue()
808 s->peer->ready = local_socket_ready_notify; in smart_socket_enqueue()
809 s->peer->close = local_socket_close_notify; in smart_socket_enqueue()
810 s->peer->peer = 0; in smart_socket_enqueue()
812 s->peer->transport = s->transport; in smart_socket_enqueue()
814 connect_to_remote(s->peer, (char*) (p->data + 4)); in smart_socket_enqueue()
815 s->peer = 0; in smart_socket_enqueue()
816 s->close(s); in smart_socket_enqueue()
824 s->close(s); in smart_socket_enqueue()
828 static void smart_socket_ready(asocket *s) in smart_socket_ready() argument
830 D("SS(%d): ready\n", s->id); in smart_socket_ready()
833 static void smart_socket_close(asocket *s) in smart_socket_close() argument
835 D("SS(%d): closed\n", s->id); in smart_socket_close()
836 if(s->pkt_first){ in smart_socket_close()
837 put_apacket(s->pkt_first); in smart_socket_close()
839 if(s->peer) { in smart_socket_close()
840 s->peer->peer = 0; in smart_socket_close()
841 s->peer->close(s->peer); in smart_socket_close()
842 s->peer = 0; in smart_socket_close()
844 free(s); in smart_socket_close()
847 asocket *create_smart_socket(void (*action_cb)(asocket *s, const char *act)) in create_smart_socket() argument
850 asocket *s = calloc(1, sizeof(asocket)); in create_smart_socket() local
851 if (s == NULL) fatal("cannot allocate socket"); in create_smart_socket()
852 s->enqueue = smart_socket_enqueue; in create_smart_socket()
853 s->ready = smart_socket_ready; in create_smart_socket()
854 s->close = smart_socket_close; in create_smart_socket()
855 s->extra = action_cb; in create_smart_socket()
857 D("SS(%d): created %p\n", s->id, action_cb); in create_smart_socket()
858 return s; in create_smart_socket()
861 void smart_socket_action(asocket *s, const char *act) in smart_socket_action() argument
866 void connect_to_smartsocket(asocket *s) in connect_to_smartsocket() argument
870 s->peer = ss; in connect_to_smartsocket()
871 ss->peer = s; in connect_to_smartsocket()
872 s->ready(s); in connect_to_smartsocket()