2 * Copyright (C) 2010 Red Hat, Inc. All rights reserved.
4 * This file is part of LVM2.
6 * This copyrighted material is made available to anyone wishing to use,
7 * modify, copy, or redistribute it subject to the terms and conditions
8 * of the GNU Lesser General Public License v.2.1.
10 * You should have received a copy of the GNU Lesser General Public License
11 * along with this program; if not, write to the Free Software Foundation,
12 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15 #ifndef _LVM_PERCENT_H
16 #define _LVM_PERCENT_H
20 * A fixed-point representation of percent values. One percent equals to
21 * PERCENT_1 as defined below. Values that are not multiples of PERCENT_1
22 * represent fractions, with precision of 1/1000000 of a percent. See
23 * percent_to_float for a conversion to a floating-point representation.
25 * You should always use make_percent when building percent_t values. The
26 * implementation of make_percent is biased towards the middle: it ensures that
27 * the result is PERCENT_0 or PERCENT_100 if and only if this is the actual
28 * value -- it never rounds any intermediate value (> 0 or < 100) to either 0
31 typedef int32_t percent_t;
36 PERCENT_100 = 100 * PERCENT_1,
40 float percent_to_float(percent_t v);
41 percent_t make_percent(uint64_t numerator, uint64_t denominator);