1/*
2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @file flat_obj.h
18 *
19 * @brief Defines types and structures for reading and writing objects in parcels.
20 *
21 * Types are platform-sensitive. Structures are only used for checking the
22 * validity of data in parcels, not for saving and using of data.
23 */
24#ifndef UTILS_BASE_FLAT_OBJ_H
25#define UTILS_BASE_FLAT_OBJ_H
26
27#include <sys/types.h>
28
29#ifndef IOS_PLATFORM
30#include <linux/types.h>
31#else
32    typedef u_int32_t __u32;
33    typedef u_int64_t __u64;
34#endif
35
36#ifdef BINDER_IPC_32BIT
37    typedef __u32 binder_size_t;
38    typedef __u32 binder_uintptr_t;
39#else
40    typedef __u64 binder_size_t;
41    typedef __u64 binder_uintptr_t;
42#endif
43
44struct parcel_binder_object_header {
45    __u32 type;
46};
47struct parcel_flat_binder_object {
48    struct parcel_binder_object_header hdr;
49    __u32 flags;
50    union {
51        binder_uintptr_t binder;
52        __u32 handle;
53    };
54    binder_uintptr_t cookie;
55};
56
57#endif
58