#include <linux/hdreg.h>
#include <linux/blk-mq.h>
#include <linux/netdevice.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/bitmap.h>
#include <linux/kdev_t.h>
#include <linux/moduleparam.h>
#include <linux/string.h>
#include "aoe.h"
static void freetgt(struct aoedev *d, struct aoetgt *t);
static void skbpoolfree(struct aoedev *d);
static int aoe_dyndevs = …;
module_param(aoe_dyndevs, int, 0644);
MODULE_PARM_DESC(…) …;
static struct aoedev *devlist;
static DEFINE_SPINLOCK(devlist_lock);
#define N_DEVS …
static DEFINE_SPINLOCK(used_minors_lock);
static DECLARE_BITMAP(used_minors, N_DEVS);
static int
minor_get_dyn(ulong *sysminor)
{ … }
static int
minor_get_static(ulong *sysminor, ulong aoemaj, int aoemin)
{ … }
static int
minor_get(ulong *sysminor, ulong aoemaj, int aoemin)
{ … }
static void
minor_free(ulong minor)
{ … }
void
aoedev_put(struct aoedev *d)
{ … }
static void
dummy_timer(struct timer_list *t)
{ … }
static void
aoe_failip(struct aoedev *d)
{ … }
static void
downdev_frame(struct list_head *pos)
{ … }
void
aoedev_downdev(struct aoedev *d)
{ … }
static int
user_req(char *s, size_t slen, struct aoedev *d)
{ … }
static void
freedev(struct aoedev *d)
{ … }
enum flush_parms { … };
static int
flush(const char __user *str, size_t cnt, int exiting)
{ … }
int
aoedev_flush(const char __user *str, size_t cnt)
{ … }
static void
skbfree(struct sk_buff *skb)
{ … }
static void
skbpoolfree(struct aoedev *d)
{ … }
struct aoedev *
aoedev_by_aoeaddr(ulong maj, int min, int do_alloc)
{ … }
static void
freetgt(struct aoedev *d, struct aoetgt *t)
{ … }
void
aoedev_exit(void)
{ … }
int __init
aoedev_init(void)
{ … }