| /* internal.h: internal Rx RPC stuff | |
| * | |
| * Copyright (c) 2002 David Howells (dhowells@redhat.com). | |
| */ | |
| #ifndef RXRPC_INTERNAL_H | |
| #define RXRPC_INTERNAL_H | |
| #include <linux/compiler.h> | |
| #include <linux/kernel.h> | |
| /* | |
| * debug accounting | |
| */ | |
| #if 1 | |
| #define __RXACCT_DECL(X) X | |
| #define __RXACCT(X) do { X; } while(0) | |
| #else | |
| #define __RXACCT_DECL(X) | |
| #define __RXACCT(X) do { } while(0) | |
| #endif | |
| __RXACCT_DECL(extern atomic_t rxrpc_transport_count); | |
| __RXACCT_DECL(extern atomic_t rxrpc_peer_count); | |
| __RXACCT_DECL(extern atomic_t rxrpc_connection_count); | |
| __RXACCT_DECL(extern atomic_t rxrpc_call_count); | |
| __RXACCT_DECL(extern atomic_t rxrpc_message_count); | |
| /* | |
| * debug tracing | |
| */ | |
| #define kenter(FMT, a...) printk("==> %s("FMT")\n",__FUNCTION__ , ##a) | |
| #define kleave(FMT, a...) printk("<== %s()"FMT"\n",__FUNCTION__ , ##a) | |
| #define kdebug(FMT, a...) printk(" "FMT"\n" , ##a) | |
| #define kproto(FMT, a...) printk("### "FMT"\n" , ##a) | |
| #define knet(FMT, a...) printk(" "FMT"\n" , ##a) | |
| #if 0 | |
| #define _enter(FMT, a...) kenter(FMT , ##a) | |
| #define _leave(FMT, a...) kleave(FMT , ##a) | |
| #define _debug(FMT, a...) kdebug(FMT , ##a) | |
| #define _proto(FMT, a...) kproto(FMT , ##a) | |
| #define _net(FMT, a...) knet(FMT , ##a) | |
| #else | |
| #define _enter(FMT, a...) do { if (rxrpc_ktrace) kenter(FMT , ##a); } while(0) | |
| #define _leave(FMT, a...) do { if (rxrpc_ktrace) kleave(FMT , ##a); } while(0) | |
| #define _debug(FMT, a...) do { if (rxrpc_kdebug) kdebug(FMT , ##a); } while(0) | |
| #define _proto(FMT, a...) do { if (rxrpc_kproto) kproto(FMT , ##a); } while(0) | |
| #define _net(FMT, a...) do { if (rxrpc_knet) knet (FMT , ##a); } while(0) | |
| #endif | |
| static inline void rxrpc_discard_my_signals(void) | |
| { | |
| while (signal_pending(current)) { | |
| siginfo_t sinfo; | |
| spin_lock_irq(¤t->sighand->siglock); | |
| dequeue_signal(current, ¤t->blocked, &sinfo); | |
| spin_unlock_irq(¤t->sighand->siglock); | |
| } | |
| } | |
| /* | |
| * call.c | |
| */ | |
| extern struct list_head rxrpc_calls; | |
| extern struct rw_semaphore rxrpc_calls_sem; | |
| /* | |
| * connection.c | |
| */ | |
| extern struct list_head rxrpc_conns; | |
| extern struct rw_semaphore rxrpc_conns_sem; | |
| extern unsigned long rxrpc_conn_timeout; | |
| extern void rxrpc_conn_clearall(struct rxrpc_peer *peer); | |
| /* | |
| * peer.c | |
| */ | |
| extern struct list_head rxrpc_peers; | |
| extern struct rw_semaphore rxrpc_peers_sem; | |
| extern unsigned long rxrpc_peer_timeout; | |
| extern void rxrpc_peer_calculate_rtt(struct rxrpc_peer *peer, | |
| struct rxrpc_message *msg, | |
| struct rxrpc_message *resp); | |
| extern void rxrpc_peer_clearall(struct rxrpc_transport *trans); | |
| /* | |
| * proc.c | |
| */ | |
| #ifdef CONFIG_PROC_FS | |
| extern int rxrpc_proc_init(void); | |
| extern void rxrpc_proc_cleanup(void); | |
| #endif | |
| /* | |
| * transport.c | |
| */ | |
| extern struct list_head rxrpc_proc_transports; | |
| extern struct rw_semaphore rxrpc_proc_transports_sem; | |
| #endif /* RXRPC_INTERNAL_H */ |