1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _LINUX_ELEVATOR_H
20#define _LINUX_ELEVATOR_H
21typedef int (elevator_merge_fn) (request_queue_t *, struct request **,
22 struct bio *);
23/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24typedef void (elevator_merge_req_fn) (request_queue_t *, struct request *, struct request *);
25typedef void (elevator_merged_fn) (request_queue_t *, struct request *);
26typedef int (elevator_dispatch_fn) (request_queue_t *, int);
27typedef void (elevator_add_req_fn) (request_queue_t *, struct request *);
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29typedef int (elevator_queue_empty_fn) (request_queue_t *);
30typedef struct request *(elevator_request_list_fn) (request_queue_t *, struct request *);
31typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *);
32typedef int (elevator_may_queue_fn) (request_queue_t *, int, struct bio *);
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34typedef int (elevator_set_req_fn) (request_queue_t *, struct request *, struct bio *, gfp_t);
35typedef void (elevator_put_req_fn) (request_queue_t *, struct request *);
36typedef void (elevator_activate_req_fn) (request_queue_t *, struct request *);
37typedef void (elevator_deactivate_req_fn) (request_queue_t *, struct request *);
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39typedef void *(elevator_init_fn) (request_queue_t *, elevator_t *);
40typedef void (elevator_exit_fn) (elevator_t *);
41struct elevator_ops
42{
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44 elevator_merge_fn *elevator_merge_fn;
45 elevator_merged_fn *elevator_merged_fn;
46 elevator_merge_req_fn *elevator_merge_req_fn;
47 elevator_dispatch_fn *elevator_dispatch_fn;
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49 elevator_add_req_fn *elevator_add_req_fn;
50 elevator_activate_req_fn *elevator_activate_req_fn;
51 elevator_deactivate_req_fn *elevator_deactivate_req_fn;
52 elevator_queue_empty_fn *elevator_queue_empty_fn;
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 elevator_completed_req_fn *elevator_completed_req_fn;
55 elevator_request_list_fn *elevator_former_req_fn;
56 elevator_request_list_fn *elevator_latter_req_fn;
57 elevator_set_req_fn *elevator_set_req_fn;
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59 elevator_put_req_fn *elevator_put_req_fn;
60 elevator_may_queue_fn *elevator_may_queue_fn;
61 elevator_init_fn *elevator_init_fn;
62 elevator_exit_fn *elevator_exit_fn;
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64 void (*trim)(struct io_context *);
65};
66#define ELV_NAME_MAX (16)
67struct elv_fs_entry {
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69 struct attribute attr;
70 ssize_t (*show)(elevator_t *, char *);
71 ssize_t (*store)(elevator_t *, const char *, size_t);
72};
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74struct elevator_type
75{
76 struct list_head list;
77 struct elevator_ops ops;
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79 struct elevator_type *elevator_type;
80 struct elv_fs_entry *elevator_attrs;
81 char elevator_name[ELV_NAME_MAX];
82 struct module *elevator_owner;
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84};
85struct elevator_queue
86{
87 struct elevator_ops *ops;
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89 void *elevator_data;
90 struct kobject kobj;
91 struct elevator_type *elevator_type;
92 struct mutex sysfs_lock;
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94};
95#define ELEVATOR_NO_MERGE 0
96#define ELEVATOR_FRONT_MERGE 1
97#define ELEVATOR_BACK_MERGE 2
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99#define ELEVATOR_INSERT_FRONT 1
100#define ELEVATOR_INSERT_BACK 2
101#define ELEVATOR_INSERT_SORT 3
102#define ELEVATOR_INSERT_REQUEUE 4
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104enum {
105 ELV_MQUEUE_MAY,
106 ELV_MQUEUE_NO,
107 ELV_MQUEUE_MUST,
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109};
110#define rq_end_sector(rq) ((rq)->sector + (rq)->nr_sectors)
111#endif
112