Blame src/plugins/nvdimm.h

Packit 2ba279
#include <glib.h>
Packit 2ba279
#include <blockdev/utils.h>
Packit 2ba279
Packit 2ba279
#ifndef BD_NVDIMM
Packit 2ba279
#define BD_NVDIMM
Packit 2ba279
Packit 2ba279
GQuark bd_nvdimm_error_quark (void);
Packit 2ba279
#define BD_NVDIMM_ERROR bd_nvdimm_error_quark ()
Packit 2ba279
typedef enum {
Packit 2ba279
    BD_NVDIMM_ERROR_NAMESPACE_PARSE,
Packit 2ba279
    BD_NVDIMM_ERROR_NAMESPACE_FAIL,
Packit 2ba279
    BD_NVDIMM_ERROR_NAMESPACE_NOEXIST,
Packit 2ba279
    BD_NVDIMM_ERROR_NAMESPACE_MODE_INVAL,
Packit 2ba279
    BD_NVDIMM_ERROR_TECH_UNAVAIL,
Packit 2ba279
} BDNVDIMMError;
Packit 2ba279
Packit 2ba279
typedef enum {
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_RAW,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_SECTOR,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_MEMORY,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_DAX,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_FSDAX,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_DEVDAX,
Packit 2ba279
    BD_NVDIMM_NAMESPACE_MODE_UNKNOWN
Packit 2ba279
} BDNVDIMMNamespaceMode;
Packit 2ba279
Packit 2ba279
typedef struct BDNVDIMMNamespaceInfo {
Packit 2ba279
    gchar *dev;
Packit 2ba279
    guint64 mode;
Packit 2ba279
    guint64 size;
Packit 2ba279
    gchar *uuid;
Packit 2ba279
    guint64 sector_size;
Packit 2ba279
    gchar *blockdev;
Packit 2ba279
    gboolean enabled;
Packit 2ba279
} BDNVDIMMNamespaceInfo;
Packit 2ba279
Packit 2ba279
void bd_nvdimm_namespace_info_free (BDNVDIMMNamespaceInfo *info);
Packit 2ba279
BDNVDIMMNamespaceInfo* bd_nvdimm_namespace_info_copy (BDNVDIMMNamespaceInfo *info);
Packit 2ba279
Packit 2ba279
typedef enum {
Packit 2ba279
    BD_NVDIMM_TECH_NAMESPACE = 0,
Packit 2ba279
} BDNVDIMMTech;
Packit 2ba279
Packit 2ba279
typedef enum {
Packit 2ba279
    BD_NVDIMM_TECH_MODE_CREATE              = 1 << 0,
Packit 2ba279
    BD_NVDIMM_TECH_MODE_REMOVE              = 1 << 1,
Packit 2ba279
    BD_NVDIMM_TECH_MODE_ACTIVATE_DEACTIVATE = 1 << 2,
Packit 2ba279
    BD_NVDIMM_TECH_MODE_QUERY               = 1 << 3,
Packit 2ba279
    BD_NVDIMM_TECH_MODE_RECONFIGURE         = 1 << 4,
Packit 2ba279
} BDNVDIMMTechMode;
Packit 2ba279
Packit 2ba279
/*
Packit 2ba279
 * If using the plugin as a standalone library, the following functions should
Packit 2ba279
 * be called to:
Packit 2ba279
 *
Packit 2ba279
 * check_deps() - check plugin's dependencies, returning TRUE if satisfied
Packit 2ba279
 * init()       - initialize the plugin, returning TRUE on success
Packit 2ba279
 * close()      - clean after the plugin at the end or if no longer used
Packit 2ba279
 *
Packit 2ba279
 */
Packit 2ba279
gboolean bd_nvdimm_check_deps (void);
Packit 2ba279
gboolean bd_nvdimm_init (void);
Packit 2ba279
void bd_nvdimm_close (void);
Packit 2ba279
Packit 2ba279
gboolean bd_nvdimm_is_tech_avail (BDNVDIMMTech tech, guint64 mode, GError **error);
Packit 2ba279
Packit 2ba279
BDNVDIMMNamespaceMode bd_nvdimm_namespace_get_mode_from_str (const gchar *mode_str, GError **error);
Packit 2ba279
const gchar* bd_nvdimm_namespace_get_mode_str (BDNVDIMMNamespaceMode mode, GError **error);
Packit 2ba279
Packit 2ba279
gchar* bd_nvdimm_namespace_get_devname (const gchar *device, GError **error);
Packit 2ba279
Packit 2ba279
gboolean bd_nvdimm_namespace_enable (const gchar *namespace, const BDExtraArg **extra, GError **error);
Packit 2ba279
gboolean bd_nvdimm_namespace_disable (const gchar *namespace, const BDExtraArg **extra, GError **error);
Packit 2ba279
Packit 2ba279
BDNVDIMMNamespaceInfo* bd_nvdimm_namespace_info (const gchar *namespace, const BDExtraArg **extra, GError **error);
Packit 2ba279
BDNVDIMMNamespaceInfo** bd_nvdimm_list_namespaces (const gchar *bus, const gchar *region, gboolean idle, const BDExtraArg **extra, GError **error);
Packit 2ba279
Packit 2ba279
gboolean bd_nvdimm_namespace_reconfigure (const gchar* namespace, BDNVDIMMNamespaceMode mode, gboolean force, const BDExtraArg **extra, GError** error);
Packit 2ba279
Packit 2ba279
const guint64 *bd_nvdimm_namepace_get_supported_sector_sizes (BDNVDIMMNamespaceMode mode, GError **error);
Packit 2ba279
Packit 2ba279
#endif  /* BD_CRYPTO */