#define pr_fmt(fmt) …
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/circ_buf.h>
#include <linux/spinlock_types.h>
#include <net/sock.h>
#include <net/af_rxrpc.h>
#include "ar-internal.h"
const char *const rxrpc_call_states[NR__RXRPC_CALL_STATES] = …;
const char *const rxrpc_call_completions[NR__RXRPC_CALL_COMPLETIONS] = …;
struct kmem_cache *rxrpc_call_jar;
static DEFINE_SEMAPHORE(rxrpc_call_limiter, 1000);
static DEFINE_SEMAPHORE(rxrpc_kernel_call_limiter, 1000);
void rxrpc_poke_call(struct rxrpc_call *call, enum rxrpc_call_poke_trace what)
{ … }
static void rxrpc_call_timer_expired(struct timer_list *t)
{ … }
static struct lock_class_key rxrpc_call_user_mutex_lock_class_key;
static void rxrpc_destroy_call(struct work_struct *);
struct rxrpc_call *rxrpc_find_call_by_user_ID(struct rxrpc_sock *rx,
unsigned long user_call_ID)
{ … }
struct rxrpc_call *rxrpc_alloc_call(struct rxrpc_sock *rx, gfp_t gfp,
unsigned int debug_id)
{ … }
static struct rxrpc_call *rxrpc_alloc_client_call(struct rxrpc_sock *rx,
struct rxrpc_conn_parameters *cp,
struct rxrpc_call_params *p,
gfp_t gfp,
unsigned int debug_id)
{ … }
void rxrpc_start_call_timer(struct rxrpc_call *call)
{ … }
static struct semaphore *rxrpc_get_call_slot(struct rxrpc_call_params *p, gfp_t gfp)
{ … }
static void rxrpc_put_call_slot(struct rxrpc_call *call)
{ … }
static int rxrpc_connect_call(struct rxrpc_call *call, gfp_t gfp)
{ … }
struct rxrpc_call *rxrpc_new_client_call(struct rxrpc_sock *rx,
struct rxrpc_conn_parameters *cp,
struct rxrpc_call_params *p,
gfp_t gfp,
unsigned int debug_id)
__releases(&rx->sk.sk_lock.slock)
__acquires(&call->user_mutex)
{ … }
void rxrpc_incoming_call(struct rxrpc_sock *rx,
struct rxrpc_call *call,
struct sk_buff *skb)
{ … }
void rxrpc_see_call(struct rxrpc_call *call, enum rxrpc_call_trace why)
{ … }
struct rxrpc_call *rxrpc_try_get_call(struct rxrpc_call *call,
enum rxrpc_call_trace why)
{ … }
void rxrpc_get_call(struct rxrpc_call *call, enum rxrpc_call_trace why)
{ … }
static void rxrpc_cleanup_ring(struct rxrpc_call *call)
{ … }
void rxrpc_release_call(struct rxrpc_sock *rx, struct rxrpc_call *call)
{ … }
void rxrpc_release_calls_on_socket(struct rxrpc_sock *rx)
{ … }
void rxrpc_put_call(struct rxrpc_call *call, enum rxrpc_call_trace why)
{ … }
static void rxrpc_rcu_free_call(struct rcu_head *rcu)
{ … }
static void rxrpc_destroy_call(struct work_struct *work)
{ … }
void rxrpc_cleanup_call(struct rxrpc_call *call)
{ … }
void rxrpc_destroy_all_calls(struct rxrpc_net *rxnet)
{ … }