Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
mtd
blktrans.h
Go to the documentation of this file.
1
/*
2
* Copyright © 2003-2010 David Woodhouse <
[email protected]
>
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*
18
*/
19
20
#ifndef __MTD_TRANS_H__
21
#define __MTD_TRANS_H__
22
23
#include <
linux/mutex.h
>
24
#include <
linux/kref.h
>
25
#include <
linux/sysfs.h
>
26
27
struct
hd_geometry
;
28
struct
mtd_info
;
29
struct
mtd_blktrans_ops
;
30
struct
file
;
31
struct
inode
;
32
33
struct
mtd_blktrans_dev
{
34
struct
mtd_blktrans_ops
*
tr
;
35
struct
list_head
list
;
36
struct
mtd_info
*
mtd
;
37
struct
mutex
lock
;
38
int
devnum
;
39
bool
bg_stop
;
40
unsigned
long
size
;
41
int
readonly
;
42
int
open
;
43
struct
kref
ref
;
44
struct
gendisk *
disk
;
45
struct
attribute_group
*
disk_attributes
;
46
struct
task_struct
*
thread
;
47
struct
request_queue
*
rq
;
48
spinlock_t
queue_lock
;
49
void
*
priv
;
50
fmode_t
file_mode
;
51
};
52
53
struct
mtd_blktrans_ops
{
54
char
*
name
;
55
int
major
;
56
int
part_bits
;
57
int
blksize
;
58
int
blkshift
;
59
60
/* Access functions */
61
int
(*
readsect
)(
struct
mtd_blktrans_dev
*
dev
,
62
unsigned
long
block
,
char
*
buffer
);
63
int
(*
writesect
)(
struct
mtd_blktrans_dev
*
dev
,
64
unsigned
long
block
,
char
*
buffer
);
65
int
(*
discard
)(
struct
mtd_blktrans_dev
*
dev
,
66
unsigned
long
block
,
unsigned
nr_blocks);
67
void
(*
background
)(
struct
mtd_blktrans_dev
*
dev
);
68
69
/* Block layer ioctls */
70
int
(*
getgeo
)(
struct
mtd_blktrans_dev
*
dev
,
struct
hd_geometry
*geo);
71
int
(*
flush
)(
struct
mtd_blktrans_dev
*
dev
);
72
73
/* Called with mtd_table_mutex held; no race with add/remove */
74
int
(*
open
)(
struct
mtd_blktrans_dev
*
dev
);
75
int
(*
release
)(
struct
mtd_blktrans_dev
*
dev
);
76
77
/* Called on {de,}registration and on subsequent addition/removal
78
of devices, with mtd_table_mutex held. */
79
void
(*
add_mtd
)(
struct
mtd_blktrans_ops
*
tr
,
struct
mtd_info
*mtd);
80
void
(*
remove_dev
)(
struct
mtd_blktrans_dev
*
dev
);
81
82
struct
list_head
devs
;
83
struct
list_head
list
;
84
struct
module
*
owner
;
85
};
86
87
extern
int
register_mtd_blktrans
(
struct
mtd_blktrans_ops
*
tr
);
88
extern
int
deregister_mtd_blktrans
(
struct
mtd_blktrans_ops
*
tr
);
89
extern
int
add_mtd_blktrans_dev
(
struct
mtd_blktrans_dev
*
dev
);
90
extern
int
del_mtd_blktrans_dev
(
struct
mtd_blktrans_dev
*
dev
);
91
extern
int
mtd_blktrans_cease_background
(
struct
mtd_blktrans_dev
*
dev
);
92
93
94
#endif
/* __MTD_TRANS_H__ */
Generated on Thu Jan 10 2013 14:52:01 for Linux Kernel by
1.8.2