socket.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include <bits/socket.h>
  2. #include <bits/types.h>
  3. #include <bits/iovec.h>
  4. #include <syscall.h>
  5. #define SHUT_RD 0
  6. #define SHUT_WR 1
  7. #define SHUT_RDWR 2
  8. struct msghdr {
  9. void* name;
  10. unsigned namelen;
  11. struct iovec* iov;
  12. size_t iovlen;
  13. void* control;
  14. size_t controllen;
  15. int flags;
  16. };
  17. inline static long sys_socket(int domain, int type, int proto)
  18. {
  19. return syscall3(NR_socket, domain, type, proto);
  20. }
  21. inline static long sys_socketpair(int af, int sock, int prot, int* fds)
  22. {
  23. return syscall4(NR_socketpair, af, sock, prot, (long)fds);
  24. }
  25. inline static long sys_bind(int fd, void* addr, int len)
  26. {
  27. return syscall3(NR_bind, fd, (long)addr, len);
  28. }
  29. inline static long sys_accept(int fd, void* addr, int* len)
  30. {
  31. return syscall4(NR_accept4, fd, (long)addr, (long)len, 0);
  32. }
  33. inline static long sys_accept4(int fd, void* addr, int* len, int flags)
  34. {
  35. return syscall4(NR_accept4, fd, (long)addr, (long)len, flags);
  36. }
  37. inline static long sys_listen(int fd, int backlog)
  38. {
  39. return syscall2(NR_listen, fd, backlog);
  40. }
  41. inline static long sys_connect(int fd, void* addr, int len)
  42. {
  43. return syscall3(NR_connect, fd, (long)addr, len);
  44. }
  45. inline static long sys_shutdown(int fd, int how)
  46. {
  47. return syscall2(NR_shutdown, fd, how);
  48. }
  49. inline static long sys_getsockopt(int fd, int lvl, int opt, void* val, int* len)
  50. {
  51. return syscall5(NR_getsockopt, fd, lvl, opt, (long)val, (long)len);
  52. }
  53. inline static long sys_setsockopt(int fd, int lvl, int opt, void* val, int len)
  54. {
  55. return syscall5(NR_setsockopt, fd, lvl, opt, (long)val, len);
  56. }
  57. inline static long sys_setsockopti(int fd, int lvl, int opt, int val)
  58. {
  59. return syscall5(NR_setsockopt, fd, lvl, opt, (long)&val, sizeof(val));
  60. }
  61. inline static long sys_recv(int fd, void* buf, size_t len, int flags)
  62. {
  63. return syscall6(NR_recvfrom, fd, (long)buf, len, flags, 0, 0);
  64. }
  65. inline static long sys_recvfrom(int fd, void* buf, size_t len, int flags,
  66. void* addr, int* alen)
  67. {
  68. return syscall6(NR_recvfrom, fd, (long)buf, len, flags,
  69. (long)addr, (long)alen);
  70. }
  71. inline static long sys_recvmsg(int fd, struct msghdr* msg, int flags)
  72. {
  73. return syscall3(NR_recvmsg, fd, (long)msg, flags);
  74. }
  75. inline static long sys_send(int fd, const char* buf, int len, int flags)
  76. {
  77. return syscall6(NR_sendto, fd, (long)buf, len, flags, 0, 0);
  78. }
  79. inline static long sys_sendto(int fd, const void* buf, int len, int flags,
  80. void* addr, int addrlen)
  81. {
  82. return syscall6(NR_sendto, fd, (long)buf, len, flags,
  83. (long)addr, addrlen);
  84. }
  85. inline static long sys_sendmsg(int fd, const struct msghdr* msg, int flags)
  86. {
  87. return syscall3(NR_sendmsg, fd, (long)msg, flags);
  88. }