root/drivers/dax/dax-private.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. to_dev_dax

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright(c) 2016 Intel Corporation. All rights reserved.
   4  */
   5 #ifndef __DAX_PRIVATE_H__
   6 #define __DAX_PRIVATE_H__
   7 
   8 #include <linux/device.h>
   9 #include <linux/cdev.h>
  10 
  11 /* private routines between core files */
  12 struct dax_device;
  13 struct dax_device *inode_dax(struct inode *inode);
  14 struct inode *dax_inode(struct dax_device *dax_dev);
  15 int dax_bus_init(void);
  16 void dax_bus_exit(void);
  17 
  18 /**
  19  * struct dax_region - mapping infrastructure for dax devices
  20  * @id: kernel-wide unique region for a memory range
  21  * @target_node: effective numa node if this memory range is onlined
  22  * @kref: to pin while other agents have a need to do lookups
  23  * @dev: parent device backing this region
  24  * @align: allocation and mapping alignment for child dax devices
  25  * @res: physical address range of the region
  26  * @pfn_flags: identify whether the pfns are paged back or not
  27  */
  28 struct dax_region {
  29         int id;
  30         int target_node;
  31         struct kref kref;
  32         struct device *dev;
  33         unsigned int align;
  34         struct resource res;
  35         unsigned long pfn_flags;
  36 };
  37 
  38 /**
  39  * struct dev_dax - instance data for a subdivision of a dax region, and
  40  * data while the device is activated in the driver.
  41  * @region - parent region
  42  * @dax_dev - core dax functionality
  43  * @target_node: effective numa node if dev_dax memory range is onlined
  44  * @dev - device core
  45  * @pgmap - pgmap for memmap setup / lifetime (driver owned)
  46  * @dax_mem_res: physical address range of hotadded DAX memory
  47  */
  48 struct dev_dax {
  49         struct dax_region *region;
  50         struct dax_device *dax_dev;
  51         int target_node;
  52         struct device dev;
  53         struct dev_pagemap pgmap;
  54         struct resource *dax_kmem_res;
  55 };
  56 
  57 static inline struct dev_dax *to_dev_dax(struct device *dev)
  58 {
  59         return container_of(dev, struct dev_dax, dev);
  60 }
  61 #endif

/* [<][>][^][v][top][bottom][index][help] */