diff options
author | emaste <emaste@FreeBSD.org> | 2009-06-30 13:38:49 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2009-06-30 13:38:49 +0000 |
commit | 02a0b3a8398eef5365dd98db3badaafdd0b77480 (patch) | |
tree | 8b55a5b1eeeffcba51735b6a4fdb499a8936add5 /sys/kern/sys_socket.c | |
parent | 9a7ae64d553bf11e4648a25b3c383630165c81f8 (diff) | |
download | FreeBSD-src-02a0b3a8398eef5365dd98db3badaafdd0b77480.zip FreeBSD-src-02a0b3a8398eef5365dd98db3badaafdd0b77480.tar.gz |
Add FIONSPACE from NetBSD. FIONSPACE is provided so that programs may
easily determine how much space is left in the send queue; they do not
need to know the send queue size.
NetBSD revisions:
sys_socket.c r1.41, 1.42
filio.h r1.9
Obtained from: NetBSD
Approved by: re (kensmith)
Diffstat (limited to 'sys/kern/sys_socket.c')
-rw-r--r-- | sys/kern/sys_socket.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index ecfb4ad..c29ecc6 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -174,6 +174,14 @@ soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred, *(int *)data = so->so_snd.sb_cc; break; + case FIONSPACE: + if ((so->so_snd.sb_hiwat < so->so_snd.sb_cc) || + (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) + *(int *)data = 0; + else + *(int *)data = sbspace(&so->so_snd); + break; + case FIOSETOWN: error = fsetown(*(int *)data, &so->so_sigio); break; |