home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / comm / tcp / amitcp / src / l / inet-handler / inl_socket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-05  |  8.9 KB  |  303 lines

  1. #ifndef _INL_SOCKET_H_
  2. #define _INL_SOCKET_H_
  3.  
  4. #include <sys/cdefs.h>
  5.  
  6. __BEGIN_DECLS
  7.  
  8. #ifndef BASE_EXT_DECL
  9. #define BASE_EXT_DECL extern struct Library * SocketBase;
  10. #endif
  11. #ifndef BASE_PAR_DECL
  12. #define BASE_PAR_DECL
  13. #define BASE_PAR_DECL0 void
  14. #endif
  15. #ifndef BASE_NAME
  16. #define BASE_NAME SocketBase
  17. #endif
  18.  
  19.  
  20. static __inline LONG 
  21. CloseSocket (BASE_PAR_DECL LONG d)
  22. {
  23.   BASE_EXT_DECL
  24.   register LONG  _res  __asm("d0");
  25.   register struct Library * a6 __asm("a6") = BASE_NAME;
  26.   register LONG d0 __asm("d0") = d;
  27.   __asm __volatile ("jsr a6@(-0x78)"
  28.   : "=r" (_res)
  29.   : "r" (a6), "r" (d0)
  30.   : "a0","a1","d0","d1", "memory");
  31.   return _res;
  32. }
  33. static __inline LONG 
  34. Dup2Socket (BASE_PAR_DECL LONG fd1,LONG  fd2)
  35. {
  36.   BASE_EXT_DECL
  37.   register LONG  _res  __asm("d0");
  38.   register struct Library * a6 __asm("a6") = BASE_NAME;
  39.   register LONG d0 __asm("d0") = fd1;
  40.   register LONG d1 __asm("d1") =  fd2;
  41.   __asm __volatile ("jsr a6@(-0x108)"
  42.   : "=r" (_res)
  43.   : "r" (a6), "r" (d0), "r" (d1)
  44.   : "a0","a1","d0","d1", "memory");
  45.   return _res;
  46. }
  47. static __inline LONG 
  48. Errno (BASE_PAR_DECL0)
  49. {
  50.   BASE_EXT_DECL
  51.   register LONG  _res  __asm("d0");
  52.   register struct Library * a6 __asm("a6") = BASE_NAME;
  53.   __asm __volatile ("jsr a6@(-0xa2)"
  54.   : "=r" (_res)
  55.   : "r" (a6)
  56.   : "a0","a1","d0","d1", "memory");
  57.   return _res;
  58. }
  59. static __inline LONG 
  60. IoctlSocket (BASE_PAR_DECL LONG d,ULONG  request,char * argp)
  61. {
  62.   BASE_EXT_DECL
  63.   register LONG  _res  __asm("d0");
  64.   register struct Library * a6 __asm("a6") = BASE_NAME;
  65.   register LONG d0 __asm("d0") = d;
  66.   register ULONG d1 __asm("d1") =  request;
  67.   register char *a0 __asm("a0") =  argp;
  68.   __asm __volatile ("jsr a6@(-0x72)"
  69.   : "=r" (_res)
  70.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  71.   : "a0","a1","d0","d1", "memory");
  72.   return _res;
  73. }
  74. static __inline LONG 
  75. ObtainSocket (BASE_PAR_DECL LONG id,LONG  domain,LONG  type,LONG  protocol)
  76. {
  77.   BASE_EXT_DECL
  78.   register LONG  _res  __asm("d0");
  79.   register struct Library * a6 __asm("a6") = BASE_NAME;
  80.   register LONG d0 __asm("d0") = id;
  81.   register LONG d1 __asm("d1") =  domain;
  82.   register LONG d2 __asm("d2") =  type;
  83.   register LONG d3 __asm("d3") =  protocol;
  84.   __asm __volatile ("jsr a6@(-0x90)"
  85.   : "=r" (_res)
  86.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  87.   : "a0","a1","d0","d1","d2","d3", "memory");
  88.   return _res;
  89. }
  90. static __inline LONG 
  91. SocketBaseTagList (BASE_PAR_DECL struct TagItem *taglist)
  92. {
  93.   BASE_EXT_DECL
  94.   register LONG  _res  __asm("d0");
  95.   register struct Library * a6 __asm("a6") = SocketBase;
  96.   register struct TagItem *a0 __asm("a0") = taglist;
  97.   __asm __volatile ("jsr a6@(-0x126)"
  98.   : "=r" (_res)
  99.   : "r" (a6), "r" (a0)
  100.   : "a0","a1","d0","d1", "memory");
  101.   return _res;
  102. }
  103.  
  104. #ifndef NO_INLINE_STDARG
  105. #define SocketBaseTags(tags...) \
  106.     ({ struct TagItem _tags[] = { tags }; SocketBaseTagList(_tags); })
  107. #endif
  108.  
  109. static __inline void 
  110. Syslog (BASE_PAR_DECL ULONG level,const STRPTR  format,LONG *  ap)
  111. {
  112.   BASE_EXT_DECL
  113.   register struct Library * a6 __asm("a6") = BASE_NAME;
  114.   register ULONG d0 __asm("d0") = level;
  115.   register const STRPTR a0 __asm("a0") =  format;
  116.   register LONG * a1 __asm("a1") =  ap;
  117.   __asm __volatile ("jsr a6@(-0x102)"
  118.   : /* no output */
  119.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  120.   : "a0","a1","d0","d1", "memory");
  121. }
  122. #ifndef NO_INLINE_STDARG
  123. #define syslog(d0, a0, args...) \
  124.   ({ LONG _args[] = { args }; Syslog ((d0), (a0), (LONG *)_args); })
  125. #endif /* not NO_INLINE_STDARG */
  126.  
  127. static __inline LONG 
  128. WaitSelect (BASE_PAR_DECL LONG nfds,fd_set * readfds,fd_set * writefds,fd_set * execptfds,struct timeval * timeout,ULONG * maskp)
  129. {
  130.   BASE_EXT_DECL
  131.   register LONG  _res  __asm("d0");
  132.   register struct Library * a6 __asm("a6") = BASE_NAME;
  133.   register LONG d0 __asm("d0") = nfds;
  134.   register fd_set *a0 __asm("a0") =  readfds;
  135.   register fd_set *a1 __asm("a1") =  writefds;
  136.   register fd_set *a2 __asm("a2") =  execptfds;
  137.   register struct timeval *a3 __asm("a3") =  timeout;
  138.   register ULONG *d1 __asm("d1") =  maskp;
  139.   __asm __volatile ("jsr a6@(-0x7e)"
  140.   : "=r" (_res)
  141.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d1)
  142.   : "a0","a1","a2","a3","d0","d1", "memory");
  143.   return _res;
  144. }
  145. static __inline LONG 
  146. accept (BASE_PAR_DECL LONG s,struct sockaddr * addr,LONG * addrlen)
  147. {
  148.   BASE_EXT_DECL
  149.   register LONG  _res  __asm("d0");
  150.   register struct Library * a6 __asm("a6") = BASE_NAME;
  151.   register LONG d0 __asm("d0") = s;
  152.   register struct sockaddr *a0 __asm("a0") =  addr;
  153.   register LONG *a1 __asm("a1") =  addrlen;
  154.   __asm __volatile ("jsr a6@(-0x30)"
  155.   : "=r" (_res)
  156.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  157.   : "a0","a1","d0","d1", "memory");
  158.   return _res;
  159. }
  160. static __inline LONG 
  161. bind (BASE_PAR_DECL LONG s,const struct sockaddr * name,LONG  namelen)
  162. {
  163.   BASE_EXT_DECL
  164.   register LONG  _res  __asm("d0");
  165.   register struct Library * a6 __asm("a6") = BASE_NAME;
  166.   register LONG d0 __asm("d0") = s;
  167.   register const struct sockaddr *a0 __asm("a0") =  name;
  168.   register LONG d1 __asm("d1") =  namelen;
  169.   __asm __volatile ("jsr a6@(-0x24)"
  170.   : "=r" (_res)
  171.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  172.   : "a0","a1","d0","d1", "memory");
  173.   return _res;
  174. }
  175. static __inline LONG 
  176. connect (BASE_PAR_DECL LONG s,const struct sockaddr * name,LONG  namelen)
  177. {
  178.   BASE_EXT_DECL
  179.   register LONG  _res  __asm("d0");
  180.   register struct Library * a6 __asm("a6") = BASE_NAME;
  181.   register LONG d0 __asm("d0") = s;
  182.   register const struct sockaddr *a0 __asm("a0") =  name;
  183.   register LONG d1 __asm("d1") =  namelen;
  184.   __asm __volatile ("jsr a6@(-0x36)"
  185.   : "=r" (_res)
  186.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  187.   : "a0","a1","d0","d1", "memory");
  188.   return _res;
  189. }
  190. static __inline struct hostent *
  191. gethostbyname (BASE_PAR_DECL const char *name)
  192. {
  193.   BASE_EXT_DECL
  194.   register struct hostent * _res  __asm("d0");
  195.   register struct Library * a6 __asm("a6") = BASE_NAME;
  196.   register const char *a0 __asm("a0") = name;
  197.   __asm __volatile ("jsr a6@(-0xd2)"
  198.   : "=r" (_res)
  199.   : "r" (a6), "r" (a0)
  200.   : "a0","a1","d0","d1", "memory");
  201.   return _res;
  202. }
  203. static __inline struct servent *
  204. getservbyname (BASE_PAR_DECL const char *name,const char * proto)
  205. {
  206.   BASE_EXT_DECL
  207.   register struct servent * _res  __asm("d0");
  208.   register struct Library * a6 __asm("a6") = BASE_NAME;
  209.   register const char *a0 __asm("a0") = name;
  210.   register const char *a1 __asm("a1") =  proto;
  211.   __asm __volatile ("jsr a6@(-0xea)"
  212.   : "=r" (_res)
  213.   : "r" (a6), "r" (a0), "r" (a1)
  214.   : "a0","a1","d0","d1", "memory");
  215.   return _res;
  216. }
  217. static __inline LONG 
  218. listen (BASE_PAR_DECL LONG s,LONG  backlog)
  219. {
  220.   BASE_EXT_DECL
  221.   register LONG  _res  __asm("d0");
  222.   register struct Library * a6 __asm("a6") = BASE_NAME;
  223.   register LONG d0 __asm("d0") = s;
  224.   register LONG d1 __asm("d1") =  backlog;
  225.   __asm __volatile ("jsr a6@(-0x2a)"
  226.   : "=r" (_res)
  227.   : "r" (a6), "r" (d0), "r" (d1)
  228.   : "a0","a1","d0","d1", "memory");
  229.   return _res;
  230. }
  231. static __inline LONG 
  232. recv (BASE_PAR_DECL LONG s,char * buf,LONG  len,LONG  flags)
  233. {
  234.   BASE_EXT_DECL
  235.   register LONG  _res  __asm("d0");
  236.   register struct Library * a6 __asm("a6") = BASE_NAME;
  237.   register LONG d0 __asm("d0") = s;
  238.   register char *a0 __asm("a0") =  buf;
  239.   register LONG d1 __asm("d1") =  len;
  240.   register LONG d2 __asm("d2") =  flags;
  241.   __asm __volatile ("jsr a6@(-0x4e)"
  242.   : "=r" (_res)
  243.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  244.   : "a0","a1","d0","d1","d2", "memory");
  245.   return _res;
  246. }
  247. static __inline LONG 
  248. send (BASE_PAR_DECL LONG s,const char * msg,LONG  len,LONG  flags)
  249. {
  250.   BASE_EXT_DECL
  251.   register LONG  _res  __asm("d0");
  252.   register struct Library * a6 __asm("a6") = BASE_NAME;
  253.   register LONG d0 __asm("d0") = s;
  254.   register const char *a0 __asm("a0") =  msg;
  255.   register LONG d1 __asm("d1") =  len;
  256.   register LONG d2 __asm("d2") =  flags;
  257.   __asm __volatile ("jsr a6@(-0x42)"
  258.   : "=r" (_res)
  259.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  260.   : "a0","a1","d0","d1","d2", "memory");
  261.   return _res;
  262. }
  263. static __inline LONG 
  264. setsockopt (BASE_PAR_DECL LONG s,LONG  level,LONG  optname,char * optval,LONG  optlen)
  265. {
  266.   BASE_EXT_DECL
  267.   register LONG  _res  __asm("d0");
  268.   register struct Library * a6 __asm("a6") = BASE_NAME;
  269.   register LONG d0 __asm("d0") = s;
  270.   register LONG d1 __asm("d1") =  level;
  271.   register LONG d2 __asm("d2") =  optname;
  272.   register char *a0 __asm("a0") =  optval;
  273.   register LONG d3 __asm("d3") =  optlen;
  274.   __asm __volatile ("jsr a6@(-0x5a)"
  275.   : "=r" (_res)
  276.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (d3)
  277.   : "a0","a1","d0","d1","d2","d3", "memory");
  278.   return _res;
  279. }
  280. static __inline LONG 
  281. socket (BASE_PAR_DECL LONG domain,LONG  type,LONG  protocol)
  282. {
  283.   BASE_EXT_DECL
  284.   register LONG  _res  __asm("d0");
  285.   register struct Library * a6 __asm("a6") = BASE_NAME;
  286.   register LONG d0 __asm("d0") = domain;
  287.   register LONG d1 __asm("d1") =  type;
  288.   register LONG d2 __asm("d2") =  protocol;
  289.   __asm __volatile ("jsr a6@(-0x1e)"
  290.   : "=r" (_res)
  291.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  292.   : "a0","a1","d0","d1","d2", "memory");
  293.   return _res;
  294. }
  295. #undef BASE_EXT_DECL
  296. #undef BASE_PAR_DECL
  297. #undef BASE_PAR_DECL0
  298. #undef BASE_NAME
  299.  
  300. __END_DECLS
  301.  
  302. #endif /* _INL_SOCKET_H_ */
  303.