| 452 | } |
| 453 | |
| 454 | int |
| 455 | sblock(struct sockbuf *sb, int flags) |
| 456 | { |
| 457 | |
| 458 | KASSERT((flags & SBL_VALID) == flags, |
| 459 | ("sblock: flags invalid (0x%x)", flags)); |
| 460 | |
| 461 | if (flags & SBL_WAIT) { |
| 462 | if ((sb->sb_flags & SB_NOINTR) || |
| 463 | (flags & SBL_NOINTR)) { |
| 464 | sx_xlock(&sb->sb_sx); |
| 465 | return (0); |
| 466 | } |
| 467 | return (sx_xlock_sig(&sb->sb_sx)); |
| 468 | } else { |
| 469 | if (sx_try_xlock(&sb->sb_sx) == 0) |
| 470 | return (EWOULDBLOCK); |
| 471 | return (0); |
| 472 | } |
| 473 | } |
| 474 | |
| 475 | void |
| 476 | sbunlock(struct sockbuf *sb) |
no outgoing calls
no test coverage detected