/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <---- Copyright (c) 2014-2015 Datalight, Inc. All Rights Reserved Worldwide. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; use version 2 of the License. This program is distributed in the hope that it will be useful, but "AS-IS," 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPLv2 license may obtain a commercial license before incorporating Reliance Edge into proprietary software for distribution in any form. Visit http://www.datalight.com/reliance-edge for more information. */ /** @file */ #ifndef REDMACS_H #define REDMACS_H #ifndef NULL #define NULL ((void *)0) #endif #ifndef UINT8_MAX #define UINT8_MAX (0xFFU) #endif #ifndef UINT16_MAX #define UINT16_MAX (0xFFFFU) #endif #ifndef UINT32_MAX #define UINT32_MAX (0xFFFFFFFFU) #endif #ifndef UINT64_MAX #define UINT64_MAX UINT64_SUFFIX(0xFFFFFFFFFFFFFFFF) #endif #ifndef INT32_MAX #define INT32_MAX (0x7FFFFFFF) #endif #ifndef INT64_MAX #define INT64_MAX INT64_SUFFIX(0x7FFFFFFFFFFFFFFF) #endif #ifndef true #define true (1) #endif #ifndef false #define false (0) #endif #define SECTOR_SIZE_MIN (256U) #if REDCONF_BLOCK_SIZE == 256U #define BLOCK_SIZE_P2 8U #elif REDCONF_BLOCK_SIZE == 512U #define BLOCK_SIZE_P2 9U #elif REDCONF_BLOCK_SIZE == 1024U #define BLOCK_SIZE_P2 10U #elif REDCONF_BLOCK_SIZE == 2048U #define BLOCK_SIZE_P2 11U #elif REDCONF_BLOCK_SIZE == 4096U #define BLOCK_SIZE_P2 12U #elif REDCONF_BLOCK_SIZE == 8192U #define BLOCK_SIZE_P2 13U #elif REDCONF_BLOCK_SIZE == 16384U #define BLOCK_SIZE_P2 14U #elif REDCONF_BLOCK_SIZE == 32768U #define BLOCK_SIZE_P2 15U #elif REDCONF_BLOCK_SIZE == 65536U #define BLOCK_SIZE_P2 16U #else #error "REDCONF_BLOCK_SIZE must be a power of two value between 256 and 65536" #endif #define REDMIN(a, b) (((a) < (b)) ? (a) : (b)) #define INODE_INVALID (0U) /* General-purpose invalid inode number (must be zero). */ #define INODE_FIRST_VALID (2U) /* First valid inode number. */ #define INODE_ROOTDIR (INODE_FIRST_VALID) /* Inode number of the root directory. */ /* Expands to a "const" qualifier when the volume count is one, otherwise expands to nothing. This is useful for variables that never change in single-volume configurations but do change in multi-volume configurations. */ #if REDCONF_VOLUME_COUNT == 1U #define CONST_IF_ONE_VOLUME const #else #define CONST_IF_ONE_VOLUME #endif #endif