MCPcopy Create free account
hub / github.com/apache/nuttx / rpmsg_socket_ns_bind

Function rpmsg_socket_ns_bind

net/rpmsg/rpmsg_sockif.c:566–627  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

564}
565
566static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
567 FAR void *priv, FAR const char *name,
568 uint32_t dest)
569{
570 FAR struct rpmsg_socket_conn_s *server = priv;
571 FAR struct rpmsg_socket_conn_s *tmp;
572 FAR struct rpmsg_socket_conn_s *new;
573 int cnt = 0;
574 int ret;
575
576 new = rpmsg_socket_alloc();
577 if (!new)
578 {
579 return;
580 }
581
582 ret = circbuf_resize(&new->recvbuf, server->recvsize);
583 if (ret < 0)
584 {
585 rpmsg_socket_free(new);
586 return;
587 }
588
589 new->ept.priv = new;
590 new->ept.release_cb = rpmsg_socket_ept_release;
591 ret = rpmsg_create_ept(&new->ept, rdev, name,
592 RPMSG_ADDR_ANY, dest,
593 rpmsg_socket_ept_cb, rpmsg_socket_ns_unbind);
594 if (ret < 0)
595 {
596 rpmsg_socket_free(new);
597 return;
598 }
599
600 new->rpaddr.rp_family = AF_RPMSG;
601 strlcpy(new->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev),
602 sizeof(new->rpaddr.rp_cpu));
603 strlcpy(new->rpaddr.rp_name, name + RPMSG_SOCKET_NAME_PREFIX_LEN,
604 sizeof(new->rpaddr.rp_name));
605
606 rpmsg_socket_ns_bound(&new->ept);
607
608 nxmutex_lock(&server->recvlock);
609 for (tmp = server; tmp->next; tmp = tmp->next)
610 {
611 if (++cnt >= server->backlog)
612 {
613 /* Reject the connection */
614
615 nxmutex_unlock(&server->recvlock);
616 rpmsg_destroy_ept(&new->ept);
617 rpmsg_socket_free(new);
618 return;
619 }
620 }
621
622 tmp->next = new;
623

Callers

nothing calls this directly

Calls 10

rpmsg_socket_allocFunction · 0.85
circbuf_resizeFunction · 0.85
rpmsg_socket_freeFunction · 0.85
rpmsg_get_cpunameFunction · 0.85
rpmsg_socket_ns_boundFunction · 0.85
nxmutex_lockFunction · 0.85
nxmutex_unlockFunction · 0.85
rpmsg_socket_postFunction · 0.85
rpmsg_socket_poll_notifyFunction · 0.85
strlcpyFunction · 0.50

Tested by

no test coverage detected