native_handle.h revision 8f13782e7b4a705484d7f97f07513781b82be0dc
1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/* 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * you may not use this file except in compliance with the License. 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * You may obtain a copy of the License at 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * See the License for the specific language governing permissions and 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * limitations under the License. 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */ 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifndef NATIVE_HANDLE_H_ 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define NATIVE_HANDLE_H_ 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 208f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian#include <sys/cdefs.h> 218f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 228f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian__BEGIN_DECLS 238f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttypedef struct 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 268f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian int version; /* sizeof(native_handle_t) */ 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int numFds; /* number of file-descriptors at &data[0] */ 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int numInts; /* number of ints at &data[numFds] */ 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int data[0]; /* numFds + numInts ints */ 308f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian} native_handle_t; 318f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 328f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 338f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian/* keep the old definition for backward source-compatibility */ 348f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopiantypedef native_handle_t native_handle; 358f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 368f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian/* 378f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * native_handle_close 388f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 398f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * closes the file descriptors contained in this native_handle_t 408f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 418f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * return 0 on success, or a negative error code on failure 428f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 438f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian */ 448f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopianint native_handle_close(const native_handle_t* h); 458f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 468f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 478f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian/* 488f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * native_handle_create 498f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 508f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * creates a native_handle_t and initializes it. must be destroyed with 518f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * native_handle_delete(). 528f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 538f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian */ 548f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopiannative_handle_t* native_handle_create(int numFds, int numInts); 558f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 568f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian/* 578f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * native_handle_delete 588f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 598f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * frees a native_handle_t allocated with native_handle_create(). 608f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * This ONLY frees the memory allocated for the native_handle_t, but doesn't 618f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * close the file descriptors; which can be achieved with native_handle_close(). 628f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 638f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * return 0 on success, or a negative error code on failure 648f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian * 658f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian */ 668f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopianint native_handle_delete(native_handle_t* h); 678f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 688f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian 698f13782e7b4a705484d7f97f07513781b82be0dcMathias Agopian__END_DECLS 70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif /* NATIVE_HANDLE_H_ */ 72