#include <linux/libnvdimm.h>
#include <linux/suspend.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/blkdev.h>
#include <linux/device.h>
#include <linux/ctype.h>
#include <linux/ndctl.h>
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/io.h>
#include "nd-core.h"
#include "nd.h"
LIST_HEAD(…);
DEFINE_MUTEX(…) …;
void nvdimm_bus_lock(struct device *dev)
{ … }
EXPORT_SYMBOL(…);
void nvdimm_bus_unlock(struct device *dev)
{ … }
EXPORT_SYMBOL(…);
bool is_nvdimm_bus_locked(struct device *dev)
{ … }
EXPORT_SYMBOL(…);
struct nvdimm_map { … };
static struct nvdimm_map *find_nvdimm_map(struct device *dev,
resource_size_t offset)
{ … }
static struct nvdimm_map *alloc_nvdimm_map(struct device *dev,
resource_size_t offset, size_t size, unsigned long flags)
{ … }
static void nvdimm_map_release(struct kref *kref)
{ … }
static void nvdimm_map_put(void *data)
{ … }
void *devm_nvdimm_memremap(struct device *dev, resource_size_t offset,
size_t size, unsigned long flags)
{ … }
EXPORT_SYMBOL_GPL(…);
u64 nd_fletcher64(void *addr, size_t len, bool le)
{ … }
EXPORT_SYMBOL_GPL(…);
struct nvdimm_bus_descriptor *to_nd_desc(struct nvdimm_bus *nvdimm_bus)
{ … }
EXPORT_SYMBOL_GPL(…);
struct device *to_nvdimm_bus_dev(struct nvdimm_bus *nvdimm_bus)
{ … }
EXPORT_SYMBOL_GPL(…);
int nd_uuid_store(struct device *dev, uuid_t **uuid_out, const char *buf,
size_t len)
{ … }
ssize_t nd_size_select_show(unsigned long current_size,
const unsigned long *supported, char *buf)
{ … }
ssize_t nd_size_select_store(struct device *dev, const char *buf,
unsigned long *current_size, const unsigned long *supported)
{ … }
static ssize_t commands_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(commands);
static const char *nvdimm_bus_provider(struct nvdimm_bus *nvdimm_bus)
{ … }
static ssize_t provider_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(provider);
static int flush_namespaces(struct device *dev, void *data)
{ … }
static int flush_regions_dimms(struct device *dev, void *data)
{ … }
static ssize_t wait_probe_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(wait_probe);
static struct attribute *nvdimm_bus_attributes[] = …;
static const struct attribute_group nvdimm_bus_attribute_group = …;
static ssize_t capability_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(capability);
static ssize_t activate_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static int exec_firmware_activate(void *data)
{ … }
static ssize_t activate_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{ … }
static DEVICE_ATTR_ADMIN_RW(activate);
static umode_t nvdimm_bus_firmware_visible(struct kobject *kobj, struct attribute *a, int n)
{ … }
static struct attribute *nvdimm_bus_firmware_attributes[] = …;
static const struct attribute_group nvdimm_bus_firmware_attribute_group = …;
const struct attribute_group *nvdimm_bus_attribute_groups[] = …;
int nvdimm_bus_add_badrange(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
{ … }
EXPORT_SYMBOL_GPL(…);
static __init int libnvdimm_init(void)
{ … }
static __exit void libnvdimm_exit(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
subsys_initcall(libnvdimm_init);
module_exit(libnvdimm_exit);