105c91076SPawel Jakub Dawidek /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 31de7b4b8SPedro F. Giffuni * 47157a8adSPawel Jakub Dawidek * Copyright (c) 2004-2010 Pawel Jakub Dawidek <pjd@FreeBSD.org> 505c91076SPawel Jakub Dawidek * All rights reserved. 605c91076SPawel Jakub Dawidek * 705c91076SPawel Jakub Dawidek * Redistribution and use in source and binary forms, with or without 805c91076SPawel Jakub Dawidek * modification, are permitted provided that the following conditions 905c91076SPawel Jakub Dawidek * are met: 1005c91076SPawel Jakub Dawidek * 1. Redistributions of source code must retain the above copyright 1105c91076SPawel Jakub Dawidek * notice, this list of conditions and the following disclaimer. 1205c91076SPawel Jakub Dawidek * 2. Redistributions in binary form must reproduce the above copyright 1305c91076SPawel Jakub Dawidek * notice, this list of conditions and the following disclaimer in the 1405c91076SPawel Jakub Dawidek * documentation and/or other materials provided with the distribution. 1505c91076SPawel Jakub Dawidek * 1605c91076SPawel Jakub Dawidek * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 1705c91076SPawel Jakub Dawidek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1805c91076SPawel Jakub Dawidek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1905c91076SPawel Jakub Dawidek * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 2005c91076SPawel Jakub Dawidek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2105c91076SPawel Jakub Dawidek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2205c91076SPawel Jakub Dawidek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2305c91076SPawel Jakub Dawidek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2405c91076SPawel Jakub Dawidek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2505c91076SPawel Jakub Dawidek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2605c91076SPawel Jakub Dawidek * SUCH DAMAGE. 2705c91076SPawel Jakub Dawidek */ 2805c91076SPawel Jakub Dawidek 2905c91076SPawel Jakub Dawidek #ifndef _SUBR_H_ 3005c91076SPawel Jakub Dawidek #define _SUBR_H_ 31f13942a7SPawel Jakub Dawidek #include <stdint.h> 32f13942a7SPawel Jakub Dawidek 337157a8adSPawel Jakub Dawidek unsigned int g_lcm(unsigned int a, unsigned int b); 3482978104SPawel Jakub Dawidek uint32_t bitcount32(uint32_t x); 357157a8adSPawel Jakub Dawidek int g_parse_lba(const char *lbastr, unsigned int sectorsize, off_t *sectors); 3609cc9ab6SPawel Jakub Dawidek 3709cc9ab6SPawel Jakub Dawidek off_t g_get_mediasize(const char *name); 387157a8adSPawel Jakub Dawidek unsigned int g_get_sectorsize(const char *name); 3909cc9ab6SPawel Jakub Dawidek 407157a8adSPawel Jakub Dawidek int g_metadata_read(const char *name, unsigned char *md, size_t size, 4110fa0ebeSPawel Jakub Dawidek const char *magic); 427157a8adSPawel Jakub Dawidek int g_metadata_store(const char *name, const unsigned char *md, size_t size); 4305c91076SPawel Jakub Dawidek int g_metadata_clear(const char *name, const char *magic); 4405c91076SPawel Jakub Dawidek 45710d02a4SPawel Jakub Dawidek void gctl_error(struct gctl_req *req, const char *error, ...) __printflike(2, 3); 46710d02a4SPawel Jakub Dawidek int gctl_get_int(struct gctl_req *req, const char *pfmt, ...) __printflike(2, 3); 47710d02a4SPawel Jakub Dawidek intmax_t gctl_get_intmax(struct gctl_req *req, const char *pfmt, ...) __printflike(2, 3); 48710d02a4SPawel Jakub Dawidek const char *gctl_get_ascii(struct gctl_req *req, const char *pfmt, ...) __printflike(2, 3); 491378624cSPawel Jakub Dawidek int gctl_change_param(struct gctl_req *req, const char *name, int len, 501378624cSPawel Jakub Dawidek const void *value); 5159458bafSMarcel Moolenaar int gctl_delete_param(struct gctl_req *req, const char *name); 5259458bafSMarcel Moolenaar int gctl_has_param(struct gctl_req *req, const char *name); 5359458bafSMarcel Moolenaar 5405c91076SPawel Jakub Dawidek #endif /* !_SUBR_H_ */ 55