⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
📖 第 1 页 / 共 2 页
字号:

#define	MSG_OOB		0x1	/* process out-of-band data */
#define	MSG_PEEK	0x2	/* peek at incoming message */
#define	MSG_DONTROUTE	0x4	/* send without using routing tables */

#define	MSG_MAXIOVLEN	16

/*
 * This ioctl code uses BSD style ioctl's to avoid copyin/out problems.
 * Ioctl's have the command encoded in the lower word, and the size of any in
 * or out parameters in the upper word.  The high 2 bits of the upper word
 * are used to encode the in/out status of the parameter; for now we restrict
 * parameters to at most 128 bytes.
 */
#define	IOCPARM_MASK	0x7f	/* parameters must be < 128 bytes */
#define	IOC_VOID	0x20000000	/* no parameters */
#define	IOC_OUT		0x40000000	/* copy out parameters */
#define	IOC_IN		0x80000000	/* copy in parameters */
#define	IOC_INOUT	(IOC_IN|IOC_OUT)
/* the 0x20000000 is so we can distinguish new ioctl's from old */
#define	_IOS(x,y)	((x<<8)|y)
#define	_IOSR(x,y,t)	((x<<8)|y)
#define	_IOSW(x,y,t)	((x<<8)|y)
/* this should be _IOSRW, but stdio got there first */
#define	_IOSWR(x,y,t)	((x<<8)|y)
#undef IOC_VOID
#undef IOC_OUT
#undef IOC_IN
#undef IOC_INOUT
#undef IOCPARM_MASK
/*
 * Socket ioctl commands
 * 
 */

#define SIOCSHIWAT	_IOSW('S', 1, long)	/* set high watermark */
#define SIOCGHIWAT	_IOSR('S', 2, long)	/* get high watermark */
#define SIOCSLOWAT	_IOSW('S', 3, long)	/* set low watermark */
#define SIOCGLOWAT	_IOSR('S', 4, long)	/* get low watermark */
#define SIOCATMARK	_IOSR('S', 5, int)	/* at oob mark? */
#define SIOCSPGRP	_IOSW('S', 6, int)	/* set process group */
#define SIOCGPGRP	_IOSR('S', 7, int)	/* get process group */
#define FIONREAD	_IOSR('S', 8, int)	/* BSD compatibilty */
#define FIONBIO		_IOSW('S', 9, int)	/* BSD compatibilty */
#define FIOASYNC	_IOSW('S', 10, int)	/* BSD compatibilty */
#define SIOCPROTO	_IOSW('S', 11, struct socknewproto)	/* link proto */
#define SIOCGETNAME	_IOSR('S', 12, struct sockaddr)	/* getsockname */
#define SIOCGETPEER	_IOSR('S', 13, struct sockaddr)	/* getpeername */
#define IF_UNITSEL	_IOSW('S', 14, int)	/* set unit number */
#define SIOCXPROTO	_IOS('S', 15)	/* empty proto table */
#define FIOWBYTES       _IOSR('S', 16, long)    /* bytes in write stream */

#define	SIOCADDRT	_IOSW('R', 9, struct rtentry)	/* add route */
#define	SIOCDELRT	_IOSW('R', 10, struct rtentry)	/* delete route */

#define	SIOCSIFADDR	_IOSW('I', 11, struct ifreq)	/* set ifnet address */
#define	SIOCGIFADDR	_IOSWR('I', 12, struct ifreq)	/* get ifnet address */
#define	SIOCSIFDSTADDR	_IOSW('I', 13, struct ifreq)	/* set p-p address */
#define	SIOCGIFDSTADDR	_IOSWR('I', 14, struct ifreq)	/* get p-p address */
#define	SIOCSIFFLAGS	_IOSW('I', 15, struct ifreq)	/* set ifnet flags */
#define	SIOCGIFFLAGS	_IOSWR('I', 16, struct ifreq)	/* get ifnet flags */
#define	SIOCGIFCONF	_IOSWR('I', 17, struct ifconf)	/* get ifnet list */

#define	SIOCSIFMTU	_IOSW('I', 21, struct ifreq)	/* get if_mtu */
#define	SIOCGIFMTU	_IOSWR('I', 22, struct ifreq)	/* set if_mtu */

#define SIOCIFDETACH	_IOSW('I', 26, struct ifreq)	/* detach interface */
#define SIOCGENPSTATS	_IOSWR('I', 27, struct ifreq)	/* get ENP stats */

#define SIOCX25XMT	_IOSWR('I', 29, struct ifreq)	/* start a slp proc in
							 * x25if */
#define SIOCX25RCV	_IOSWR('I', 30, struct ifreq)	/* start a slp proc in
							 * x25if */
#define SIOCX25TBL	_IOSWR('I', 31, struct ifreq)	/* xfer lun table to
							 * kernel */

#define	SIOCGIFBRDADDR	_IOSWR('I', 32, struct ifreq)	/* get broadcast addr */
#define	SIOCSIFBRDADDR	_IOSW('I', 33, struct ifreq)	/* set broadcast addr */
#define	SIOCGIFNETMASK	_IOSWR('I', 34, struct ifreq)	/* get net addr mask */
#define	SIOCSIFNETMASK	_IOSW('I', 35, struct ifreq)	/* set net addr mask */
#define	SIOCGIFMETRIC	_IOSWR('I', 36, struct ifreq)	/* get IF metric */
#define	SIOCSIFMETRIC	_IOSW('I', 37, struct ifreq)	/* set IF metric */

