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