sched.h revision 1dc9e472e19acfe6dc7f41e429236e7eef7ceda1
11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/**************************************************************************** 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** This header was automatically generated from a Linux kernel header 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** of the same name, to make information necessary for userspace to 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** call into the kernel available to libc. It contains only constants, 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** structures, and macros generated from the original header, and thus, 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** contains no copyrightable information. 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************/ 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _LINUX_SUNRPC_SCHED_H_ 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _LINUX_SUNRPC_SCHED_H_ 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/timer.h> 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/sunrpc/types.h> 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/spinlock.h> 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/wait.h> 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/workqueue.h> 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/sunrpc/xdr.h> 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_procinfo; 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_message { 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_procinfo * rpc_proc; 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * rpc_argp; 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * rpc_resp; 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_cred * rpc_cred; 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_call_ops; 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_wait_queue; 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_wait { 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct list_head list; 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct list_head links; 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_wait_queue * rpc_waitq; 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_task { 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef RPC_DEBUG 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long tk_magic; 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project atomic_t tk_count; 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct list_head tk_task; 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_clnt * tk_client; 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_rqst * tk_rqstp; 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project int tk_status; 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_message tk_msg; 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 tk_garb_retry; 501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project __u8 tk_cred_retry; 511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long tk_cookie; 531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*tk_timeout_fn)(struct rpc_task *); 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*tk_callback)(struct rpc_task *); 561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*tk_action)(struct rpc_task *); 571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const struct rpc_call_ops *tk_ops; 581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void * tk_calldata; 591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct timer_list tk_timer; 611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long tk_timeout; 621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short tk_flags; 631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char tk_priority : 2; 641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long tk_runstate; 651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct workqueue_struct *tk_workqueue; 661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project union { 671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct work_struct tk_work; 681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct rpc_wait tk_wait; 691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project } u; 701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short tk_timeouts; 721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project size_t tk_bytes_sent; 731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long tk_start; 741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project long tk_rtt; 751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef RPC_DEBUG 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short tk_pid; 781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define tk_auth tk_client->cl_auth 811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define tk_xprt tk_client->cl_xprt 821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define task_for_each(task, pos, head) list_for_each(pos, head) if ((task=list_entry(pos, struct rpc_task, u.tk_wait.list)),1) 841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define task_for_first(task, head) if (!list_empty(head) && ((task=list_entry((head)->next, struct rpc_task, u.tk_wait.list)),1)) 861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define alltask_for_each(task, pos, head) list_for_each(pos, head) if ((task=list_entry(pos, struct rpc_task, tk_task)),1) 881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef void (*rpc_action)(struct rpc_task *); 901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_call_ops { 921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*rpc_call_prepare)(struct rpc_task *, void *); 931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*rpc_call_done)(struct rpc_task *, void *); 941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void (*rpc_release)(void *); 951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_ASYNC 0x0001 981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_SWAPPER 0x0002 991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_CHILD 0x0008 1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_CALL_MAJORSEEN 0x0020 1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_ROOTCREDS 0x0040 1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_DYNAMIC 0x0080 1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_KILLED 0x0100 1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_SOFT 0x0200 1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_NOINTR 0x0400 1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_ASYNC(t) ((t)->tk_flags & RPC_TASK_ASYNC) 1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_CHILD(t) ((t)->tk_flags & RPC_TASK_CHILD) 1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER) 1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS) 1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED) 1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_DO_CALLBACK(t) ((t)->tk_callback != NULL) 1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT) 1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_UNINTERRUPTIBLE(t) ((t)->tk_flags & RPC_TASK_NOINTR) 1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_RUNNING 0 1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_QUEUED 1 1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_WAKEUP 2 1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_HAS_TIMER 3 1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_TASK_ACTIVE 4 1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_RUNNING(t) (test_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) 1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_set_running(t) (set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) 1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_test_and_set_running(t) (test_and_set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) 1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_clear_running(t) do { smp_mb__before_clear_bit(); clear_bit(RPC_TASK_RUNNING, &(t)->tk_runstate); smp_mb__after_clear_bit(); } while (0) 1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_QUEUED(t) (test_bit(RPC_TASK_QUEUED, &(t)->tk_runstate)) 1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_set_queued(t) (set_bit(RPC_TASK_QUEUED, &(t)->tk_runstate)) 1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_clear_queued(t) do { smp_mb__before_clear_bit(); clear_bit(RPC_TASK_QUEUED, &(t)->tk_runstate); smp_mb__after_clear_bit(); } while (0) 1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_start_wakeup(t) (test_and_set_bit(RPC_TASK_WAKEUP, &(t)->tk_runstate) == 0) 1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_finish_wakeup(t) do { smp_mb__before_clear_bit(); clear_bit(RPC_TASK_WAKEUP, &(t)->tk_runstate); smp_mb__after_clear_bit(); } while (0) 1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) 1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_set_active(t) (set_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) 1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define rpc_clear_active(t) do { smp_mb__before_clear_bit(); clear_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate); smp_mb__after_clear_bit(); } while(0) 1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_PRIORITY_LOW 0 1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_PRIORITY_NORMAL 1 1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_PRIORITY_HIGH 2 1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_NR_PRIORITY (RPC_PRIORITY_HIGH+1) 1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_wait_queue { 1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project spinlock_t lock; 1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project struct list_head tasks[RPC_NR_PRIORITY]; 1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned long cookie; 1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char maxpriority; 1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char priority; 1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char count; 1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned char nr; 1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project unsigned short qlen; 1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef RPC_DEBUG 1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char * name; 1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project}; 1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_BATCH_COUNT 16 1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef RPC_DEBUG 1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_WAITQ_INIT(var,qname) { .lock = SPIN_LOCK_UNLOCKED, .tasks = { [0] = LIST_HEAD_INIT(var.tasks[0]), [1] = LIST_HEAD_INIT(var.tasks[1]), [2] = LIST_HEAD_INIT(var.tasks[2]), }, } 1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else 1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_WAITQ_INIT(var,qname) { .lock = SPIN_LOCK_UNLOCKED, .tasks = { [0] = LIST_HEAD_INIT(var.tasks[0]), [1] = LIST_HEAD_INIT(var.tasks[1]), [2] = LIST_HEAD_INIT(var.tasks[2]), }, .name = qname, } 1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_WAITQ(var,qname) struct rpc_wait_queue var = RPC_WAITQ_INIT(var,qname) 1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define RPC_IS_PRIORITY(q) ((q)->maxpriority > 0) 1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_task *rpc_new_task(struct rpc_clnt *, int flags, 1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const struct rpc_call_ops *ops, void *data); 1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags, 1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const struct rpc_call_ops *ops, void *data); 1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_task *rpc_new_child(struct rpc_clnt *, struct rpc_task *parent); 1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectstruct rpc_task *rpc_wake_up_next(struct rpc_wait_queue *); 1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef RPC_DEBUG 1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef RPC_DEBUG 1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 183