1/* 2 * Copyright 2007-2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _FSSH_TYPES_H 6#define _FSSH_TYPES_H 7 8 9#include <inttypes.h> 10 11 12typedef volatile int32_t vint32_t; 13typedef volatile int64_t vint64_t; 14 15#ifdef HAIKU_HOST_PLATFORM_64_BIT 16typedef uint64_t fssh_addr_t; 17typedef uint64_t fssh_phys_addr_t; 18typedef uint64_t fssh_generic_addr_t; 19typedef uint64_t fssh_size_t; 20typedef int64_t fssh_ssize_t; 21#else 22typedef uint32_t fssh_addr_t; 23typedef uint32_t fssh_phys_addr_t; 24typedef uint32_t fssh_generic_addr_t; 25typedef uint32_t fssh_size_t; 26typedef int32_t fssh_ssize_t; 27#endif 28typedef fssh_phys_addr_t fssh_phys_size_t; 29typedef fssh_generic_addr_t fssh_generic_size_t; 30 31typedef int32_t fssh_dev_t; 32typedef int64_t fssh_ino_t; 33 34typedef int64_t fssh_off_t; 35 36typedef int64_t fssh_bigtime_t; 37 38typedef int32_t fssh_status_t; 39typedef uint32_t fssh_type_code; 40 41typedef uint32_t fssh_mode_t; 42typedef uint32_t fssh_nlink_t; 43typedef uint32_t fssh_uid_t; 44typedef uint32_t fssh_gid_t; 45typedef int32_t fssh_pid_t; 46 47#ifndef NULL 48#define NULL (0) 49#endif 50 51 52// NOTE: For this to work the __STDC_FORMAT_MACROS feature macro must be 53// defined. 54 55/* printf()/scanf() format strings for [u]int* types */ 56#define FSSH_B_PRId8 PRId8 57#define FSSH_B_PRIi8 PRIi8 58#define FSSH_B_PRId16 PRId16 59#define FSSH_B_PRIi16 PRIi16 60#define FSSH_B_PRId32 PRId32 61#define FSSH_B_PRIi32 PRIi32 62#define FSSH_B_PRId64 PRId64 63#define FSSH_B_PRIi64 PRIi64 64#define FSSH_B_PRIu8 PRIu8 65#define FSSH_B_PRIo8 PRIo8 66#define FSSH_B_PRIx8 PRIx8 67#define FSSH_B_PRIX8 PRIX8 68#define FSSH_B_PRIu16 PRIu16 69#define FSSH_B_PRIo16 PRIo16 70#define FSSH_B_PRIx16 PRIx16 71#define FSSH_B_PRIX16 PRIX16 72#define FSSH_B_PRIu32 PRIu32 73#define FSSH_B_PRIo32 PRIo32 74#define FSSH_B_PRIx32 PRIx32 75#define FSSH_B_PRIX32 PRIX32 76#define FSSH_B_PRIu64 PRIu64 77#define FSSH_B_PRIo64 PRIo64 78#define FSSH_B_PRIx64 PRIx64 79#define FSSH_B_PRIX64 PRIX64 80 81#define FSSH_B_SCNd8 SCNd8 82#define FSSH_B_SCNi8 SCNi8 83#define FSSH_B_SCNd16 SCNd16 84#define FSSH_B_SCNi16 SCNi16 85#define FSSH_B_SCNd32 SCNd32 86#define FSSH_B_SCNi32 SCNi32 87#define FSSH_B_SCNd64 SCNd64 88#define FSSH_B_SCNi64 SCNi64 89#define FSSH_B_SCNu8 SCNu8 90#define FSSH_B_SCNo8 SCNo8 91#define FSSH_B_SCNx8 SCNx8 92#define FSSH_B_SCNu16 SCNu16 93#define FSSH_B_SCNu16 SCNu16 94#define FSSH_B_SCNx16 SCNx16 95#define FSSH_B_SCNu32 SCNu32 96#define FSSH_B_SCNo32 SCNo32 97#define FSSH_B_SCNx32 SCNx32 98#define FSSH_B_SCNu64 SCNu64 99#define FSSH_B_SCNo64 SCNo64 100#define FSSH_B_SCNx64 SCNx64 101 102 103/* printf() format strings for some standard types */ 104/* addr_t, size_t, ssize_t */ 105#ifdef HAIKU_HOST_PLATFORM_64_BIT 106# define FSSH_B_PRIuADDR FSSH_B_PRIu64 107# define FSSH_B_PRIoADDR FSSH_B_PRIo64 108# define FSSH_B_PRIxADDR FSSH_B_PRIx64 109# define FSSH_B_PRIXADDR FSSH_B_PRIX64 110# define FSSH_B_PRIuSIZE FSSH_B_PRIu64 111# define FSSH_B_PRIoSIZE FSSH_B_PRIo64 112# define FSSH_B_PRIxSIZE FSSH_B_PRIx64 113# define FSSH_B_PRIXSIZE FSSH_B_PRIX64 114# define FSSH_B_PRIdSSIZE FSSH_B_PRId64 115# define FSSH_B_PRIiSSIZE FSSH_B_PRIi64 116#else 117# define FSSH_B_PRIuADDR FSSH_B_PRIu32 118# define FSSH_B_PRIoADDR FSSH_B_PRIo32 119# define FSSH_B_PRIxADDR FSSH_B_PRIx32 120# define FSSH_B_PRIXADDR FSSH_B_PRIX32 121# define FSSH_B_PRIuSIZE FSSH_B_PRIu32 122# define FSSH_B_PRIoSIZE FSSH_B_PRIo32 123# define FSSH_B_PRIxSIZE FSSH_B_PRIx32 124# define FSSH_B_PRIXSIZE FSSH_B_PRIX32 125# define FSSH_B_PRIdSSIZE FSSH_B_PRId32 126# define FSSH_B_PRIiSSIZE FSSH_B_PRIi32 127#endif 128/* phys_addr_t */ 129#ifdef HAIKU_HOST_PLATFORM_64_BIT 130# define FSSH_B_PRIuPHYSADDR FSSH_B_PRIu64 131# define FSSH_B_PRIoPHYSADDR FSSH_B_PRIo64 132# define FSSH_B_PRIxPHYSADDR FSSH_B_PRIx64 133# define FSSH_B_PRIXPHYSADDR FSSH_B_PRIX64 134#else 135# define FSSH_B_PRIuPHYSADDR FSSH_B_PRIu32 136# define FSSH_B_PRIoPHYSADDR FSSH_B_PRIo32 137# define FSSH_B_PRIxPHYSADDR FSSH_B_PRIx32 138# define FSSH_B_PRIXPHYSADDR FSSH_B_PRIX32 139#endif 140/* generic_addr_t */ 141#define FSSH_B_PRIuGENADDR FSSH_B_PRIuPHYSADDR 142#define FSSH_B_PRIoGENADDR FSSH_B_PRIoPHYSADDR 143#define FSSH_B_PRIxGENADDR FSSH_B_PRIxPHYSADDR 144#define FSSH_B_PRIXGENADDR FSSH_B_PRIXPHYSADDR 145/* off_t */ 146#define FSSH_B_PRIdOFF FSSH_B_PRId64 147#define FSSH_B_PRIiOFF FSSH_B_PRIi64 148/* dev_t */ 149#define FSSH_B_PRIdDEV FSSH_B_PRId32 150#define FSSH_B_PRIiDEV FSSH_B_PRIi32 151/* ino_t */ 152#define FSSH_B_PRIdINO FSSH_B_PRId64 153#define FSSH_B_PRIiINO FSSH_B_PRIi64 154/* time_t */ 155#define FSSH_B_PRIdTIME FSSH_B_PRId32 156#define FSSH_B_PRIiTIME FSSH_B_PRIi32 157 158 159/* limits */ 160#ifdef HAIKU_HOST_PLATFORM_64_BIT 161# define FSSH_SIZE_MAX UINT64_MAX 162# define FSSH_SSIZE_MAX INT64_MAX 163#else 164# define FSSH_SIZE_MAX UINT32_MAX 165# define FSSH_SSIZE_MAX INT32_MAX 166#endif 167 168 169#endif // _FSSH_TYPES_H 170