diff options
Diffstat (limited to 'drivers/android/binder_internal.h')
| -rw-r--r-- | drivers/android/binder_internal.h | 24 | 
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/android/binder_internal.h b/drivers/android/binder_internal.h index 6cd79011e35d..810c0b84d3f8 100644 --- a/drivers/android/binder_internal.h +++ b/drivers/android/binder_internal.h @@ -155,7 +155,7 @@ enum binder_stat_types {  };  struct binder_stats { -	atomic_t br[_IOC_NR(BR_FAILED_REPLY) + 1]; +	atomic_t br[_IOC_NR(BR_ONEWAY_SPAM_SUSPECT) + 1];  	atomic_t bc[_IOC_NR(BC_REPLY_SG) + 1];  	atomic_t obj_created[BINDER_STAT_COUNT];  	atomic_t obj_deleted[BINDER_STAT_COUNT]; @@ -174,6 +174,7 @@ struct binder_work {  	enum binder_work_type {  		BINDER_WORK_TRANSACTION = 1,  		BINDER_WORK_TRANSACTION_COMPLETE, +		BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT,  		BINDER_WORK_RETURN_ERROR,  		BINDER_WORK_NODE,  		BINDER_WORK_DEAD_BINDER, @@ -367,9 +368,22 @@ struct binder_ref {   *                        (protected by binder_deferred_lock)   * @deferred_work:        bitmap of deferred work to perform   *                        (protected by binder_deferred_lock) + * @outstanding_txns:     number of transactions to be transmitted before + *                        processes in freeze_wait are woken up + *                        (protected by @inner_lock)   * @is_dead:              process is dead and awaiting free   *                        when outstanding transactions are cleaned up   *                        (protected by @inner_lock) + * @is_frozen:            process is frozen and unable to service + *                        binder transactions + *                        (protected by @inner_lock) + * @sync_recv:            process received sync transactions since last frozen + *                        (protected by @inner_lock) + * @async_recv:           process received async transactions since last frozen + *                        (protected by @inner_lock) + * @freeze_wait:          waitqueue of processes waiting for all outstanding + *                        transactions to be processed + *                        (protected by @inner_lock)   * @todo:                 list of work for this process   *                        (protected by @inner_lock)   * @stats:                per-process binder statistics @@ -396,6 +410,8 @@ struct binder_ref {   * @outer_lock:           no nesting under innor or node lock   *                        Lock order: 1) outer, 2) node, 3) inner   * @binderfs_entry:       process-specific binderfs log file + * @oneway_spam_detection_enabled: process enabled oneway spam detection + *                        or not   *   * Bookkeeping structure for binder processes   */ @@ -410,7 +426,12 @@ struct binder_proc {  	struct task_struct *tsk;  	struct hlist_node deferred_work_node;  	int deferred_work; +	int outstanding_txns;  	bool is_dead; +	bool is_frozen; +	bool sync_recv; +	bool async_recv; +	wait_queue_head_t freeze_wait;  	struct list_head todo;  	struct binder_stats stats; @@ -426,6 +447,7 @@ struct binder_proc {  	spinlock_t inner_lock;  	spinlock_t outer_lock;  	struct dentry *binderfs_entry; +	bool oneway_spam_detection_enabled;  };  /**  |