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

📄 mydefine.h

📁 dsp 的内核编程在此呢
💻 H
字号:
#ifndef _MYDEFINE_H
#define _MYDEFINE_H_


// Errror Return Values
#define INVALID_SOCKET -1       // Used by socket() and accept()
#define SOCKET_ERROR   -1       // Used by the rest

#define AF_INET         2               // Internet: UDP, TCP, etc.
#define SOCK_STREAM     1               // stream socket

#define  htons(a)            ( ((a>>8)&0xff) + ((a<<8)&0xff00) )
#define  htonl(a)            ( ((a>>24)&0xff) + ((a>>8)&0xff00) + \
                               ((a<<8)&0xff0000) + ((a<<24)&0xff000000) )
#define  ntohl(a) htonl(a)
#define  ntohs(a) htons(a)

#define  bzero(ptr,sz)       mmZeroInit(ptr,sz)
#define  bcopy(src,dst,sz)   mmCopy(dst,src,sz)

/*-- OS and Sockets Types --*/
typedef int   SOCKET;          // OS Socket Type

/*---selfmake it here---*/
#define INADDR_ANY 2
#define LPSOCKADDR  unsigned long

/*  Select uses bit masks of file descriptors.  These macros manipulate the bit
 fields. FD_SETSIZE may be defined by the user, but the default here should be
  enough for most uses. */ 
typedef Uint32          fd_mask;
#define FD_SETSIZE      32
#define NFDBITS         32

#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] |=  (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] &   (1 << ((n) % NFDBITS)))
#define FD_COPY(f, t)   mmCopy(t, f, sizeof(fd_set))
#define FD_ZERO(p)      mmZeroInit(p, sizeof(fd_set))

// Socket address families
#define AF_TASK         1               // Intertask Communication
#define AF_INET         2               // Internet: UDP, TCP, etc.

// Socket Types
#define SOCK_STREAM     1               // stream socket
#define SOCK_DGRAM      2               // datagram socket
#define SOCK_RAW        3               // raw-protocol interface
#define SOCK_STREAMNC   4               // non-copy stream socket

// Protocols
#define IPPROTO_IP      0               // IP Placeholder
#define IPPROTO_ICMP    1               // ICMP
#define IPPROTO_IGMP    2               // IGMP
#define IPPROTO_TCP     6               // TCP
#define IPPROTO_UDP     17              // UDP

// Option flags per-socket.
#define SO_DEBUG        0x0001          // turn on debugging info recording
#define SO_ACCEPTCONN   0x0002          // socket has had listen()
#define SO_REUSEADDR    0x0004          // allow local address reuse
#define SO_KEEPALIVE    0x0008          // keep connections alive
#define SO_DONTROUTE    0x0010          // just use interface addresses
#define SO_BROADCAST    0x0020          // permit sending of broadcast msgs
#define SO_USELOOPBACK  0x0040          // bypass hardware when possible
#define SO_LINGER       0x0080          // linger on close if data present
#define SO_OOBINLINE    0x0100          // leave received OOB data in line
#define SO_REUSEPORT    0x0200          // allow local address & port reuse
#define SO_TIMESTAMP    0x0400          // timestamp received dgram traffic

// Additional options (not flags)
#define SO_SNDBUF       0x1001          // send buffer size
#define SO_RCVBUF       0x1002          // receive buffer size
#define SO_SNDLOWAT     0x1003          // send low-water mark
#define SO_RCVLOWAT     0x1004          // receive low-water mark
#define SO_SNDTIMEO     0x1005          // send timeout
#define SO_RCVTIMEO     0x1006          // receive timeout
#define SO_ERROR        0x1007          // get error status and clear
#define SO_TYPE         0x1008          // get socket type
#define SO_PRIVSTATE    0x1009          // get/deny privileged state
#define SO_IFDEVICE     0x100a          // broadcast IO device
#define SO_BLOCKING     0x100b          // blocking is default
#define SOL_SOCKET      0xFFFF          // Level used for above options

// Structure used for manipulating linger option.
struct  linger {
    int l_onoff;                // option on/off
    int l_linger;               // linger time
};

// IP Level (IPPROTO_IP) Socket Options
#define IP_OPTIONS      1       // get/set IP Options (20 byte max)
#define IP_HDRINCL      2       // IP Header included with data (raw only)
#define IP_TOS          3       // IP tos & preced.
#define IP_TTL          4       // IP ttl

// TCP Level (IPPROTO_TCP) Socket Options
#define TCP_NODELAY     0x01    // Don't delay send to combine packet data
#define TCP_MAXSEG      0x02    // Adjust MSS (down only)
#define TCP_NOPUSH      0x04    // Don't send just to finish a data block
#define TCP_NOOPT       0x08    // Don't use TCP options

// Read/Write Flags
#define MSG_OOB         0x0001  // Read OOB data (not supported)
#define MSG_PEEK        0x0002  // Get Rx data but leave in queue
#define MSG_WAITALL     0x0004  // Wait for data to fill buffers
#define MSG_DONTWAIT    0x0008  // Don't wait for resources
#define MSG_DONTROUTE   0x0010  // Won't route if not local to subnet

// Structure used by kernel to store most addresses.
struct in_addr {
    Uint32  s_addr;             // 32 bit long IP address, net order
};

typedef Uint32 IPN;

#define sockaddr_in sockaddr

struct sockaddr {
    Uint8   sin_len;            // total length
    Uint8   sin_family;         // address family
    Uint16  sin_port;           // port
    struct  in_addr sin_addr;
    Int8    sin_zero[8];        // fixed length address value
};

typedef struct sockaddr      SA;
typedef struct sockaddr      *PSA;

// Maximum queue length specifiable by listen.
#define SOMAXCONN       8

// Used by Shutdown()
#define SHUT_RD   0     // Read side of connection
#define SHUT_WR   1     // Write side of connection
#define SHUT_RDWR 2     // Both sides of connection


// Used by fdselect()
struct timeval {
    Uint32 tv_sec;
    Uint32 tv_usec;
};




#define ECONNABORTED    53      // Software caused connection abort
#define ECONNRESET      54      // Connection reset by peer
#define ENOBUFS         55      // No buffer space available
#define EISCONN         56      // Socket is already connected
#define ENOTCONN        57      // Socket is not connected
#define ESHUTDOWN       58      // Can't send after socket shutdown








#endif /* mydefine.h */ 



⌨️ 快捷键说明

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