Lines Matching refs:pcb
901 struct inpcb *pcb;
911 pcb = in_pcblookup_hash(inp->inp_pcbinfo, sin->sin_addr, sin->sin_port,
924 if (pcb != NULL) {
925 in_pcb_checkstate(pcb, WNT_RELEASE, pcb == inp ? 1 : 0);
1225 /* if the address is gone keep the old route in the pcb */
1378 * We may have found the pcb in the last lookup - check this first.
1510 * We may have found the pcb in the last lookup - check this first.
1747 * The pcb list will contain the pcb until the ripper can clean it up if
1750 * This function will be called to either mark the pcb as
1753 in_pcb_checkstate(struct inpcb *pcb, int mode, int locked)
1756 volatile UInt32 *wantcnt = (volatile UInt32 *)&pcb->inp_wantcnt;
1762 case WNT_STOPUSING: /* try to mark the pcb as ready for recycling */
1767 socket_lock(pcb->inp_socket, 1);
1768 pcb->inp_state = INPCB_STATE_DEAD;
1771 if (pcb->inp_socket->so_usecount < 0)
1772 panic("in_pcb_checkstate STOP pcb=%p so=%p usecount is negative\n", pcb, pcb->inp_socket);
1774 socket_unlock(pcb->inp_socket, 1);
1786 case WNT_ACQUIRE: /* try to increase reference to pcb */
1795 // printf("in_pcb_checkstate: ACQ PCB was STOPUSING while release. odd pcb=%p\n", pcb);
1803 case WNT_RELEASE: /* release reference. if result is null and pcb state is DEAD,
1808 socket_lock(pcb->inp_socket, 1);
1813 panic("in_pcb_checkstate pcb=%p release with zero count", pcb);
1816 printf("in_pcb_checkstate: REL PCB was STOPUSING while release. odd pcb=%p\n", pcb);
1819 socket_unlock(pcb->inp_socket, 1);
1825 if (pcb->inp_state == INPCB_STATE_DEAD)
1827 if (pcb->inp_socket->so_usecount < 0)
1828 panic("in_pcb_checkstate RELEASE pcb=%p so=%p usecount is negative\n", pcb, pcb->inp_socket);
1831 socket_unlock(pcb->inp_socket, 1);
1837 panic("in_pcb_checkstate: so=%p not a valid state =%x\n", pcb->inp_socket, mode);