home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / comm / net / amitcp / amitcp-2.2 / netinclude / inline / socket.h
Encoding:
C/C++ Source or Header  |  1993-12-21  |  17.9 KB  |  605 lines

  1. #ifndef _INLINE_SOCKET_H
  2. #define _INLINE_SOCKET_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct Library * SocketBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME SocketBase
  18. #endif
  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 ULONG 
  60. Inet_LnaOf (BASE_PAR_DECL LONG in)
  61. {
  62.   BASE_EXT_DECL
  63.   register ULONG  _res  __asm("d0");
  64.   register struct Library * a6 __asm("a6") = BASE_NAME;
  65.   register LONG d0 __asm("d0") = in;
  66.   __asm __volatile ("jsr a6@(-0xba)"
  67.   : "=r" (_res)
  68.   : "r" (a6), "r" (d0)
  69.   : "a0","a1","d0","d1", "memory");
  70.   return _res;
  71. }
  72. static __inline ULONG 
  73. Inet_MakeAddr (BASE_PAR_DECL int net,int  host)
  74. {
  75.   BASE_EXT_DECL
  76.   register ULONG  _res  __asm("d0");
  77.   register struct Library * a6 __asm("a6") = BASE_NAME;
  78.   register int d0 __asm("d0") = net;
  79.   register int d1 __asm("d1") =  host;
  80.   __asm __volatile ("jsr a6@(-0xc6)"
  81.   : "=r" (_res)
  82.   : "r" (a6), "r" (d0), "r" (d1)
  83.   : "a0","a1","d0","d1", "memory");
  84.   return _res;
  85. }
  86. static __inline ULONG 
  87. Inet_NetOf (BASE_PAR_DECL LONG in)
  88. {
  89.   BASE_EXT_DECL
  90.   register ULONG  _res  __asm("d0");
  91.   register struct Library * a6 __asm("a6") = BASE_NAME;
  92.   register LONG d0 __asm("d0") = in;
  93.   __asm __volatile ("jsr a6@(-0xc0)"
  94.   : "=r" (_res)
  95.   : "r" (a6), "r" (d0)
  96.   : "a0","a1","d0","d1", "memory");
  97.   return _res;
  98. }
  99. static __inline char *
  100. Inet_NtoA (BASE_PAR_DECL ULONG in)
  101. {
  102.   BASE_EXT_DECL
  103.   register char * _res  __asm("d0");
  104.   register struct Library * a6 __asm("a6") = BASE_NAME;
  105.   register ULONG d0 __asm("d0") = in;
  106.   __asm __volatile ("jsr a6@(-0xae)"
  107.   : "=r" (_res)
  108.   : "r" (a6), "r" (d0)
  109.   : "a0","a1","d0","d1", "memory");
  110.   return _res;
  111. }
  112. static __inline LONG 
  113. IoctlSocket (BASE_PAR_DECL LONG d,ULONG  request,char * argp)
  114. {
  115.   BASE_EXT_DECL
  116.   register LONG  _res  __asm("d0");
  117.   register struct Library * a6 __asm("a6") = BASE_NAME;
  118.   register LONG d0 __asm("d0") = d;
  119.   register ULONG d1 __asm("d1") =  request;
  120.   register char *a0 __asm("a0") =  argp;
  121.   __asm __volatile ("jsr a6@(-0x72)"
  122.   : "=r" (_res)
  123.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  124.   : "a0","a1","d0","d1", "memory");
  125.   return _res;
  126. }
  127. static __inline LONG 
  128. ObtainSocket (BASE_PAR_DECL LONG id,LONG  domain,LONG  type,LONG  protocol)
  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") = id;
  134.   register LONG d1 __asm("d1") =  domain;
  135.   register LONG d2 __asm("d2") =  type;
  136.   register LONG d3 __asm("d3") =  protocol;
  137.   __asm __volatile ("jsr a6@(-0x90)"
  138.   : "=r" (_res)
  139.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  140.   : "a0","a1","d0","d1","d2","d3", "memory");
  141.   return _res;
  142. }
  143. static __inline LONG 
  144. ReleaseCopyOfSocket (BASE_PAR_DECL LONG fd, LONG id)
  145. {
  146.   BASE_EXT_DECL
  147.   register LONG  _res  __asm("d0");
  148.   register struct Library * a6 __asm("a6") = BASE_NAME;
  149.   register LONG d0 __asm("d0") = fd;
  150.   register LONG d1 __asm("d1") = id;
  151.   __asm __volatile ("jsr a6@(-0x9c)"
  152.   : "=r" (_res)
  153.   : "r" (a6), "r" (d0), "r" (d1)
  154.   : "a0","a1","d0","d1", "memory");
  155.   return _res;
  156. }
  157. static __inline LONG 
  158. ReleaseSocket (BASE_PAR_DECL LONG fd, LONG id)
  159. {
  160.   BASE_EXT_DECL
  161.   register LONG  _res  __asm("d0");
  162.   register struct Library * a6 __asm("a6") = BASE_NAME;
  163.   register LONG d0 __asm("d0") = fd;
  164.   register LONG d1 __asm("d1") = id;
  165.   __asm __volatile ("jsr a6@(-0x96)"
  166.   : "=r" (_res)
  167.   : "r" (a6), "r" (d0), "r" (d1)
  168.   : "a0","a1","d0","d1", "memory");
  169.   return _res;
  170. }
  171. static __inline LONG 
  172. SetDTableSize (BASE_PAR_DECL LONG size)
  173. {
  174.   BASE_EXT_DECL
  175.   register LONG  _res  __asm("d0");
  176.   register struct Library * a6 __asm("a6") = BASE_NAME;
  177.   register LONG d0 __asm("d0") = size;
  178.   __asm __volatile ("jsr a6@(-0x8a)"
  179.   : "=r" (_res)
  180.   : "r" (a6), "r" (d0)
  181.   : "a0","a1","d0","d1", "memory");
  182.   return _res;
  183. }
  184. static __inline void 
  185. SetErrnoPtr (BASE_PAR_DECL void *errno_p,LONG  size)
  186. {
  187.   BASE_EXT_DECL
  188.   register struct Library * a6 __asm("a6") = BASE_NAME;
  189.   register void *a0 __asm("a0") = errno_p;
  190.   register LONG d0 __asm("d0") =  size;
  191.   __asm __volatile ("jsr a6@(-0xa8)"
  192.   : /* no output */
  193.   : "r" (a6), "r" (a0), "r" (d0)
  194.   : "a0","a1","d0","d1", "memory");
  195. }
  196. static __inline void 
  197. SetSocketSignals (BASE_PAR_DECL ULONG SIGINTR,ULONG  SIGIO,ULONG  SIGURG)
  198. {
  199.   BASE_EXT_DECL
  200.   register struct Library * a6 __asm("a6") = BASE_NAME;
  201.   register ULONG d0 __asm("d0") = SIGINTR;
  202.   register ULONG d1 __asm("d1") =  SIGIO;
  203.   register ULONG d2 __asm("d2") =  SIGURG;
  204.   __asm __volatile ("jsr a6@(-0x84)"
  205.   : /* no output */
  206.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  207.   : "a0","a1","d0","d1","d2", "memory");
  208. }
  209. static __inline void 
  210. Syslog (BASE_PAR_DECL ULONG level,const STRPTR  format,LONG *  ap)
  211. {
  212.   BASE_EXT_DECL
  213.   register struct Library * a6 __asm("a6") = BASE_NAME;
  214.   register ULONG d0 __asm("d0") = level;
  215.   register const STRPTR a0 __asm("a0") =  format;
  216.   register LONG * a1 __asm("a1") =  ap;
  217.   __asm __volatile ("jsr a6@(-0x102)"
  218.   : /* no output */
  219.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  220.   : "a0","a1","d0","d1", "memory");
  221. }
  222. static __inline LONG 
  223. WaitSelect (BASE_PAR_DECL LONG nfds,fd_set * readfds,fd_set * writefds,fd_set * execptfds,struct timeval * timeout,ULONG * maskp)
  224. {
  225.   BASE_EXT_DECL
  226.   register LONG  _res  __asm("d0");
  227.   register struct Library * a6 __asm("a6") = BASE_NAME;
  228.   register LONG d0 __asm("d0") = nfds;
  229.   register fd_set *a0 __asm("a0") =  readfds;
  230.   register fd_set *a1 __asm("a1") =  writefds;
  231.   register fd_set *a2 __asm("a2") =  execptfds;
  232.   register struct timeval *a3 __asm("a3") =  timeout;
  233.   register ULONG *d1 __asm("d1") =  maskp;
  234.   __asm __volatile ("jsr a6@(-0x7e)"
  235.   : "=r" (_res)
  236.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d1)
  237.   : "a0","a1","a2","a3","d0","d1", "memory");
  238.   return _res;
  239. }
  240. static __inline LONG 
  241. accept (BASE_PAR_DECL LONG s,struct sockaddr * addr,LONG * addrlen)
  242. {
  243.   BASE_EXT_DECL
  244.   register LONG  _res  __asm("d0");
  245.   register struct Library * a6 __asm("a6") = BASE_NAME;
  246.   register LONG d0 __asm("d0") = s;
  247.   register struct sockaddr *a0 __asm("a0") =  addr;
  248.   register LONG *a1 __asm("a1") =  addrlen;
  249.   __asm __volatile ("jsr a6@(-0x30)"
  250.   : "=r" (_res)
  251.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  252.   : "a0","a1","d0","d1", "memory");
  253.   return _res;
  254. }
  255. static __inline LONG 
  256. bind (BASE_PAR_DECL LONG s,const struct sockaddr * name,LONG  namelen)
  257. {
  258.   BASE_EXT_DECL
  259.   register LONG  _res  __asm("d0");
  260.   register struct Library * a6 __asm("a6") = BASE_NAME;
  261.   register LONG d0 __asm("d0") = s;
  262.   register const struct sockaddr *a0 __asm("a0") =  name;
  263.   register LONG d1 __asm("d1") =  namelen;
  264.   __asm __volatile ("jsr a6@(-0x24)"
  265.   : "=r" (_res)
  266.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  267.   : "a0","a1","d0","d1", "memory");
  268.   return _res;
  269. }
  270. static __inline LONG 
  271. connect (BASE_PAR_DECL LONG s,const struct sockaddr * name,LONG  namelen)
  272. {
  273.   BASE_EXT_DECL
  274.   register LONG  _res  __asm("d0");
  275.   register struct Library * a6 __asm("a6") = BASE_NAME;
  276.   register LONG d0 __asm("d0") = s;
  277.   register const struct sockaddr *a0 __asm("a0") =  name;
  278.   register LONG d1 __asm("d1") =  namelen;
  279.   __asm __volatile ("jsr a6@(-0x36)"
  280.   : "=r" (_res)
  281.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  282.   : "a0","a1","d0","d1", "memory");
  283.   return _res;
  284. }
  285. static __inline struct hostent *
  286. gethostbyaddr (BASE_PAR_DECL const char *addr,LONG  len,LONG  type)
  287. {
  288.   BASE_EXT_DECL
  289.   register struct hostent * _res  __asm("d0");
  290.   register struct Library * a6 __asm("a6") = BASE_NAME;
  291.   register const char *a0 __asm("a0") = addr;
  292.   register LONG d0 __asm("d0") =  len;
  293.   register LONG d1 __asm("d1") =  type;
  294.   __asm __volatile ("jsr a6@(-0xd8)"
  295.   : "=r" (_res)
  296.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  297.   : "a0","a1","d0","d1", "memory");
  298.   return _res;
  299. }
  300. static __inline struct hostent *
  301. gethostbyname (BASE_PAR_DECL const char *name)
  302. {
  303.   BASE_EXT_DECL
  304.   register struct hostent * _res  __asm("d0");
  305.   register struct Library * a6 __asm("a6") = BASE_NAME;
  306.   register const char *a0 __asm("a0") = name;
  307.   __asm __volatile ("jsr a6@(-0xd2)"
  308.   : "=r" (_res)
  309.   : "r" (a6), "r" (a0)
  310.   : "a0","a1","d0","d1", "memory");
  311.   return _res;
  312. }
  313. static __inline struct netent *
  314. getnetbyaddr (BASE_PAR_DECL LONG net,LONG  type)
  315. {
  316.   BASE_EXT_DECL
  317.   register struct netent * _res  __asm("d0");
  318.   register struct Library * a6 __asm("a6") = BASE_NAME;
  319.   register LONG d0 __asm("d0") = net;
  320.   register LONG d1 __asm("d1") =  type;
  321.   __asm __volatile ("jsr a6@(-0xe4)"
  322.   : "=r" (_res)
  323.   : "r" (a6), "r" (d0), "r" (d1)
  324.   : "a0","a1","d0","d1", "memory");
  325.   return _res;
  326. }
  327. static __inline struct netent *
  328. getnetbyname (BASE_PAR_DECL const char *name)
  329. {
  330.   BASE_EXT_DECL
  331.   register struct netent * _res  __asm("d0");
  332.   register struct Library * a6 __asm("a6") = BASE_NAME;
  333.   register const char *a0 __asm("a0") = name;
  334.   __asm __volatile ("jsr a6@(-0xde)"
  335.   : "=r" (_res)
  336.   : "r" (a6), "r" (a0)
  337.   : "a0","a1","d0","d1", "memory");
  338.   return _res;
  339. }
  340. static __inline LONG 
  341. getpeername (BASE_PAR_DECL LONG s,struct sockaddr * hostname,LONG * namelen)
  342. {
  343.   BASE_EXT_DECL
  344.   register LONG  _res  __asm("d0");
  345.   register struct Library * a6 __asm("a6") = BASE_NAME;
  346.   register LONG d0 __asm("d0") = s;
  347.   register struct sockaddr *a0 __asm("a0") =  hostname;
  348.   register LONG *a1 __asm("a1") =  namelen;
  349.   __asm __volatile ("jsr a6@(-0x6c)"
  350.   : "=r" (_res)
  351.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  352.   : "a0","a1","d0","d1", "memory");
  353.   return _res;
  354. }
  355. static __inline struct protoent *
  356. getprotobyname (BASE_PAR_DECL const char *name)
  357. {
  358.   BASE_EXT_DECL
  359.   register struct protoent * _res  __asm("d0");
  360.   register struct Library * a6 __asm("a6") = BASE_NAME;
  361.   register const char *a0 __asm("a0") = name;
  362.   __asm __volatile ("jsr a6@(-0xf6)"
  363.   : "=r" (_res)
  364.   : "r" (a6), "r" (a0)
  365.   : "a0","a1","d0","d1", "memory");
  366.   return _res;
  367. }
  368. static __inline struct protoent *
  369. getprotobynumber (BASE_PAR_DECL LONG proto)
  370. {
  371.   BASE_EXT_DECL
  372.   register struct protoent * _res  __asm("d0");
  373.   register struct Library * a6 __asm("a6") = BASE_NAME;
  374.   register LONG d0 __asm("d0") = proto;
  375.   __asm __volatile ("jsr a6@(-0xfc)"
  376.   : "=r" (_res)
  377.   : "r" (a6), "r" (d0)
  378.   : "a0","a1","d0","d1", "memory");
  379.   return _res;
  380. }
  381. static __inline struct servent *
  382. getservbyname (BASE_PAR_DECL const char *name,const char * proto)
  383. {
  384.   BASE_EXT_DECL
  385.   register struct servent * _res  __asm("d0");
  386.   register struct Library * a6 __asm("a6") = BASE_NAME;
  387.   register const char *a0 __asm("a0") = name;
  388.   register const char *a1 __asm("a1") =  proto;
  389.   __asm __volatile ("jsr a6@(-0xea)"
  390.   : "=r" (_res)
  391.   : "r" (a6), "r" (a0), "r" (a1)
  392.   : "a0","a1","d0","d1", "memory");
  393.   return _res;
  394. }
  395. static __inline struct servent *
  396. getservbyport (BASE_PAR_DECL LONG port,const char * proto)
  397. {
  398.   BASE_EXT_DECL
  399.   register struct servent * _res  __asm("d0");
  400.   register struct Library * a6 __asm("a6") = BASE_NAME;
  401.   register LONG d0 __asm("d0") = port;
  402.   register const char *a0 __asm("a0") =  proto;
  403.   __asm __volatile ("jsr a6@(-0xf0)"
  404.   : "=r" (_res)
  405.   : "r" (a6), "r" (d0), "r" (a0)
  406.   : "a0","a1","d0","d1", "memory");
  407.   return _res;
  408. }
  409. static __inline LONG 
  410. getsockname (BASE_PAR_DECL LONG s,struct sockaddr * hostname,LONG * namelen)
  411. {
  412.   BASE_EXT_DECL
  413.   register LONG  _res  __asm("d0");
  414.   register struct Library * a6 __asm("a6") = BASE_NAME;
  415.   register LONG d0 __asm("d0") = s;
  416.   register struct sockaddr *a0 __asm("a0") =  hostname;
  417.   register LONG *a1 __asm("a1") =  namelen;
  418.   __asm __volatile ("jsr a6@(-0x66)"
  419.   : "=r" (_res)
  420.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  421.   : "a0","a1","d0","d1", "memory");
  422.   return _res;
  423. }
  424. static __inline LONG 
  425. getsockopt (BASE_PAR_DECL LONG s,LONG  level,LONG  optname,char * optval,LONG * optlen)
  426. {
  427.   BASE_EXT_DECL
  428.   register LONG  _res  __asm("d0");
  429.   register struct Library * a6 __asm("a6") = BASE_NAME;
  430.   register LONG d0 __asm("d0") = s;
  431.   register LONG d1 __asm("d1") =  level;
  432.   register LONG d2 __asm("d2") =  optname;
  433.   register char *a0 __asm("a0") =  optval;
  434.   register LONG *a1 __asm("a1") =  optlen;
  435.   __asm __volatile ("jsr a6@(-0x60)"
  436.   : "=r" (_res)
  437.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (a1)
  438.   : "a0","a1","d0","d1","d2", "memory");
  439.   return _res;
  440. }
  441. static __inline ULONG 
  442. inet_addr (BASE_PAR_DECL const char * cp)
  443. {
  444.   BASE_EXT_DECL
  445.   register ULONG  _res  __asm("d0");
  446.   register struct Library * a6 __asm("a6") = BASE_NAME;
  447.   register const char * a0 __asm("a0") = cp;
  448.   __asm __volatile ("jsr a6@(-0xb4)"
  449.   : "=r" (_res)
  450.   : "r" (a6), "r" (a0)
  451.   : "a0","a1","d0","d1", "memory");
  452.   return _res;
  453. }
  454. static __inline ULONG 
  455. inet_network (BASE_PAR_DECL const char * cp)
  456. {
  457.   BASE_EXT_DECL
  458.   register ULONG  _res  __asm("d0");
  459.   register struct Library * a6 __asm("a6") = BASE_NAME;
  460.   register const char * a0 __asm("a0") = cp;
  461.   __asm __volatile ("jsr a6@(-0xcc)"
  462.   : "=r" (_res)
  463.   : "r" (a6), "r" (a0)
  464.   : "a0","a1","d0","d1", "memory");
  465.   return _res;
  466. }
  467. static __inline LONG 
  468. listen (BASE_PAR_DECL LONG s,LONG  backlog)
  469. {
  470.   BASE_EXT_DECL
  471.   register LONG  _res  __asm("d0");
  472.   register struct Library * a6 __asm("a6") = BASE_NAME;
  473.   register LONG d0 __asm("d0") = s;
  474.   register LONG d1 __asm("d1") =  backlog;
  475.   __asm __volatile ("jsr a6@(-0x2a)"
  476.   : "=r" (_res)
  477.   : "r" (a6), "r" (d0), "r" (d1)
  478.   : "a0","a1","d0","d1", "memory");
  479.   return _res;
  480. }
  481. static __inline LONG 
  482. recv (BASE_PAR_DECL LONG s,char * buf,LONG  len,LONG  flags)
  483. {
  484.   BASE_EXT_DECL
  485.   register LONG  _res  __asm("d0");
  486.   register struct Library * a6 __asm("a6") = BASE_NAME;
  487.   register LONG d0 __asm("d0") = s;
  488.   register char *a0 __asm("a0") =  buf;
  489.   register LONG d1 __asm("d1") =  len;
  490.   register LONG d2 __asm("d2") =  flags;
  491.   __asm __volatile ("jsr a6@(-0x4e)"
  492.   : "=r" (_res)
  493.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  494.   : "a0","a1","d0","d1","d2", "memory");
  495.   return _res;
  496. }
  497. static __inline LONG 
  498. recvfrom (BASE_PAR_DECL LONG s,char * buf,LONG  len,LONG  flags,struct sockaddr * from,LONG * fromlen)
  499. {
  500.   BASE_EXT_DECL
  501.   register LONG  _res  __asm("d0");
  502.   register struct Library * a6 __asm("a6") = BASE_NAME;
  503.   register LONG d0 __asm("d0") = s;
  504.   register char *a0 __asm("a0") =  buf;
  505.   register LONG d1 __asm("d1") =  len;
  506.   register LONG d2 __asm("d2") =  flags;
  507.   register struct sockaddr *a1 __asm("a1") =  from;
  508.   register LONG *a2 __asm("a2") =  fromlen;
  509.   __asm __volatile ("jsr a6@(-0x48)"
  510.   : "=r" (_res)
  511.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (a2)
  512.   : "a0","a1","a2","d0","d1","d2", "memory");
  513.   return _res;
  514. }
  515. static __inline LONG 
  516. send (BASE_PAR_DECL LONG s,const char * msg,LONG  len,LONG  flags)
  517. {
  518.   BASE_EXT_DECL
  519.   register LONG  _res  __asm("d0");
  520.   register struct Library * a6 __asm("a6") = BASE_NAME;
  521.   register LONG d0 __asm("d0") = s;
  522.   register const char *a0 __asm("a0") =  msg;
  523.   register LONG d1 __asm("d1") =  len;
  524.   register LONG d2 __asm("d2") =  flags;
  525.   __asm __volatile ("jsr a6@(-0x42)"
  526.   : "=r" (_res)
  527.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  528.   : "a0","a1","d0","d1","d2", "memory");
  529.   return _res;
  530. }
  531. static __inline LONG 
  532. sendto (BASE_PAR_DECL LONG s,char * msg,LONG  len,LONG  flags,struct sockaddr * to,LONG  tolen)
  533. {
  534.   BASE_EXT_DECL
  535.   register LONG  _res  __asm("d0");
  536.   register struct Library * a6 __asm("a6") = BASE_NAME;
  537.   register LONG d0 __asm("d0") = s;
  538.   register char *a0 __asm("a0") =  msg;
  539.   register LONG d1 __asm("d1") =  len;
  540.   register LONG d2 __asm("d2") =  flags;
  541.   register struct sockaddr *a1 __asm("a1") =  to;
  542.   register LONG d3 __asm("d3") =  tolen;
  543.   __asm __volatile ("jsr a6@(-0x3c)"
  544.   : "=r" (_res)
  545.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (d3)
  546.   : "a0","a1","d0","d1","d2","d3", "memory");
  547.   return _res;
  548. }
  549. static __inline LONG 
  550. setsockopt (BASE_PAR_DECL LONG s,LONG  level,LONG  optname,char * optval,LONG  optlen)
  551. {
  552.   BASE_EXT_DECL
  553.   register LONG  _res  __asm("d0");
  554.   register struct Library * a6 __asm("a6") = BASE_NAME;
  555.   register LONG d0 __asm("d0") = s;
  556.   register LONG d1 __asm("d1") =  level;
  557.   register LONG d2 __asm("d2") =  optname;
  558.   register char *a0 __asm("a0") =  optval;
  559.   register LONG d3 __asm("d3") =  optlen;
  560.   __asm __volatile ("jsr a6@(-0x5a)"
  561.   : "=r" (_res)
  562.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (d3)
  563.   : "a0","a1","d0","d1","d2","d3", "memory");
  564.   return _res;
  565. }
  566. static __inline LONG 
  567. shutdown (BASE_PAR_DECL LONG s,LONG  how)
  568. {
  569.   BASE_EXT_DECL
  570.   register LONG  _res  __asm("d0");
  571.   register struct Library * a6 __asm("a6") = BASE_NAME;
  572.   register LONG d0 __asm("d0") = s;
  573.   register LONG d1 __asm("d1") =  how;
  574.   __asm __volatile ("jsr a6@(-0x54)"
  575.   : "=r" (_res)
  576.   : "r" (a6), "r" (d0), "r" (d1)
  577.   : "a0","a1","d0","d1", "memory");
  578.   return _res;
  579. }
  580. static __inline LONG 
  581. socket (BASE_PAR_DECL LONG domain,LONG  type,LONG  protocol)
  582. {
  583.   BASE_EXT_DECL
  584.   register LONG  _res  __asm("d0");
  585.   register struct Library * a6 __asm("a6") = BASE_NAME;
  586.   register LONG d0 __asm("d0") = domain;
  587.   register LONG d1 __asm("d1") =  type;
  588.   register LONG d2 __asm("d2") =  protocol;
  589.   __asm __volatile ("jsr a6@(-0x1e)"
  590.   : "=r" (_res)
  591.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  592.   : "a0","a1","d0","d1","d2", "memory");
  593.   return _res;
  594. }
  595. #undef BASE_EXT_DECL
  596. #undef BASE_PAR_DECL
  597. #undef BASE_PAR_DECL0
  598. #undef BASE_NAME
  599.  
  600. __END_DECLS
  601.  
  602. #include <clib/socket_inlines.h>
  603.   
  604. #endif /* _INLINE_SOCKET_H */
  605.