#define	SIOCSARP	_IOSW('I', 38, struct arpreq)	/* set arp entry */
#define	SIOCGARP	_IOSWR('I', 39, struct arpreq)	/* get arp entry */
#define	SIOCDARP	_IOSW('I', 40, struct arpreq)	/* delete arp entry */

#define SIOCSIFNAME	_IOSW('I', 41, struct ifreq)	/* set interface name */
#define	SIOCGIFONEP	_IOSWR('I', 42, struct ifreq)	/* get one-packet params */
#define	SIOCSIFONEP	_IOSW('I', 43, struct ifreq)	/* set one-packet params */
#define	SIOCGIFMUXID	_IOSWR('I', 44, struct ifreq)	/* get muxid */

#ifdef SNX
#define STIOCGADDR   	_IOSR('I', 50, struct strioctl) /* get IP address and 
							 * port */
#endif

#define SIOCGENADDR	_IOSWR('I', 65, struct ifreq)	/* Get ethernet addr */

#define SIOCSOCKSYS	_IOSW('I', 66, struct socksysreq)	/* Pseudo socket syscall */

#define SIOCARPREQ	_IOSWR('I', 67, struct arp_req) /* Send an ARP request */
/*
 * This structure is used to encode pseudo system calls
 */
struct socksysreq {
	int             args[7];
};

/*
 * This structure is used for adding new protocols to the list supported by
 * sockets.
 */

struct socknewproto {
	int             family;	/* address family (AF_INET, etc.) */
	int             type;	/* protocol type (SOCK_STREAM, etc.) */
	int             proto;	/* per family proto number */
	dev_t           dev;	/* major/minor to use (must be a clone) */
	int             flags;	/* protosw flags */
};

/*
 * utility definitions.
 */

#ifdef MIN
#undef MIN
#endif
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#ifndef MAX
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#endif

#define MAXHOSTNAMELEN  64

#define	NBBY	8		/* number of bits in a byte */
/*
 * Select uses bit masks of file descriptors in longs. These macros
 * manipulate such bit fields (the filesystem macros use chars). FD_SETSIZE
 * may be defined by the user, but the default here should be >= swk_nfile
 */
#ifndef FD_SETSIZE
#define FD_SETSIZE	256
typedef long    fd_mask;
#define NFDBITS	(sizeof(fd_mask) * NBBY)	/* bits per mask */
#ifndef howmany
#define	howmany(x, y)	(((x)+((y)-1))/(y))
#endif

typedef struct fd_set {
	fd_mask         fds_bits[howmany(FD_SETSIZE, NFDBITS)];
}               fd_set;

#define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
#define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
#define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
#define FD_ZERO(p)	memset((char *)(p), '\0', sizeof(*(p)))

#endif /* FD_SETSIZE */

/* defines for user/kernel interface */

#if (INTEL == 32)
#define SOCKETSYS	128	/* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#elif (ATT == 32)
#define SOCKETSYS	88	/* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#elif (INTEL == 31) || (ATT == 31)
#define SOCKETSYS	88	/* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#else
#define SOCKETSYS	83	/* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#endif

#define  SO_ACCEPT	1
#define  SO_BIND	2
#define  SO_CONNECT	3
#define  SO_GETPEERNAME	4
#define  SO_GETSOCKNAME	5
#define  SO_GETSOCKOPT	6
#define  SO_LISTEN	7
#define  SO_RECV	8
#define  SO_RECVFROM	9
#define  SO_SEND	10
#define  SO_SENDTO	11
#define  SO_SETSOCKOPT	12
#define  SO_SHUTDOWN	13
#define  SO_SOCKET	14
#define  SO_SELECT	15
#define  SO_GETIPDOMAIN	16
#define  SO_SETIPDOMAIN	17
#define  SO_ADJTIME	18
#define  SO_SETREUID	19
#define  SO_SETREGID	20
#define  SO_GETTIME	21
#define  SO_SETTIME	22
#define  SO_GETITIMER	23
#define  SO_SETITIMER	24

#if __STDC__
extern int accept(int, struct sockaddr *, int *);
extern int bind(int, struct sockaddr *, int);
extern int connect(int, struct sockaddr *, int);
extern int getpeername(int, struct sockaddr *, int *);
extern int getsockname(int, struct sockaddr *, int *);
extern int getsockopt(int, int, int, char *, int *);
extern int listen(int, int);
extern int recv(int, char *, int, int);
extern int recvfrom(int, char *, int, int, struct sockaddr *, int *);
extern int send(int, char *, int, int);
extern int sendto(int, char *, int, int, struct sockaddr *, int);
extern int setsockopt(int, int, int, char *, int);
extern int socket(int, int, int);
extern int recvmsg(int, struct msghdr *, int);
extern int sendmsg(int, struct msghdr *, int);
extern int shutdown(int, int);
#else   /* __STDC__ */
extern int accept();
extern int bind();
extern int connect();
extern int getpeername();
extern int getsockname();
extern int getsockopt();
extern int listen();
extern int recv();
extern int recvfrom();
extern int send();
extern int sendto();
extern int setsockopt();
extern int socket();
extern int recvmsg();
extern int sendmsg();
extern int shutdown();
#endif  /* __STDC__ */

#ifdef  __cplusplus
}
#endif

#endif				/* socket_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -