xref: /csrg-svn/sys/kern/uipc_pipe.c (revision 23418)
1*23418Smckusick /*
2*23418Smckusick  * Copyright (c) 1982 Regents of the University of California.
3*23418Smckusick  * All rights reserved.  The Berkeley software License Agreement
4*23418Smckusick  * specifies the terms and conditions for redistribution.
5*23418Smckusick  *
6*23418Smckusick  *	@(#)uipc_pipe.c	6.3 (Berkeley) 06/08/85
7*23418Smckusick  */
84904Swnj 
917102Sbloom #include "param.h"
1017102Sbloom #include "mbuf.h"
1117102Sbloom #include "protosw.h"
1217102Sbloom #include "socket.h"
1317102Sbloom #include "socketvar.h"
1417102Sbloom #include "unpcb.h"
154904Swnj 
164904Swnj #define	PIPSIZ	4096
174904Swnj 
184904Swnj /*
198964Sroot  * Sneakily connect a pipe from wso to rso.
208964Sroot  * This will get cleaned up when socketpair is added.
214904Swnj  */
224927Swnj piconnect(wso, rso)
234904Swnj 	struct socket *wso, *rso;
244904Swnj {
254904Swnj 
267180Swnj 	/* when we reserve memory this routine may fail */
278964Sroot 	sotounpcb(wso)->unp_conn = sotounpcb(rso);
288964Sroot 	sotounpcb(rso)->unp_conn = sotounpcb(wso);
294981Swnj 	wso->so_snd.sb_hiwat = PIPSIZ;
304981Swnj 	wso->so_snd.sb_mbmax = 2*PIPSIZ;
314904Swnj 	wso->so_state |= SS_ISCONNECTED|SS_CANTRCVMORE;
324981Swnj 	rso->so_rcv.sb_hiwat = 0;
334981Swnj 	rso->so_rcv.sb_mbmax = 0;
344904Swnj 	rso->so_state |= SS_ISCONNECTED|SS_CANTSENDMORE;
354904Swnj 	return (1);
364904Swnj }
37