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