52 lines
1.8 KiB
C
52 lines
1.8 KiB
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License v2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 021110-1307, USA.
|
|
*/
|
|
|
|
#ifndef __BTRFS_UNITS_H__
|
|
#define __BTRFS_UNITS_H__
|
|
|
|
#include "kerncompat.h"
|
|
#include <stddef.h>
|
|
|
|
/*
|
|
* Output modes of size
|
|
*/
|
|
#define UNITS_RESERVED (0)
|
|
#define UNITS_BYTES (1)
|
|
#define UNITS_KBYTES (2)
|
|
#define UNITS_MBYTES (3)
|
|
#define UNITS_GBYTES (4)
|
|
#define UNITS_TBYTES (5)
|
|
#define UNITS_RAW (1U << UNITS_MODE_SHIFT)
|
|
#define UNITS_BINARY (2U << UNITS_MODE_SHIFT)
|
|
#define UNITS_DECIMAL (3U << UNITS_MODE_SHIFT)
|
|
/* Interpret the u64 value as s64 */
|
|
#define UNITS_NEGATIVE (4U << UNITS_MODE_SHIFT)
|
|
#define UNITS_MODE_MASK ((1U << UNITS_MODE_SHIFT) - 1)
|
|
#define UNITS_MODE_SHIFT (8)
|
|
#define UNITS_HUMAN_BINARY (UNITS_BINARY)
|
|
#define UNITS_HUMAN_DECIMAL (UNITS_DECIMAL)
|
|
#define UNITS_HUMAN (UNITS_HUMAN_BINARY)
|
|
#define UNITS_DEFAULT (UNITS_HUMAN)
|
|
|
|
const char *pretty_size_mode(u64 size, unsigned mode);
|
|
int pretty_size_snprintf(u64 size, char *str, size_t str_size, unsigned unit_mode);
|
|
#define pretty_size(size) pretty_size_mode(size, UNITS_DEFAULT)
|
|
void units_set_mode(unsigned *units, unsigned mode);
|
|
void units_set_base(unsigned *units, unsigned base);
|
|
unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode);
|
|
|
|
#endif
|