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