Loading include/cutils/native_handle.h +15 −0 Original line number Diff line number Diff line Loading @@ -17,10 +17,17 @@ #ifndef NATIVE_HANDLE_H_ #define NATIVE_HANDLE_H_ #include <stdalign.h> #ifdef __cplusplus extern "C" { #endif /* Declare a char array for use with native_handle_init */ #define NATIVE_HANDLE_DECLARE_STORAGE(name, maxFds, maxInts) \ alignas(native_handle_t) char name[ \ sizeof(native_handle_t) + sizeof(int) * (maxFds + maxInts)] typedef struct native_handle { int version; /* sizeof(native_handle_t) */ Loading @@ -46,6 +53,14 @@ typedef struct native_handle */ int native_handle_close(const native_handle_t* h); /* * native_handle_init * * Initializes a native_handle_t from storage. storage must be declared with * NATIVE_HANDLE_DECLARE_STORAGE. numFds and numInts must not respectively * exceed maxFds and maxInts used to declare the storage. */ native_handle_t* native_handle_init(char* storage, int numFds, int numInts); /* * native_handle_create Loading libcutils/native_handle.c +14 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,20 @@ static const int kMaxNativeFds = 1024; static const int kMaxNativeInts = 1024; native_handle_t* native_handle_init(char* storage, int numFds, int numInts) { if ((uintptr_t) storage % alignof(native_handle_t)) { return NULL; } native_handle_t* handle = (native_handle_t*) storage; handle->version = sizeof(native_handle_t); handle->numFds = numFds; handle->numInts = numInts; return handle; } native_handle_t* native_handle_create(int numFds, int numInts) { if (numFds < 0 || numInts < 0 || numFds > kMaxNativeFds || numInts > kMaxNativeInts) { Loading Loading
include/cutils/native_handle.h +15 −0 Original line number Diff line number Diff line Loading @@ -17,10 +17,17 @@ #ifndef NATIVE_HANDLE_H_ #define NATIVE_HANDLE_H_ #include <stdalign.h> #ifdef __cplusplus extern "C" { #endif /* Declare a char array for use with native_handle_init */ #define NATIVE_HANDLE_DECLARE_STORAGE(name, maxFds, maxInts) \ alignas(native_handle_t) char name[ \ sizeof(native_handle_t) + sizeof(int) * (maxFds + maxInts)] typedef struct native_handle { int version; /* sizeof(native_handle_t) */ Loading @@ -46,6 +53,14 @@ typedef struct native_handle */ int native_handle_close(const native_handle_t* h); /* * native_handle_init * * Initializes a native_handle_t from storage. storage must be declared with * NATIVE_HANDLE_DECLARE_STORAGE. numFds and numInts must not respectively * exceed maxFds and maxInts used to declare the storage. */ native_handle_t* native_handle_init(char* storage, int numFds, int numInts); /* * native_handle_create Loading
libcutils/native_handle.c +14 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,20 @@ static const int kMaxNativeFds = 1024; static const int kMaxNativeInts = 1024; native_handle_t* native_handle_init(char* storage, int numFds, int numInts) { if ((uintptr_t) storage % alignof(native_handle_t)) { return NULL; } native_handle_t* handle = (native_handle_t*) storage; handle->version = sizeof(native_handle_t); handle->numFds = numFds; handle->numInts = numInts; return handle; } native_handle_t* native_handle_create(int numFds, int numInts) { if (numFds < 0 || numInts < 0 || numFds > kMaxNativeFds || numInts > kMaxNativeInts) { Loading