mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
![Thomas Gleixner](/assets/img/avatar_default.png)
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 51 franklin st fifth floor boston ma 02110 1301 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 50 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190523091649.499889647@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
81 lines
2.1 KiB
C
81 lines
2.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright © 2003-2010 David Woodhouse <dwmw2@infradead.org>
|
|
*/
|
|
|
|
#ifndef __MTD_TRANS_H__
|
|
#define __MTD_TRANS_H__
|
|
|
|
#include <linux/mutex.h>
|
|
#include <linux/kref.h>
|
|
#include <linux/sysfs.h>
|
|
|
|
struct hd_geometry;
|
|
struct mtd_info;
|
|
struct mtd_blktrans_ops;
|
|
struct file;
|
|
struct inode;
|
|
|
|
struct mtd_blktrans_dev {
|
|
struct mtd_blktrans_ops *tr;
|
|
struct list_head list;
|
|
struct mtd_info *mtd;
|
|
struct mutex lock;
|
|
int devnum;
|
|
bool bg_stop;
|
|
unsigned long size;
|
|
int readonly;
|
|
int open;
|
|
struct kref ref;
|
|
struct gendisk *disk;
|
|
struct attribute_group *disk_attributes;
|
|
struct request_queue *rq;
|
|
struct list_head rq_list;
|
|
struct blk_mq_tag_set *tag_set;
|
|
spinlock_t queue_lock;
|
|
void *priv;
|
|
fmode_t file_mode;
|
|
};
|
|
|
|
struct mtd_blktrans_ops {
|
|
char *name;
|
|
int major;
|
|
int part_bits;
|
|
int blksize;
|
|
int blkshift;
|
|
|
|
/* Access functions */
|
|
int (*readsect)(struct mtd_blktrans_dev *dev,
|
|
unsigned long block, char *buffer);
|
|
int (*writesect)(struct mtd_blktrans_dev *dev,
|
|
unsigned long block, char *buffer);
|
|
int (*discard)(struct mtd_blktrans_dev *dev,
|
|
unsigned long block, unsigned nr_blocks);
|
|
void (*background)(struct mtd_blktrans_dev *dev);
|
|
|
|
/* Block layer ioctls */
|
|
int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
|
|
int (*flush)(struct mtd_blktrans_dev *dev);
|
|
|
|
/* Called with mtd_table_mutex held; no race with add/remove */
|
|
int (*open)(struct mtd_blktrans_dev *dev);
|
|
void (*release)(struct mtd_blktrans_dev *dev);
|
|
|
|
/* Called on {de,}registration and on subsequent addition/removal
|
|
of devices, with mtd_table_mutex held. */
|
|
void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
|
|
void (*remove_dev)(struct mtd_blktrans_dev *dev);
|
|
|
|
struct list_head devs;
|
|
struct list_head list;
|
|
struct module *owner;
|
|
};
|
|
|
|
extern int register_mtd_blktrans(struct mtd_blktrans_ops *tr);
|
|
extern int deregister_mtd_blktrans(struct mtd_blktrans_ops *tr);
|
|
extern int add_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
|
|
extern int del_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
|
|
extern int mtd_blktrans_cease_background(struct mtd_blktrans_dev *dev);
|
|
|
|
|
|
#endif /* __MTD_TRANS_H__ */
|