1 1.1 haad /* 2 1.1 haad * Copyright (c) 2010 The NetBSD Foundation, Inc. 3 1.1 haad * All rights reserved. 4 1.1 haad * 5 1.1 haad * This code is derived from software contributed to The NetBSD Foundation 6 1.1 haad * by Adam Hamsik. 7 1.1 haad * 8 1.1 haad * Redistribution and use in source and binary forms, with or without 9 1.1 haad * modification, are permitted provided that the following conditions 10 1.1 haad * are met: 11 1.1 haad * 1. Redistributions of source code must retain the above copyright 12 1.1 haad * notice, this list of conditions and the following disclaimer. 13 1.1 haad * 2. Redistributions in binary form must reproduce the above copyright 14 1.1 haad * notice, this list of conditions and the following disclaimer in the 15 1.1 haad * documentation and/or other materials provided with the distribution. 16 1.1 haad * 17 1.1 haad * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 18 1.1 haad * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 19 1.1 haad * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20 1.1 haad * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 21 1.1 haad * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 1.1 haad * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 1.1 haad * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 1.1 haad * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 1.1 haad * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 1.1 haad * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 1.1 haad * POSSIBILITY OF SUCH DAMAGE. 28 1.1 haad */ 29 1.1 haad 30 1.1 haad 31 1.1 haad #ifndef _LIB_DM_H_ 32 1.1 haad #define _LIB_DM_H_ 33 1.1 haad 34 1.2 dholland #include <sys/cdefs.h> 35 1.2 dholland #include <stddef.h> 36 1.2 dholland #include <stdint.h> 37 1.2 dholland 38 1.1 haad __BEGIN_DECLS 39 1.1 haad 40 1.1 haad #define DM_DEVICE_PATH "/dev/mapper/control" 41 1.1 haad 42 1.1 haad #define IOCTL_TYPE_IN 0x1 43 1.1 haad #define IOCTL_TYPE_OUT 0x2 44 1.1 haad 45 1.1 haad struct libdm_task; 46 1.1 haad struct libdm_cmd; 47 1.1 haad struct libdm_target; 48 1.1 haad struct libdm_table; 49 1.1 haad struct libdm_dev; 50 1.1 haad struct libdm_iter; 51 1.1 haad 52 1.1 haad typedef struct libdm_task* libdm_task_t; 53 1.1 haad typedef struct libdm_cmd* libdm_cmd_t; 54 1.1 haad typedef struct libdm_target* libdm_target_t; 55 1.1 haad typedef struct libdm_table* libdm_table_t; 56 1.1 haad typedef struct libdm_dev* libdm_dev_t; 57 1.1 haad typedef struct libdm_iter* libdm_iter_t; 58 1.1 haad 59 1.1 haad struct cmd_version { 60 1.1 haad const char *cmd; 61 1.1 haad uint32_t version[3]; 62 1.1 haad }; 63 1.1 haad 64 1.1 haad void libdm_iter_destroy(libdm_iter_t); 65 1.1 haad 66 1.1 haad libdm_task_t libdm_task_create(const char *); 67 1.1 haad void libdm_task_destroy(libdm_task_t); 68 1.1 haad 69 1.1 haad char *libdm_task_get_command(libdm_task_t); 70 1.1 haad int32_t libdm_task_get_cmd_version(libdm_task_t, uint32_t *, size_t); 71 1.1 haad 72 1.1 haad int libdm_task_set_name(const char *, libdm_task_t); 73 1.1 haad char *libdm_task_get_name(libdm_task_t); 74 1.1 haad 75 1.1 haad int libdm_task_set_uuid(const char *, libdm_task_t); 76 1.1 haad char *libdm_task_get_uuid(libdm_task_t); 77 1.1 haad 78 1.1 haad int libdm_task_set_minor(uint32_t, libdm_task_t); 79 1.1 haad uint32_t libdm_task_get_minor(libdm_task_t); 80 1.1 haad 81 1.1 haad uint32_t libdm_task_get_flags(libdm_task_t); 82 1.1 haad void libdm_task_set_flags(libdm_task_t, uint32_t); 83 1.1 haad 84 1.1 haad void libdm_task_set_suspend_flag(libdm_task_t); 85 1.1 haad void libdm_task_del_suspend_flag(libdm_task_t); 86 1.1 haad 87 1.1 haad void libdm_task_set_status_flag(libdm_task_t); 88 1.1 haad void libdm_task_del_status_flag(libdm_task_t); 89 1.1 haad 90 1.1 haad void libdm_task_set_exists_flag(libdm_task_t); 91 1.1 haad void libdm_task_del_exists_flag(libdm_task_t); 92 1.1 haad 93 1.1 haad void libdm_task_set_nocount_flag(libdm_task_t); 94 1.1 haad void libdm_task_del_nocount_flag(libdm_task_t); 95 1.1 haad 96 1.1 haad uint32_t libdm_task_get_target_num(libdm_task_t); 97 1.1 haad int32_t libdm_task_get_open_num(libdm_task_t); 98 1.1 haad uint32_t libdm_task_get_event_num(libdm_task_t); 99 1.1 haad 100 1.1 haad int libdm_task_set_cmd(libdm_cmd_t, libdm_task_t); 101 1.1 haad libdm_cmd_t libdm_task_get_cmd(libdm_task_t); 102 1.1 haad 103 1.1 haad /* cmd_data dictionary entry manipulating functions */ 104 1.1 haad libdm_cmd_t libdm_cmd_create(void); 105 1.1 haad void libdm_cmd_destroy(libdm_cmd_t); 106 1.1 haad libdm_iter_t libdm_cmd_iter_create(libdm_cmd_t); 107 1.1 haad 108 1.1 haad int libdm_cmd_set_table(libdm_table_t, libdm_cmd_t); 109 1.1 haad 110 1.1 haad /* cmd is array of table dictionaries */ 111 1.1 haad libdm_table_t libdm_cmd_get_table(libdm_iter_t); 112 1.1 haad 113 1.1 haad /* cmd is array of dev dictionaries */ 114 1.1 haad libdm_dev_t libdm_cmd_get_dev(libdm_iter_t); 115 1.1 haad 116 1.1 haad /* cmd is array of target dictonaries */ 117 1.1 haad libdm_target_t libdm_cmd_get_target(libdm_iter_t); 118 1.1 haad /* cmd is array of dev_t's */ 119 1.1 haad uint64_t libdm_cmd_get_deps(libdm_iter_t); 120 1.1 haad 121 1.1 haad /* Table functions. */ 122 1.1 haad libdm_table_t libdm_table_create(void); 123 1.1 haad void libdm_table_destroy(libdm_table_t); 124 1.1 haad 125 1.1 haad int libdm_table_set_start(uint64_t, libdm_table_t); 126 1.1 haad uint64_t libdm_table_get_start(libdm_table_t); 127 1.1 haad 128 1.1 haad int libdm_table_set_length(uint64_t, libdm_table_t); 129 1.1 haad uint64_t libdm_table_get_length(libdm_table_t); 130 1.1 haad 131 1.1 haad int libdm_table_set_target(const char *, libdm_table_t); 132 1.1 haad char * libdm_table_get_target(libdm_table_t); 133 1.1 haad 134 1.1 haad int libdm_table_set_params(const char *, libdm_table_t); 135 1.1 haad char * libdm_table_get_params(libdm_table_t); 136 1.1 haad 137 1.1 haad int32_t libdm_table_get_status(libdm_table_t); 138 1.1 haad 139 1.1 haad /* Target manipulating functions. */ 140 1.1 haad void libdm_target_destroy(libdm_target_t); 141 1.1 haad 142 1.1 haad char * libdm_target_get_name(libdm_target_t); 143 1.1 haad int32_t libdm_target_get_version(libdm_target_t, uint32_t *, size_t); 144 1.1 haad 145 1.1 haad /* Dev manipulating functions. */ 146 1.1 haad void libdm_dev_destroy(libdm_dev_t); 147 1.1 haad 148 1.1 haad char * libdm_dev_get_name(libdm_dev_t); 149 1.1 haad uint32_t libdm_dev_get_minor(libdm_dev_t); 150 1.1 haad 151 1.1 haad int libdm_dev_set_newname(const char *, libdm_cmd_t); 152 1.1 haad 153 1.1 haad /* task run routine */ 154 1.1 haad int libdm_task_run(libdm_task_t); 155 1.1 haad 156 1.1 haad __END_DECLS 157 1.1 haad 158 1.1 haad #endif /* _LIB_DM_H_ */ 159