Subversion Repositories Kolibri OS

Rev

Rev 4257 | Blame | Last modification | View Log | Download | RSS feed

  1. #include <menuet/net.h>
  2.  
  3.  
  4. int socket(int domain, int type, int protocol)
  5. {
  6.   int __ret;
  7.   __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_OPENSF),"c"(domain),"d"(type),"S"(protocol));
  8.   return __ret;
  9. }
  10.  
  11. int closesocket(int s)
  12. {
  13.   int __ret;
  14.   __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CLOSESF),"c"(s));
  15.   return __ret;
  16. }
  17.  
  18.  
  19. int connect(int sockfd, const struct sockaddr *serv_addr, int addrlen)
  20. {
  21.   int __ret;
  22.   __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CONNECTSF),"c"(sockfd),"d"(serv_addr),"S"(addrlen));
  23.   return __ret;
  24. }
  25.  
  26. int send(int s, const void *buf, int len, int flags)
  27. {
  28.   int __ret;
  29.   __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_SENDSF),"c"(s),"d"(buf),"S"(len),"D"(flags));
  30.   return __ret;
  31. }
  32.  
  33. int recv(int sockfd, void *buf, int len, int flags)
  34. {
  35.   int __ret;
  36.   __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_RECEIVESF),"c"(sockfd),"d"(buf),"S"(len),"D"(flags));
  37.   return __ret;
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44. // --------------------------------------------------------------
  45.  
  46. __u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip)
  47. {
  48.  __u32 __ret;
  49.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_UDP),
  50.   "c"(local_port),"d"(remote_port),"S"(remote_ip));
  51.  return __ret;
  52. }
  53.  
  54. __u32 __menuet__open_TCP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip,int mode)
  55. {
  56.  __u32 __ret;
  57.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_TCP),
  58.   "c"(local_port),"d"(remote_port),"S"(remote_ip),"D"(mode));
  59.  return __ret;
  60. }
  61.  
  62. int __menuet__close_UDP_socket(int socket)
  63. {
  64.  int __ret;
  65.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_UDP),
  66.   "c"(socket));
  67.  return __ret;
  68. }
  69.  
  70. int __menuet__close_TCP_socket(int socket)
  71. {
  72.  int __ret;
  73.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_TCP),
  74.   "c"(socket));
  75.  return __ret;
  76. }
  77.  
  78. int __menuet__poll_socket(int sock)
  79. {
  80.  int __ret;
  81.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_poll),
  82.   "c"(sock));
  83.  return __ret;
  84. }
  85.  
  86. int __menuet__read_socket(int sock,__u8 * return_data)
  87. {
  88.  int data_remaining;
  89.  __u8 data_byte;
  90.  __asm__("int $0x40":"=a"(data_remaining),"=b"(data_byte):"a"(__NET_socket),
  91.   "b"(__NET_sock_poll),"c"(sock));
  92.  if(return_data) *return_data=data_byte;
  93.  return data_remaining;
  94. }
  95.  
  96. int __menuet__get_TCP_socket_status(int sock)
  97. {
  98.  int __ret;
  99.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_get_status),
  100.   "c"(sock));
  101.  return __ret;
  102. }
  103.  
  104. int __menuet__write_UDP_socket(int sock,int count,void * buffer)
  105. {
  106.  int __ret;
  107.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_UDP),
  108.   "c"(sock),"d"(count),"S"((__u32)buffer));
  109.  return __ret;
  110. }
  111.  
  112. int __menuet__write_TCP_socket(int sock,int count,void * buffer)
  113. {
  114.  int __ret;
  115.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_TCP),
  116.   "c"(sock),"d"(count),"S"((__u32)buffer));
  117.  return __ret;
  118. }
  119.  
  120. int __menuet__check_net_port_availability(int port)
  121. {
  122.  int __ret;
  123.  __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_check_port),
  124.   "c"(port));
  125.  return __ret;
  126. }
  127.