2705 }
2706
2707 int
2708 conn_untrace_ref(conn_t *connp)
2709 {
2710 int last;
2711 conn_trace_t *ctb;
2712
2713 ASSERT(MUTEX_HELD(&connp->conn_lock));
2714 last = connp->conn_trace_last;
2715 last++;
2716 if (last == CONN_TRACE_MAX)
2717 last = 0;
2718
2719 ctb = &connp->conn_trace_buf[last];
2720 ctb->ctb_depth = getpcstack(ctb->ctb_stack, CONN_STACK_DEPTH);
2721 connp->conn_trace_last = last;
2722 return (1);
2723 }
2724 #endif
|
2705 }
2706
2707 int
2708 conn_untrace_ref(conn_t *connp)
2709 {
2710 int last;
2711 conn_trace_t *ctb;
2712
2713 ASSERT(MUTEX_HELD(&connp->conn_lock));
2714 last = connp->conn_trace_last;
2715 last++;
2716 if (last == CONN_TRACE_MAX)
2717 last = 0;
2718
2719 ctb = &connp->conn_trace_buf[last];
2720 ctb->ctb_depth = getpcstack(ctb->ctb_stack, CONN_STACK_DEPTH);
2721 connp->conn_trace_last = last;
2722 return (1);
2723 }
2724 #endif
2725
2726 mblk_t *
2727 conn_get_pid_mblk(conn_t *connp)
2728 {
2729 mblk_t *mblk;
2730 conn_pid_info_t *cpi;
2731
2732 if (connp->conn_upper_handle != NULL) {
2733 return (*connp->conn_upcalls->su_get_sock_pid_mblk)
2734 (connp->conn_upper_handle);
2735 } else if (!IPCL_IS_NONSTR(connp) && connp->conn_rq != NULL &&
2736 connp->conn_rq->q_stream != NULL) {
2737 return (sh_get_pid_mblk(connp->conn_rq->q_stream));
2738 }
2739
2740 /* return an empty mblk */
2741 if ((mblk = allocb(sizeof (conn_pid_info_t), BPRI_HI)) == NULL)
2742 return (NULL);
2743 mblk->b_wptr += sizeof (conn_pid_info_t);
2744 cpi = (conn_pid_info_t *)mblk->b_datap->db_base;
2745 cpi->cpi_magic = CONN_PID_INFO_MGC;
2746 cpi->cpi_contents = CONN_PID_INFO_NON;
2747 cpi->cpi_pids_cnt = 0;
2748 cpi->cpi_tot_size = sizeof (conn_pid_info_t);
2749 cpi->cpi_pids[0] = 0;
2750 return (mblk);
2751 }
|