/* sys_socket.c 6.1 83/07/29 */
#include "../h/protosw.h"
#include "../h/socketvar.h"
#include "../net/route.h"
int soo_rw(), soo_ioctl(), soo_select(), soo_close();
struct fileops socketops
=
{ soo_rw
, soo_ioctl
, soo_select
, soo_close
};
int soreceive(), sosend();
(*(rw
==UIO_READ
?soreceive
:sosend
))
((struct socket
*)fp
->f_data
, 0, uio
, 0, 0));
register struct socket
*so
= (struct socket
*)fp
->f_data
;
so
->so_state
&= ~SS_NBIO
;
so
->so_state
|= SS_ASYNC
;
so
->so_state
&= ~SS_ASYNC
;
*(int *)data
= so
->so_rcv
.sb_cc
;
so
->so_pgrp
= *(int *)data
;
*(int *)data
= so
->so_pgrp
;
*(int *)data
= (so
->so_state
&SS_RCVATMARK
) != 0;
* Interface/routing/protocol specific ioctls:
* interface and routing ioctls should have a
* different entry since a socket's unnecessary
#define cmdbyte(x) (((x) >> 8) & 0xff)
return (ifioctl(cmd
, data
));
return (rtioctl(cmd
, data
));
return ((*so
->so_proto
->pr_usrreq
)(so
, PRU_CONTROL
,
(struct mbuf
*)cmd
, (struct mbuf
*)data
, (struct mbuf
*)0));
register struct socket
*so
= (struct socket
*)fp
->f_data
;
register int s
= splnet();
register struct socket
*so
;
register struct stat
*ub
;
bzero((caddr_t
)ub
, sizeof (*ub
));
return ((*so
->so_proto
->pr_usrreq
)(so
, PRU_SENSE
,
(struct mbuf
*)ub
, (struct mbuf
*)0,
error
= soclose((struct socket
*)fp
->f_data
);