[PATCH] Link in known io engines

No real point in using dlopen() to find engines we know about. We still
support loading external modules, just give the name as the full path
to such a file.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index f859608..9f5201b 100644
--- a/fio.h
+++ b/fio.h
@@ -565,6 +565,7 @@
 	} while (0)
 
 struct ioengine_ops {
+	struct list_head list;
 	char name[16];
 	int version;
 	int flags;
@@ -583,12 +584,16 @@
 #define FIO_IOOPS_VERSION	3
 
 extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *);
+extern int register_ioengine(struct ioengine_ops *);
+extern void unregister_ioengine(struct ioengine_ops *);
 extern void close_ioengine(struct thread_data *);
 
 /*
  * Mark unused variables passed to ops functions as unused, to silence gcc
  */
 #define fio_unused	__attribute((__unused__))
+#define fio_init	__attribute__((constructor))
+#define fio_exit	__attribute__((destructor))
 
 #define for_each_td(td, i)	\
 	for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++)