internal.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /* internal.h: internal Rx RPC stuff
  2. *
  3. * Copyright (c) 2002 David Howells (dhowells@redhat.com).
  4. */
  5. #ifndef RXRPC_INTERNAL_H
  6. #define RXRPC_INTERNAL_H
  7. #include <linux/compiler.h>
  8. #include <linux/kernel.h>
  9. /*
  10. * debug accounting
  11. */
  12. #if 1
  13. #define __RXACCT_DECL(X) X
  14. #define __RXACCT(X) do { X; } while(0)
  15. #else
  16. #define __RXACCT_DECL(X)
  17. #define __RXACCT(X) do { } while(0)
  18. #endif
  19. __RXACCT_DECL(extern atomic_t rxrpc_transport_count);
  20. __RXACCT_DECL(extern atomic_t rxrpc_peer_count);
  21. __RXACCT_DECL(extern atomic_t rxrpc_connection_count);
  22. __RXACCT_DECL(extern atomic_t rxrpc_call_count);
  23. __RXACCT_DECL(extern atomic_t rxrpc_message_count);
  24. /*
  25. * debug tracing
  26. */
  27. #define kenter(FMT, a...) printk("==> %s("FMT")\n",__FUNCTION__ , ##a)
  28. #define kleave(FMT, a...) printk("<== %s()"FMT"\n",__FUNCTION__ , ##a)
  29. #define kdebug(FMT, a...) printk(" "FMT"\n" , ##a)
  30. #define kproto(FMT, a...) printk("### "FMT"\n" , ##a)
  31. #define knet(FMT, a...) printk(" "FMT"\n" , ##a)
  32. #if 0
  33. #define _enter(FMT, a...) kenter(FMT , ##a)
  34. #define _leave(FMT, a...) kleave(FMT , ##a)
  35. #define _debug(FMT, a...) kdebug(FMT , ##a)
  36. #define _proto(FMT, a...) kproto(FMT , ##a)
  37. #define _net(FMT, a...) knet(FMT , ##a)
  38. #else
  39. #define _enter(FMT, a...) do { if (rxrpc_ktrace) kenter(FMT , ##a); } while(0)
  40. #define _leave(FMT, a...) do { if (rxrpc_ktrace) kleave(FMT , ##a); } while(0)
  41. #define _debug(FMT, a...) do { if (rxrpc_kdebug) kdebug(FMT , ##a); } while(0)
  42. #define _proto(FMT, a...) do { if (rxrpc_kproto) kproto(FMT , ##a); } while(0)
  43. #define _net(FMT, a...) do { if (rxrpc_knet) knet (FMT , ##a); } while(0)
  44. #endif
  45. static inline void rxrpc_discard_my_signals(void)
  46. {
  47. while (signal_pending(current)) {
  48. siginfo_t sinfo;
  49. spin_lock_irq(&current->sighand->siglock);
  50. dequeue_signal(current, &current->blocked, &sinfo);
  51. spin_unlock_irq(&current->sighand->siglock);
  52. }
  53. }
  54. /*
  55. * call.c
  56. */
  57. extern struct list_head rxrpc_calls;
  58. extern struct rw_semaphore rxrpc_calls_sem;
  59. /*
  60. * connection.c
  61. */
  62. extern struct list_head rxrpc_conns;
  63. extern struct rw_semaphore rxrpc_conns_sem;
  64. extern unsigned long rxrpc_conn_timeout;
  65. extern void rxrpc_conn_clearall(struct rxrpc_peer *peer);
  66. /*
  67. * peer.c
  68. */
  69. extern struct list_head rxrpc_peers;
  70. extern struct rw_semaphore rxrpc_peers_sem;
  71. extern unsigned long rxrpc_peer_timeout;
  72. extern void rxrpc_peer_calculate_rtt(struct rxrpc_peer *peer,
  73. struct rxrpc_message *msg,
  74. struct rxrpc_message *resp);
  75. extern void rxrpc_peer_clearall(struct rxrpc_transport *trans);
  76. /*
  77. * proc.c
  78. */
  79. #ifdef CONFIG_PROC_FS
  80. extern int rxrpc_proc_init(void);
  81. extern void rxrpc_proc_cleanup(void);
  82. #endif
  83. /*
  84. * transport.c
  85. */
  86. extern struct list_head rxrpc_proc_transports;
  87. extern struct rw_semaphore rxrpc_proc_transports_sem;
  88. #endif /* RXRPC_INTERNAL_H */