Switch to bionic's pidfd_open.

Bionic's syscall wrappers contain instrumentation so that libraries like
fdtrack can hook them at runtime when diagnosing fd leaks.

Bug: http://b/172518739
Test: treehugger
Change-Id: I9b2e07f6be9463a37cd4e51d914d93ffc89907fc
This commit is contained in:
Josh Gao
2021-03-18 17:12:18 -07:00
parent 26ba4d0d09
commit 4eb201e40c

View File

@@ -52,6 +52,7 @@
#include <string.h>
#include <sys/epoll.h>
#include <sys/errno.h>
#include <sys/pidfd.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/syscall.h>
@@ -1290,14 +1291,8 @@ void android_os_Process_removeAllProcessGroups(JNIEnv* env, jobject clazz)
return removeAllProcessGroups();
}
// Wrapper function to the syscall pidfd_open, which creates a file
// descriptor that refers to the process whose PID is specified in pid.
static inline int sys_pidfd_open(pid_t pid, unsigned int flags) {
return syscall(__NR_pidfd_open, pid, flags);
}
static jint android_os_Process_nativePidFdOpen(JNIEnv* env, jobject, jint pid, jint flags) {
int fd = sys_pidfd_open(pid, flags);
int fd = pidfd_open(pid, flags);
if (fd < 0) {
jniThrowErrnoException(env, "nativePidFdOpen", errno);
return -1;