blob: ebdacdda6a8ca9263daf994fb7f3066377cd34e5 [file] [log] [blame]
/*
* Copyright (c) 2000-2001 Silicon Graphics, Inc.
* All Rights Reserved.
*
* 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.
*
* This program is distributed in the hope that it would 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 the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef TYPES_H
#define TYPES_H
/*
* Pull in all the standard C types first.
*/
#include <stdint.h>
/*
* type macros that were naively put into xfs/jdm.h, then used in places that
* have nothing to do with file handle operations.
*/
#define sizeofmember( t, m ) sizeof( ( ( t * )0 )->m )
#define offsetofmember( t, m ) ( ( size_t )( char * )&( ( ( t * )0 )->m ) )
#define XFSDUMP_DIRPATH inv_basepath()
/*
* Should be, but isn't, defined in uuid/uuid.h
*/
#define UUID_STR_LEN 36
/* fundamental page size - probably should not be hardwired, but
* for now we will
*/
#define PGSZLOG2 12
#define PGSZ ( 1 << PGSZLOG2 )
#define PGMASK ( PGSZ - 1 )
/* integers
*/
typedef uint32_t size32_t;
typedef uint64_t size64_t;
typedef char char_t;
typedef unsigned char u_char_t;
typedef unsigned int uint;
typedef long long_t;
typedef unsigned long u_long_t;
typedef size_t ix_t;
typedef int32_t time32_t;
typedef uint64_t xfs_ino_t;
#define constpp char * const *
/* limits
*/
#define MKMAX( t, s ) ( ( t ) \
( ( ( 1ull \
<< \
( ( unsigned long long )sizeof( t ) \
* \
( unsigned long long )NBBY \
- \
( s + 1ull ))) \
- \
1ull ) \
* \
2ull \
+ \
1ull ))
#define MKSMAX( t ) MKMAX( t, 1ull )
#define MKUMAX( t ) MKMAX( t, 0ull )
#define INT32MAX MKSMAX( int32_t )
#define UINT32MAX MKUMAX( uint32_t )
#define SIZE32MAX MKUMAX( size32_t )
#define INT64MAX MKSMAX( int64_t )
#define UINT64MAX MKUMAX( uint64_t )
#define SIZE64MAX MKUMAX( size64_t )
#define INO64MAX MKUMAX( xfs_ino_t )
#define OFF64MAX MKSMAX( off64_t )
#define INTGENMAX MKSMAX( int )
#define UINTGENMAX MKUMAX( uint )
#define OFFMAX MKSMAX( off_t )
#define SIZEMAX MKUMAX( size_t )
#define IXMAX MKUMAX( size_t )
#define INOMAX MKUMAX( ino_t )
#define TIMEMAX MKSMAX( time32_t )
#define INT16MAX 0x7fff
#define UINT16MAX 0xffff
/* boolean
*/
typedef int bool_t;
#define BOOL_TRUE 1
#define BOOL_FALSE 0
#define BOOL_UNKNOWN ( -1 )
#define BOOL_ERROR ( -2 )
/* useful return code scheme
* NOTE: that there are macros and error messages in common/types.h that should
* be updated when new error codes are added here.
*/
typedef enum { RV_OK, /* mission accomplished */
RV_NOTOK, /* media erase request denied */
RV_NOMORE, /* no more work to do */
RV_EOD, /* ran out of data */
RV_EOF, /* hit end of media file */
RV_EOM, /* hit end of media object */
RV_ERROR, /* operator error or resource exhaustion */
RV_DONE, /* return early because someone else did work */
RV_INTR, /* cldmgr_stop_requested( ) */
RV_CORRUPT, /* stopped because corrupt data encountered */
RV_QUIT, /* stop using resource */
RV_DRIVE, /* drive quit working */
RV_TIMEOUT, /* operation timed out */
RV_MEDIA, /* no media object in drive */
RV_PROTECTED, /* want to write but write-protected */
RV_CORE, /* really bad - dump core! */
RV_OPT, /* bad command line option */
RV_INIT, /* could not initialise subsystem */
RV_PERM, /* insufficient privilege */
RV_COMPAT, /* dump incompatible */
RV_INCOMPLETE, /* some part of the dump is incomplete */
RV_KBD_INTR, /* keyboard interrupt */
RV_INV, /* session inventory error */
RV_USAGE, /* print command usage only */
RV_EXISTS, /* file or directory already exists */
RV_NONE, /* no error code available */
RV_UNKNOWN, /* there was an error but we don't know which one */
_RV_NUM /* number of return codes */
} rv_t;
/* typedefs I'd like to see ...
*/
typedef struct stat stat_t;
typedef struct stat64 stat64_t;
typedef struct getbmapx getbmapx_t;
typedef struct fsdmidata fsdmidata_t;
/* flg definitions for preemptchk
*/
#define PREEMPT_FULL 0
#define PREEMPT_PROGRESSONLY 1
#endif /* TYPES_H */