/* Copyright (C) 2010 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by the GPL v2 license that can
 * be found in the LICENSE file.
 * 
 * Parts of this file are derived from the Linux kernel from the file with
 * the same name and path under include/.
 */
#ifndef VERITY_INCLUDE_LINUX_DEVICE_MAPPER_H_
#define VERITY_INCLUDE_LINUX_DEVICE_MAPPER_H_
#include <stdio.h>

#ifndef NDEBUG
#define CONFIG_DM_DEBUG 1
#endif

#define DMLOG(fmt, args...) \
	fprintf(stderr, "dm:" DM_MSG_PREFIX fmt "\n", ##args)
#ifdef CONFIG_DM_DEBUG
#define DMDEBUG(fmt, args...) DMLOG("[DEBUG] " fmt, ##args)
#else
#define DMDEBUG(fmt, args...) { }
#endif
#define DMINFO(fmt, args...) DMLOG("[INFO] " fmt, ##args)
#define DMERR(fmt, args...) DMLOG("[ERR] " fmt, ##args)
/* TODO(wad) remap to google-glog to get easy logging support */
#define DMERR_LIMIT(fmt, args...) DMERR(fmt, ##args)
#define DMCRIT(fmt, args...) DMLOG("[CRIT] " fmt, ##args)

#define SECTOR_SHIFT 9
#define to_sector(x) ((x) >> SECTOR_SHIFT)
#define verity_to_bytes(x) ((x) << SECTOR_SHIFT)

#endif  /* VERITY_INCLUDE_LINUX_DEVICE_MAPPER_H_ */
