blob: eef07aef2d622a7c06eee9550737f976c42de00b [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _BINDER_MODULE_H_
#define _BINDER_MODULE_H_
/* obtain structures and constants from the kernel header */
// TODO(b/31559095): bionic on host
#ifndef __ANDROID__
#define __packed __attribute__((__packed__))
#endif
// TODO(b/31559095): bionic on host
#if defined(B_PACK_CHARS) && !defined(_UAPI_LINUX_BINDER_H)
#undef B_PACK_CHARS
#endif
#include <linux/android/binder.h>
#include <sys/ioctl.h>
#ifndef BR_FROZEN_REPLY
// Temporary definition of BR_FROZEN_REPLY. For production
// this will come from UAPI binder.h
#define BR_FROZEN_REPLY _IO('r', 18)
#endif // BR_FROZEN_REPLY
#ifndef BINDER_FREEZE
/*
* Temporary definitions for freeze support. For the final version
* these will be defined in the UAPI binder.h file from upstream kernel.
*/
#define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
struct binder_freeze_info {
//
// Group-leader PID of process to be frozen
//
uint32_t pid;
//
// Enable(1) / Disable(0) freeze for given PID
//
uint32_t enable;
//
// Timeout to wait for transactions to drain.
// 0: don't wait (ioctl will return EAGAIN if not drained)
// N: number of ms to wait
uint32_t timeout_ms;
};
#endif // BINDER_FREEZE
#ifndef BINDER_GET_FROZEN_INFO
#define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
struct binder_frozen_status_info {
//
// Group-leader PID of process to be queried
//
__u32 pid;
//
// Indicates whether the process has received any sync calls since last
// freeze (cleared at freeze/unfreeze)
// bit 0: received sync transaction after being frozen
// bit 1: new pending sync transaction during freezing
//
__u32 sync_recv;
//
// Indicates whether the process has received any async calls since last
// freeze (cleared at freeze/unfreeze)
//
__u32 async_recv;
};
#endif // BINDER_GET_FROZEN_INFO
#ifndef BR_ONEWAY_SPAM_SUSPECT
// Temporary definition of BR_ONEWAY_SPAM_SUSPECT. For production
// this will come from UAPI binder.h
#define BR_ONEWAY_SPAM_SUSPECT _IO('r', 19)
#endif // BR_ONEWAY_SPAM_SUSPECT
#ifndef BINDER_ENABLE_ONEWAY_SPAM_DETECTION
/*
* Temporary definitions for oneway spam detection support. For the final version
* these will be defined in the UAPI binder.h file from upstream kernel.
*/
#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
#endif // BINDER_ENABLE_ONEWAY_SPAM_DETECTION
#ifndef BR_TRANSACTION_PENDING_FROZEN
// Temporary definition of BR_TRANSACTION_PENDING_FROZEN until UAPI binder.h includes it.
#define BR_TRANSACTION_PENDING_FROZEN _IO('r', 20)
#endif // BR_TRANSACTION_PENDING_FROZEN
#endif // _BINDER_MODULE_H_