OSDN Git Service

ext4.h: add EXT4_FEATURE_INCOMPAT_ENCRYPT am: 1468fbabdd am: de07b52713 am: 1965c510e4
[android-x86/system-extras.git] / ioshark / ioshark.h
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /*
18  * Format of the parsed workload files.
19  * 1) Header
20  * 2) Table of the entries, each entry describes 1 file
21  * 3) Table of IO operations to perform on the files
22  */
23
24 /*
25  * The parsed workload file starts off with the header, which
26  * contains the count of the total # of files that are operated on.
27  * and the total number of IO operations.
28  */
29 struct ioshark_header {
30         int     num_files;
31         int     num_io_operations;
32 };
33
34 /*
35  * After the header, we have a table of #files entries. Each entry
36  * in this table describes 1 file, indexed by fileno and with the
37  * specified size.
38  * Before the tests starts, these files are pre-created.
39  */
40 struct ioshark_file_state {
41         int     fileno; /* 1..num_files, with files name ioshark.<fileno> */
42         size_t  size;
43         int     global_filename_ix;
44 };
45
46 enum file_op {
47         IOSHARK_LSEEK = 0,
48         IOSHARK_LLSEEK,
49         IOSHARK_PREAD64,
50         IOSHARK_PWRITE64,
51         IOSHARK_READ,
52         IOSHARK_WRITE,
53         IOSHARK_MMAP,
54         IOSHARK_MMAP2,
55         IOSHARK_OPEN,
56         IOSHARK_FSYNC,
57         IOSHARK_FDATASYNC,
58         IOSHARK_CLOSE,
59         IOSHARK_MAPPED_PREAD,
60         IOSHARK_MAPPED_PWRITE,
61         IOSHARK_MAX_FILE_OP
62 };
63
64 /* mmap prot flags */
65 #define IOSHARK_PROT_READ       0x1
66 #define IOSHARK_PROT_WRITE      0x2
67
68 /*
69  * Next we have the table of IO operatiosn to perform. Each
70  * IO operation is described by this entry.
71  */
72 struct ioshark_file_operation {
73         /* delta us between previous file op and this */
74         u_int64_t               delta_us;
75         enum file_op            file_op;
76         int                     fileno;
77         union {
78                 struct lseek_args {
79 #define lseek_offset    u.lseek_a.offset
80 #define lseek_action    u.lseek_a.action
81                         off_t   offset;
82                         int action;
83                 } lseek_a;
84                 struct prw_args {
85 #define prw_offset      u.prw_a.offset
86 #define prw_len         u.prw_a.len
87                         off_t   offset;
88                         size_t  len;
89                 } prw_a;
90 #define rw_len          u.rw_a.len
91                 struct rw_args {
92                         size_t  len;
93                 } rw_a;
94 #define mmap_offset     u.mmap_a.offset
95 #define mmap_len        u.mmap_a.len
96 #define mmap_prot       u.mmap_a.prot
97                 struct mmap_args {
98                         off_t   offset;
99                         size_t  len;
100                         int     prot;
101         } mmap_a;
102 #define open_flags      u.open_a.flags
103 #define open_mode       u.open_a.mode
104                 struct open_args {
105                         int     flags;
106                         mode_t  mode;
107                 } open_a;
108         } u;
109 };
110
111 #define MAX_IOSHARK_PATHLEN     512
112
113 /*
114  * Global table of all fileames
115  */
116 struct ioshark_filename_struct
117 {
118         char path[MAX_IOSHARK_PATHLEN];
119 };