Commit 1be9e1dc569eb3817441baf60d26648c5dcef12d
1 parent
ec2db7de
Remove do_socketcallwrapper.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2215 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
129 additions
and
92 deletions
linux-user/syscall.c
| @@ -837,6 +837,113 @@ static long do_sendrecvmsg(int fd, target_ulong target_msg, | @@ -837,6 +837,113 @@ static long do_sendrecvmsg(int fd, target_ulong target_msg, | ||
| 837 | return ret; | 837 | return ret; |
| 838 | } | 838 | } |
| 839 | 839 | ||
| 840 | +static long do_accept(int fd, target_ulong target_addr, | ||
| 841 | + target_ulong target_addrlen) | ||
| 842 | +{ | ||
| 843 | + socklen_t addrlen = tget32(target_addrlen); | ||
| 844 | + void *addr = alloca(target_addrlen); | ||
| 845 | + long ret; | ||
| 846 | + | ||
| 847 | + ret = get_errno(accept(fd, addr, &addrlen)); | ||
| 848 | + if (!is_error(ret)) { | ||
| 849 | + host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 850 | + tput32(target_addrlen, addrlen); | ||
| 851 | + } | ||
| 852 | + return ret; | ||
| 853 | +} | ||
| 854 | + | ||
| 855 | +static long do_getpeername(int fd, target_ulong target_addr, | ||
| 856 | + target_ulong target_addrlen) | ||
| 857 | +{ | ||
| 858 | + socklen_t addrlen = tget32(target_addrlen); | ||
| 859 | + void *addr = alloca(target_addrlen); | ||
| 860 | + long ret; | ||
| 861 | + | ||
| 862 | + ret = get_errno(getpeername(fd, addr, &addrlen)); | ||
| 863 | + if (!is_error(ret)) { | ||
| 864 | + host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 865 | + tput32(target_addrlen, addrlen); | ||
| 866 | + } | ||
| 867 | + return ret; | ||
| 868 | +} | ||
| 869 | + | ||
| 870 | +static long do_getsockname(int fd, target_ulong target_addr, | ||
| 871 | + target_ulong target_addrlen) | ||
| 872 | +{ | ||
| 873 | + socklen_t addrlen = tget32(target_addrlen); | ||
| 874 | + void *addr = alloca(target_addrlen); | ||
| 875 | + long ret; | ||
| 876 | + | ||
| 877 | + ret = get_errno(getsockname(fd, addr, &addrlen)); | ||
| 878 | + if (!is_error(ret)) { | ||
| 879 | + host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 880 | + tput32(target_addrlen, addrlen); | ||
| 881 | + } | ||
| 882 | + return ret; | ||
| 883 | +} | ||
| 884 | + | ||
| 885 | +static long do_socketpair(int domain, int type, int protocol, | ||
| 886 | + target_ulong target_tab) | ||
| 887 | +{ | ||
| 888 | + int tab[2]; | ||
| 889 | + long ret; | ||
| 890 | + | ||
| 891 | + ret = get_errno(socketpair(domain, type, protocol, tab)); | ||
| 892 | + if (!is_error(ret)) { | ||
| 893 | + tput32(target_tab, tab[0]); | ||
| 894 | + tput32(target_tab + 4, tab[1]); | ||
| 895 | + } | ||
| 896 | + return ret; | ||
| 897 | +} | ||
| 898 | + | ||
| 899 | +static long do_sendto(int fd, target_ulong msg, size_t len, int flags, | ||
| 900 | + target_ulong target_addr, socklen_t addrlen) | ||
| 901 | +{ | ||
| 902 | + void *addr; | ||
| 903 | + void *host_msg; | ||
| 904 | + long ret; | ||
| 905 | + | ||
| 906 | + host_msg = lock_user(msg, len, 1); | ||
| 907 | + if (target_addr) { | ||
| 908 | + addr = alloca(addrlen); | ||
| 909 | + target_to_host_sockaddr(addr, target_addr, addrlen); | ||
| 910 | + ret = get_errno(sendto(fd, host_msg, len, flags, addr, addrlen)); | ||
| 911 | + } else { | ||
| 912 | + ret = get_errno(send(fd, host_msg, len, flags)); | ||
| 913 | + } | ||
| 914 | + unlock_user(host_msg, msg, 0); | ||
| 915 | + return ret; | ||
| 916 | +} | ||
| 917 | + | ||
| 918 | +static long do_recvfrom(int fd, target_ulong msg, size_t len, int flags, | ||
| 919 | + target_ulong target_addr, target_ulong target_addrlen) | ||
| 920 | +{ | ||
| 921 | + socklen_t addrlen; | ||
| 922 | + void *addr; | ||
| 923 | + void *host_msg; | ||
| 924 | + long ret; | ||
| 925 | + | ||
| 926 | + host_msg = lock_user(msg, len, 0); | ||
| 927 | + if (target_addr) { | ||
| 928 | + addrlen = tget32(target_addrlen); | ||
| 929 | + addr = alloca(addrlen); | ||
| 930 | + ret = get_errno(recvfrom(fd, host_msg, len, flags, addr, &addrlen)); | ||
| 931 | + } else { | ||
| 932 | + addr = NULL; /* To keep compiler quiet. */ | ||
| 933 | + ret = get_errno(recv(fd, host_msg, len, flags)); | ||
| 934 | + } | ||
| 935 | + if (!is_error(ret)) { | ||
| 936 | + if (target_addr) { | ||
| 937 | + host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 938 | + tput32(target_addrlen, addrlen); | ||
| 939 | + } | ||
| 940 | + unlock_user(host_msg, msg, len); | ||
| 941 | + } else { | ||
| 942 | + unlock_user(host_msg, msg, 0); | ||
| 943 | + } | ||
| 944 | + return ret; | ||
| 945 | +} | ||
| 946 | + | ||
| 840 | static long do_socketcall(int num, target_ulong vptr) | 947 | static long do_socketcall(int num, target_ulong vptr) |
| 841 | { | 948 | { |
| 842 | long ret; | 949 | long ret; |
| @@ -879,14 +986,7 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -879,14 +986,7 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 879 | int sockfd = tgetl(vptr); | 986 | int sockfd = tgetl(vptr); |
| 880 | target_ulong target_addr = tgetl(vptr + n); | 987 | target_ulong target_addr = tgetl(vptr + n); |
| 881 | target_ulong target_addrlen = tgetl(vptr + 2 * n); | 988 | target_ulong target_addrlen = tgetl(vptr + 2 * n); |
| 882 | - socklen_t addrlen = tget32(target_addrlen); | ||
| 883 | - void *addr = alloca(addrlen); | ||
| 884 | - | ||
| 885 | - ret = get_errno(accept(sockfd, addr, &addrlen)); | ||
| 886 | - if (!is_error(ret)) { | ||
| 887 | - host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 888 | - tput32(target_addrlen, addrlen); | ||
| 889 | - } | 989 | + ret = do_accept(sockfd, target_addr, target_addrlen); |
| 890 | } | 990 | } |
| 891 | break; | 991 | break; |
| 892 | case SOCKOP_getsockname: | 992 | case SOCKOP_getsockname: |
| @@ -894,14 +994,7 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -894,14 +994,7 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 894 | int sockfd = tgetl(vptr); | 994 | int sockfd = tgetl(vptr); |
| 895 | target_ulong target_addr = tgetl(vptr + n); | 995 | target_ulong target_addr = tgetl(vptr + n); |
| 896 | target_ulong target_addrlen = tgetl(vptr + 2 * n); | 996 | target_ulong target_addrlen = tgetl(vptr + 2 * n); |
| 897 | - socklen_t addrlen = tget32(target_addrlen); | ||
| 898 | - void *addr = alloca(addrlen); | ||
| 899 | - | ||
| 900 | - ret = get_errno(getsockname(sockfd, addr, &addrlen)); | ||
| 901 | - if (!is_error(ret)) { | ||
| 902 | - host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 903 | - tput32(target_addrlen, addrlen); | ||
| 904 | - } | 997 | + ret = do_getsockname(sockfd, target_addr, target_addrlen); |
| 905 | } | 998 | } |
| 906 | break; | 999 | break; |
| 907 | case SOCKOP_getpeername: | 1000 | case SOCKOP_getpeername: |
| @@ -909,14 +1002,7 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -909,14 +1002,7 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 909 | int sockfd = tgetl(vptr); | 1002 | int sockfd = tgetl(vptr); |
| 910 | target_ulong target_addr = tgetl(vptr + n); | 1003 | target_ulong target_addr = tgetl(vptr + n); |
| 911 | target_ulong target_addrlen = tgetl(vptr + 2 * n); | 1004 | target_ulong target_addrlen = tgetl(vptr + 2 * n); |
| 912 | - socklen_t addrlen = tget32(target_addrlen); | ||
| 913 | - void *addr = alloca(addrlen); | ||
| 914 | - | ||
| 915 | - ret = get_errno(getpeername(sockfd, addr, &addrlen)); | ||
| 916 | - if (!is_error(ret)) { | ||
| 917 | - host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 918 | - tput32(target_addrlen, addrlen); | ||
| 919 | - } | 1005 | + ret = do_getpeername(sockfd, target_addr, target_addrlen); |
| 920 | } | 1006 | } |
| 921 | break; | 1007 | break; |
| 922 | case SOCKOP_socketpair: | 1008 | case SOCKOP_socketpair: |
| @@ -924,14 +1010,8 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -924,14 +1010,8 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 924 | int domain = tgetl(vptr); | 1010 | int domain = tgetl(vptr); |
| 925 | int type = tgetl(vptr + n); | 1011 | int type = tgetl(vptr + n); |
| 926 | int protocol = tgetl(vptr + 2 * n); | 1012 | int protocol = tgetl(vptr + 2 * n); |
| 927 | - target_ulong target_tab = tgetl(vptr + 3 * n); | ||
| 928 | - int tab[2]; | ||
| 929 | - | ||
| 930 | - ret = get_errno(socketpair(domain, type, protocol, tab)); | ||
| 931 | - if (!is_error(ret)) { | ||
| 932 | - tput32(target_tab, tab[0]); | ||
| 933 | - tput32(target_tab + 4, tab[1]); | ||
| 934 | - } | 1013 | + target_ulong tab = tgetl(vptr + 3 * n); |
| 1014 | + ret = do_socketpair(domain, type, protocol, tab); | ||
| 935 | } | 1015 | } |
| 936 | break; | 1016 | break; |
| 937 | case SOCKOP_send: | 1017 | case SOCKOP_send: |
| @@ -940,11 +1020,7 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -940,11 +1020,7 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 940 | target_ulong msg = tgetl(vptr + n); | 1020 | target_ulong msg = tgetl(vptr + n); |
| 941 | size_t len = tgetl(vptr + 2 * n); | 1021 | size_t len = tgetl(vptr + 2 * n); |
| 942 | int flags = tgetl(vptr + 3 * n); | 1022 | int flags = tgetl(vptr + 3 * n); |
| 943 | - void *host_msg; | ||
| 944 | - | ||
| 945 | - host_msg = lock_user(msg, len, 1); | ||
| 946 | - ret = get_errno(send(sockfd, host_msg, len, flags)); | ||
| 947 | - unlock_user(host_msg, msg, 0); | 1023 | + ret = do_sendto(sockfd, msg, len, flags, 0, 0); |
| 948 | } | 1024 | } |
| 949 | break; | 1025 | break; |
| 950 | case SOCKOP_recv: | 1026 | case SOCKOP_recv: |
| @@ -953,11 +1029,7 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -953,11 +1029,7 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 953 | target_ulong msg = tgetl(vptr + n); | 1029 | target_ulong msg = tgetl(vptr + n); |
| 954 | size_t len = tgetl(vptr + 2 * n); | 1030 | size_t len = tgetl(vptr + 2 * n); |
| 955 | int flags = tgetl(vptr + 3 * n); | 1031 | int flags = tgetl(vptr + 3 * n); |
| 956 | - void *host_msg; | ||
| 957 | - | ||
| 958 | - host_msg = lock_user(msg, len, 0); | ||
| 959 | - ret = get_errno(recv(sockfd, host_msg, len, flags)); | ||
| 960 | - unlock_user(host_msg, msg, ret); | 1032 | + ret = do_recvfrom(sockfd, msg, len, flags, 0, 0); |
| 961 | } | 1033 | } |
| 962 | break; | 1034 | break; |
| 963 | case SOCKOP_sendto: | 1035 | case SOCKOP_sendto: |
| @@ -966,15 +1038,9 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -966,15 +1038,9 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 966 | target_ulong msg = tgetl(vptr + n); | 1038 | target_ulong msg = tgetl(vptr + n); |
| 967 | size_t len = tgetl(vptr + 2 * n); | 1039 | size_t len = tgetl(vptr + 2 * n); |
| 968 | int flags = tgetl(vptr + 3 * n); | 1040 | int flags = tgetl(vptr + 3 * n); |
| 969 | - target_ulong target_addr = tgetl(vptr + 4 * n); | 1041 | + target_ulong addr = tgetl(vptr + 4 * n); |
| 970 | socklen_t addrlen = tgetl(vptr + 5 * n); | 1042 | socklen_t addrlen = tgetl(vptr + 5 * n); |
| 971 | - void *addr = alloca(addrlen); | ||
| 972 | - void *host_msg; | ||
| 973 | - | ||
| 974 | - host_msg = lock_user(msg, len, 1); | ||
| 975 | - target_to_host_sockaddr(addr, target_addr, addrlen); | ||
| 976 | - ret = get_errno(sendto(sockfd, host_msg, len, flags, addr, addrlen)); | ||
| 977 | - unlock_user(host_msg, msg, 0); | 1043 | + ret = do_sendto(sockfd, msg, len, flags, addr, addrlen); |
| 978 | } | 1044 | } |
| 979 | break; | 1045 | break; |
| 980 | case SOCKOP_recvfrom: | 1046 | case SOCKOP_recvfrom: |
| @@ -983,21 +1049,9 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -983,21 +1049,9 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 983 | target_ulong msg = tgetl(vptr + n); | 1049 | target_ulong msg = tgetl(vptr + n); |
| 984 | size_t len = tgetl(vptr + 2 * n); | 1050 | size_t len = tgetl(vptr + 2 * n); |
| 985 | int flags = tgetl(vptr + 3 * n); | 1051 | int flags = tgetl(vptr + 3 * n); |
| 986 | - target_ulong target_addr = tgetl(vptr + 4 * n); | ||
| 987 | - target_ulong target_addrlen = tgetl(vptr + 5 * n); | ||
| 988 | - socklen_t addrlen = tget32(target_addrlen); | ||
| 989 | - void *addr = alloca(addrlen); | ||
| 990 | - void *host_msg; | ||
| 991 | - | ||
| 992 | - host_msg = lock_user(msg, len, 0); | ||
| 993 | - ret = get_errno(recvfrom(sockfd, host_msg, len, flags, addr, &addrlen)); | ||
| 994 | - if (!is_error(ret)) { | ||
| 995 | - host_to_target_sockaddr(target_addr, addr, addrlen); | ||
| 996 | - tput32(target_addrlen, addrlen); | ||
| 997 | - unlock_user(host_msg, msg, len); | ||
| 998 | - } else { | ||
| 999 | - unlock_user(host_msg, msg, 0); | ||
| 1000 | - } | 1052 | + target_ulong addr = tgetl(vptr + 4 * n); |
| 1053 | + target_ulong addrlen = tgetl(vptr + 5 * n); | ||
| 1054 | + ret = do_recvfrom(sockfd, msg, len, flags, addr, addrlen); | ||
| 1001 | } | 1055 | } |
| 1002 | break; | 1056 | break; |
| 1003 | case SOCKOP_shutdown: | 1057 | case SOCKOP_shutdown: |
| @@ -1053,23 +1107,6 @@ static long do_socketcall(int num, target_ulong vptr) | @@ -1053,23 +1107,6 @@ static long do_socketcall(int num, target_ulong vptr) | ||
| 1053 | return ret; | 1107 | return ret; |
| 1054 | } | 1108 | } |
| 1055 | 1109 | ||
| 1056 | -/* XXX: suppress this function and call directly the related socket | ||
| 1057 | - functions */ | ||
| 1058 | -static long do_socketcallwrapper(int num, long arg1, long arg2, long arg3, | ||
| 1059 | - long arg4, long arg5, long arg6) | ||
| 1060 | -{ | ||
| 1061 | - target_long args[6]; | ||
| 1062 | - | ||
| 1063 | - tputl(args, arg1); | ||
| 1064 | - tputl(args+1, arg2); | ||
| 1065 | - tputl(args+2, arg3); | ||
| 1066 | - tputl(args+3, arg4); | ||
| 1067 | - tputl(args+4, arg5); | ||
| 1068 | - tputl(args+5, arg6); | ||
| 1069 | - | ||
| 1070 | - return do_socketcall(num, (target_ulong) args); | ||
| 1071 | -} | ||
| 1072 | - | ||
| 1073 | #define N_SHM_REGIONS 32 | 1110 | #define N_SHM_REGIONS 32 |
| 1074 | 1111 | ||
| 1075 | static struct shm_region { | 1112 | static struct shm_region { |
| @@ -2755,7 +2792,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2755,7 +2792,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2755 | 2792 | ||
| 2756 | #ifdef TARGET_NR_accept | 2793 | #ifdef TARGET_NR_accept |
| 2757 | case TARGET_NR_accept: | 2794 | case TARGET_NR_accept: |
| 2758 | - ret = do_socketcallwrapper(SOCKOP_accept, arg1, arg2, arg3, arg4, arg5, arg6); | 2795 | + ret = do_accept(arg1, arg2, arg3); |
| 2759 | break; | 2796 | break; |
| 2760 | #endif | 2797 | #endif |
| 2761 | #ifdef TARGET_NR_bind | 2798 | #ifdef TARGET_NR_bind |
| @@ -2770,12 +2807,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2770,12 +2807,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2770 | #endif | 2807 | #endif |
| 2771 | #ifdef TARGET_NR_getpeername | 2808 | #ifdef TARGET_NR_getpeername |
| 2772 | case TARGET_NR_getpeername: | 2809 | case TARGET_NR_getpeername: |
| 2773 | - ret = do_socketcallwrapper(SOCKOP_getpeername, arg1, arg2, arg3, arg4, arg5, arg6); | 2810 | + ret = do_getpeername(arg1, arg2, arg3); |
| 2774 | break; | 2811 | break; |
| 2775 | #endif | 2812 | #endif |
| 2776 | #ifdef TARGET_NR_getsockname | 2813 | #ifdef TARGET_NR_getsockname |
| 2777 | case TARGET_NR_getsockname: | 2814 | case TARGET_NR_getsockname: |
| 2778 | - ret = do_socketcallwrapper(SOCKOP_getsockname, arg1, arg2, arg3, arg4, arg5, arg6); | 2815 | + ret = do_getsockname(arg1, arg2, arg3); |
| 2779 | break; | 2816 | break; |
| 2780 | #endif | 2817 | #endif |
| 2781 | #ifdef TARGET_NR_getsockopt | 2818 | #ifdef TARGET_NR_getsockopt |
| @@ -2785,17 +2822,17 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2785,17 +2822,17 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2785 | #endif | 2822 | #endif |
| 2786 | #ifdef TARGET_NR_listen | 2823 | #ifdef TARGET_NR_listen |
| 2787 | case TARGET_NR_listen: | 2824 | case TARGET_NR_listen: |
| 2788 | - ret = do_socketcallwrapper(SOCKOP_listen, arg1, arg2, arg3, arg4, arg5, arg6); | 2825 | + ret = get_errno(listen(arg1, arg2)); |
| 2789 | break; | 2826 | break; |
| 2790 | #endif | 2827 | #endif |
| 2791 | #ifdef TARGET_NR_recv | 2828 | #ifdef TARGET_NR_recv |
| 2792 | case TARGET_NR_recv: | 2829 | case TARGET_NR_recv: |
| 2793 | - ret = do_socketcallwrapper(SOCKOP_recv, arg1, arg2, arg3, arg4, arg5, arg6); | 2830 | + ret = do_recvfrom(arg1, arg1, arg3, arg4, 0, 0); |
| 2794 | break; | 2831 | break; |
| 2795 | #endif | 2832 | #endif |
| 2796 | #ifdef TARGET_NR_recvfrom | 2833 | #ifdef TARGET_NR_recvfrom |
| 2797 | case TARGET_NR_recvfrom: | 2834 | case TARGET_NR_recvfrom: |
| 2798 | - ret = do_socketcallwrapper(SOCKOP_recvfrom, arg1, arg2, arg3, arg4, arg5, arg6); | 2835 | + ret = do_recvfrom(arg1, arg1, arg3, arg4, arg5, arg6); |
| 2799 | break; | 2836 | break; |
| 2800 | #endif | 2837 | #endif |
| 2801 | #ifdef TARGET_NR_recvmsg | 2838 | #ifdef TARGET_NR_recvmsg |
| @@ -2805,7 +2842,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2805,7 +2842,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2805 | #endif | 2842 | #endif |
| 2806 | #ifdef TARGET_NR_send | 2843 | #ifdef TARGET_NR_send |
| 2807 | case TARGET_NR_send: | 2844 | case TARGET_NR_send: |
| 2808 | - ret = do_socketcallwrapper(SOCKOP_send, arg1, arg2, arg3, arg4, arg5, arg6); | 2845 | + ret = do_sendto(arg1, arg2, arg3, arg4, 0, 0); |
| 2809 | break; | 2846 | break; |
| 2810 | #endif | 2847 | #endif |
| 2811 | #ifdef TARGET_NR_sendmsg | 2848 | #ifdef TARGET_NR_sendmsg |
| @@ -2815,12 +2852,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2815,12 +2852,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2815 | #endif | 2852 | #endif |
| 2816 | #ifdef TARGET_NR_sendto | 2853 | #ifdef TARGET_NR_sendto |
| 2817 | case TARGET_NR_sendto: | 2854 | case TARGET_NR_sendto: |
| 2818 | - ret = do_socketcallwrapper(SOCKOP_sendto, arg1, arg2, arg3, arg4, arg5, arg6); | 2855 | + ret = do_sendto(arg1, arg2, arg3, arg4, arg5, arg6); |
| 2819 | break; | 2856 | break; |
| 2820 | #endif | 2857 | #endif |
| 2821 | #ifdef TARGET_NR_shutdown | 2858 | #ifdef TARGET_NR_shutdown |
| 2822 | case TARGET_NR_shutdown: | 2859 | case TARGET_NR_shutdown: |
| 2823 | - ret = do_socketcallwrapper(SOCKOP_shutdown, arg1, arg2, arg3, arg4, arg5, arg6); | 2860 | + ret = get_errno(shutdown(arg1, arg2)); |
| 2824 | break; | 2861 | break; |
| 2825 | #endif | 2862 | #endif |
| 2826 | #ifdef TARGET_NR_socket | 2863 | #ifdef TARGET_NR_socket |
| @@ -2830,7 +2867,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2830,7 +2867,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2830 | #endif | 2867 | #endif |
| 2831 | #ifdef TARGET_NR_socketpair | 2868 | #ifdef TARGET_NR_socketpair |
| 2832 | case TARGET_NR_socketpair: | 2869 | case TARGET_NR_socketpair: |
| 2833 | - ret = do_socketcallwrapper(SOCKOP_socketpair, arg1, arg2, arg3, arg4, arg5, arg6); | 2870 | + ret = do_socketpair(arg1, arg2, arg3, arg4); |
| 2834 | break; | 2871 | break; |
| 2835 | #endif | 2872 | #endif |
| 2836 | #ifdef TARGET_NR_setsockopt | 2873 | #ifdef TARGET_NR_setsockopt |