* Register per-socket buffer upcalls. */
| 4111 | * Register per-socket buffer upcalls. |
| 4112 | */ |
| 4113 | void |
| 4114 | soupcall_set(struct socket *so, int which, so_upcall_t func, void *arg) |
| 4115 | { |
| 4116 | struct sockbuf *sb; |
| 4117 | |
| 4118 | KASSERT(!SOLISTENING(so), ("%s: so %p listening", __func__, so)); |
| 4119 | |
| 4120 | switch (which) { |
| 4121 | case SO_RCV: |
| 4122 | sb = &so->so_rcv; |
| 4123 | break; |
| 4124 | case SO_SND: |
| 4125 | sb = &so->so_snd; |
| 4126 | break; |
| 4127 | default: |
| 4128 | panic("soupcall_set: bad which"); |
| 4129 | } |
| 4130 | SOCKBUF_LOCK_ASSERT(sb); |
| 4131 | sb->sb_upcall = func; |
| 4132 | sb->sb_upcallarg = arg; |
| 4133 | sb->sb_flags |= SB_UPCALL; |
| 4134 | } |
| 4135 | |
| 4136 | void |
| 4137 | soupcall_clear(struct socket *so, int which) |
no test coverage detected