Merge "Add accept4() syscall"
This commit is contained in:
commit
bc475bc8d1
9 changed files with 127 additions and 0 deletions
|
@ -238,6 +238,7 @@ int bind(int, struct sockaddr*, int) arm,arm64,mips,mips64,x86_64
|
|||
int connect(int, struct sockaddr*, socklen_t) arm,arm64,mips,mips64,x86_64
|
||||
int listen(int, int) arm,arm64,mips,mips64,x86_64
|
||||
int accept(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
|
||||
int accept4(int, struct sockaddr*, socklen_t*, int) arm,arm64,mips,mips64,x86_64
|
||||
int getsockname(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
|
||||
int getpeername(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
|
||||
int sendto(int, const void*, size_t, int, const struct sockaddr*, socklen_t) arm,arm64,mips,mips64,x86_64
|
||||
|
@ -266,6 +267,7 @@ int setsockopt:socketcall:14(int, int, int, const void*, socklen_t) x
|
|||
int getsockopt:socketcall:15(int, int, int, void*, socklen_t*) x86
|
||||
int sendmsg:socketcall:16(int, const struct msghdr*, unsigned int) x86
|
||||
int recvmsg:socketcall:17(int, struct msghdr*, unsigned int) x86
|
||||
int accept4:socketcall:18(int, struct sockaddr*, socklen_t*, int) x86
|
||||
int recvmmsg:socketcall:19(int, struct mmsghdr*, unsigned int, int, const struct timespec*) x86
|
||||
int sendmmsg:socketcall:20(int, struct mmsghdr*, unsigned int, int) x86
|
||||
|
||||
|
|
14
libc/arch-arm/syscalls/accept4.S
Normal file
14
libc/arch-arm/syscalls/accept4.S
Normal file
|
@ -0,0 +1,14 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
mov ip, r7
|
||||
ldr r7, =__NR_accept4
|
||||
swi #0
|
||||
mov r7, ip
|
||||
cmn r0, #(MAX_ERRNO + 1)
|
||||
bxls lr
|
||||
neg r0, r0
|
||||
b __set_errno
|
||||
END(accept4)
|
21
libc/arch-arm64/syscalls/accept4.S
Normal file
21
libc/arch-arm64/syscalls/accept4.S
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
stp x29, x30, [sp, #-16]!
|
||||
mov x29, sp
|
||||
str x8, [sp, #-16]!
|
||||
|
||||
mov x8, __NR_accept4
|
||||
svc #0
|
||||
|
||||
ldr x8, [sp], #16
|
||||
ldp x29, x30, [sp], #16
|
||||
|
||||
cmn x0, #(MAX_ERRNO + 1)
|
||||
cneg x0, x0, hi
|
||||
b.hi __set_errno
|
||||
|
||||
ret
|
||||
END(accept4)
|
19
libc/arch-mips/syscalls/accept4.S
Normal file
19
libc/arch-mips/syscalls/accept4.S
Normal file
|
@ -0,0 +1,19 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
.set noreorder
|
||||
.cpload t9
|
||||
li v0, __NR_accept4
|
||||
syscall
|
||||
bnez a3, 1f
|
||||
move a0, v0
|
||||
j ra
|
||||
nop
|
||||
1:
|
||||
la t9,__set_errno
|
||||
j t9
|
||||
nop
|
||||
.set reorder
|
||||
END(accept4)
|
25
libc/arch-mips64/syscalls/accept4.S
Normal file
25
libc/arch-mips64/syscalls/accept4.S
Normal file
|
@ -0,0 +1,25 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
.set push
|
||||
.set noreorder
|
||||
li v0, __NR_accept4
|
||||
syscall
|
||||
bnez a3, 1f
|
||||
move a0, v0
|
||||
j ra
|
||||
nop
|
||||
1:
|
||||
move t0, ra
|
||||
bal 2f
|
||||
nop
|
||||
2:
|
||||
.cpsetup ra, t1, 2b
|
||||
LA t9,__set_errno
|
||||
.cpreturn
|
||||
j t9
|
||||
move ra, t0
|
||||
.set pop
|
||||
END(accept4)
|
27
libc/arch-x86/syscalls/accept4.S
Normal file
27
libc/arch-x86/syscalls/accept4.S
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
.cfi_def_cfa_offset 8
|
||||
.cfi_rel_offset ebx, 0
|
||||
.cfi_rel_offset ecx, 4
|
||||
mov $18, %ebx
|
||||
mov %esp, %ecx
|
||||
addl $12, %ecx
|
||||
movl $__NR_socketcall, %eax
|
||||
int $0x80
|
||||
cmpl $-MAX_ERRNO, %eax
|
||||
jb 1f
|
||||
negl %eax
|
||||
pushl %eax
|
||||
call __set_errno
|
||||
addl $4, %esp
|
||||
orl $-1, %eax
|
||||
1:
|
||||
popl %ecx
|
||||
popl %ebx
|
||||
ret
|
||||
END(accept4)
|
17
libc/arch-x86_64/syscalls/accept4.S
Normal file
17
libc/arch-x86_64/syscalls/accept4.S
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* Generated by gensyscalls.py. Do not edit. */
|
||||
|
||||
#include <private/bionic_asm.h>
|
||||
|
||||
ENTRY(accept4)
|
||||
movq %rcx, %r10
|
||||
movl $__NR_accept4, %eax
|
||||
syscall
|
||||
cmpq $-MAX_ERRNO, %rax
|
||||
jb 1f
|
||||
negl %eax
|
||||
movl %eax, %edi
|
||||
call __set_errno
|
||||
orq $-1, %rax
|
||||
1:
|
||||
ret
|
||||
END(accept4)
|
|
@ -298,6 +298,7 @@ __socketcall int setsockopt(int, int, int, const void*, socklen_t);
|
|||
__socketcall int shutdown(int, int);
|
||||
__socketcall int socket(int, int, int);
|
||||
__socketcall int socketpair(int, int, int, int*);
|
||||
__socketcall int accept4(int, struct sockaddr*, socklen_t*, int);
|
||||
|
||||
extern ssize_t send(int, const void*, size_t, int);
|
||||
extern ssize_t recv(int, void*, size_t, int);
|
||||
|
|
|
@ -47,5 +47,6 @@
|
|||
#define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */
|
||||
#define SYS_SENDMSG 16 /* sys_sendmsg(2) */
|
||||
#define SYS_RECVMSG 17 /* sys_recvmsg(2) */
|
||||
#define SYS_ACCEPT4 18 /* sys_accept4(2) */
|
||||
|
||||
#endif /* _SYS_SOCKETCALLS_H_ */
|
||||
|
|
Loading…
Reference in a new issue