probe.h revision bdc3514af41b5fbfea16c5192d5aade1da641cf4
1e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * probe.h - constants and on-disk structures for extracting device data 3e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * 4e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Copyright (C) 1999 by Andries Brouwer 550b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o * Copyright (C) 1999, 2000, 2003 by Theodore Ts'o 6e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Copyright (C) 2001 by Andreas Dilger 7e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * 8e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * %Begin-Header% 9e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * This file may be redistributed under the terms of the 10e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * GNU Lesser General Public License. 11e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * %End-Header% 12e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o */ 13e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 14e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#ifndef _BLKID_PROBE_H 15e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define _BLKID_PROBE_H 16e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 17e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#include <blkid/blkid_types.h> 18e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 19e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct blkid_magic; 20e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 21ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o#define SB_BUFFER_SIZE 0x11000 22ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o 23ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'ostruct blkid_probe { 24ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o int fd; 25ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o blkid_cache cache; 26ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o blkid_dev dev; 27ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o unsigned char *sbbuf; 28ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o size_t sb_valid; 29ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o unsigned char *buf; 30ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o size_t buf_max; 31ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o}; 32ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o 33ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'otypedef int (*blkid_probe_t)(struct blkid_probe *probe, 3479dd234a799434b6dc8365c49e743f00eb09d2fdTheodore Ts'o struct blkid_magic *id, unsigned char *buf); 35e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 36e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct blkid_magic { 37e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o const char *bim_type; /* type name for this magic */ 38e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o long bim_kboff; /* kilobyte offset of superblock */ 39e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_sboff; /* byte offset within superblock */ 40e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_len; /* length of magic */ 41d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o const char *bim_magic; /* magic string */ 42e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o blkid_probe_t bim_probe; /* probe function */ 43e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 44e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 45e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 46e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Structures for each of the content types we want to extract information 47e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * from. We do not necessarily need the magic field here, because we have 48e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * already identified the content type before we get this far. It may still 49e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * be useful if there are probe functions which handle multiple content types. 50e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o */ 51e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct ext2_super_block { 52e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_inodes_count; 53e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_blocks_count; 54e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_r_blocks_count; 55e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_blocks_count; 56e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_inodes_count; 57e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_first_data_block; 58e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_log_block_size; 59e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy3[7]; 60e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_magic[2]; 61e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 s_state; 62e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy5[8]; 63e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_compat; 64e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_incompat; 65e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_ro_compat; 66e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_uuid[16]; 67d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char s_volume_name[16]; 68ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o char s_last_mounted[64]; 69ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_algorithm_usage_bitmap; 70ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_prealloc_blocks; 71ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_prealloc_dir_blocks; 72ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u16 s_reserved_gdt_blocks; 73ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_journal_uuid[16]; 74ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_journal_inum; 75ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_journal_dev; 76ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_last_orphan; 77ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_hash_seed[4]; 78ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_def_hash_version; 79ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_jnl_backup_type; 80ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u16 s_reserved_word_pad; 81ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_default_mount_opts; 82ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_first_meta_bg; 83ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_mkfs_time; 84ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_jnl_blocks[17]; 85ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_reserved[172]; 86e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 87e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x00000004 88e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_INCOMPAT_RECOVER 0x00000004 89e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x00000008 90e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 91e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct xfs_super_block { 92e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_magic[4]; 93e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_blocksize; 94e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_dblocks; 95e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_rblocks; 9609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 xs_dummy1[2]; 97e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_uuid[16]; 98e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy2[15]; 99d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char xs_fname[12]; 100e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy3[2]; 101e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_icount; 102e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_ifree; 103e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_fdblocks; 104e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 105e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 106e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct reiserfs_super_block { 107e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_blocks_count; 108e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_free_blocks; 109e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_root_block; 110e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_block; 111e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_dev; 112e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_orig_journal_size; 113e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy2[5]; 114e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_blocksize; 115e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_dummy3[3]; 116e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_magic[12]; 117e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy4[5]; 118e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_uuid[16]; 119d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char rs_label[16]; 120e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 121e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 122bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'ostruct reiser4_super_block { 123bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_magic[16]; 124bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u16 rs4_dummy[2]; 125bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_uuid[16]; 126bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_label[16]; 127bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u64 rs4_dummy2; 128bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o}; 129bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o 13009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct jfs_super_block { 13109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_magic[4]; 13209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_version; 13309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u64 js_size; 13409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_bsize; 13509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy1; 13609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_pbsize; 13709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy2[27]; 13809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_uuid[16]; 13909a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_label[16]; 14009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_loguuid[16]; 14109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 14209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 14309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct romfs_super_block { 14409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_magic[8]; 14509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 ros_dummy1[2]; 14609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_volume[16]; 14709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 14809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 1494c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'ostruct cramfs_super_block { 1504c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 magic[4]; 1514c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 size; 1524c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 flags; 1534c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 future; 1544c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 signature[16]; 1554c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o struct cramfs_info { 1564c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 crc; 1574c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 edition; 1584c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 blocks; 1594c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 files; 1604c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o } info; 1614c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 name[16]; 1624c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o}; 1634c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o 1647369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'ostruct swap_id_block { 1657369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o/* unsigned char sws_boot[1024]; */ 1667369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_version; 1677369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_lastpage; 1687369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_nrbad; 1697369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_uuid[16]; 17012b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char sws_volume[16]; 1717369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_pad[117]; 1727369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_badpg; 1737369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o}; 1747369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o 175e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 176e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct vfat_super_block { 177e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char vs_ignored[3]; 178e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char vs_sysid[8]; 179e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char vs_sector_size[2]; 180e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 vs_cluster_size; 181e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 vs_reserved; 182e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 vs_fats; 183e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char vs_dir_entries[2]; 184e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char vs_sectors[2]; 185e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char vs_media; 186e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 vs_fat_length; 187e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 vs_secs_track; 188e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 vs_heads; 189e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 vs_hidden; 190e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 vs_total_sect; 191e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ __u32 vs_fat32_length; 192e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 28*/ __u16 vs_flags; 193e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2a*/ __u8 vs_version[2]; 194e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2c*/ __u32 vs_root_cluster; 195e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 30*/ __u16 vs_insfo_sector; 196e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 32*/ __u16 vs_backup_boot; 197e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34*/ __u16 vs_reserved2[6]; 198e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 40*/ unsigned char vs_unknown[3]; 199e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 43*/ unsigned char vs_serno[4]; 200ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o/* 47*/ unsigned char vs_label[11]; 201e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 52*/ unsigned char vs_magic[8]; 202e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 5a*/ unsigned char vs_dummy2[164]; 203e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char vs_pmagic[2]; 204e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 205e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 206e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 207e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct msdos_super_block { 208e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char ms_ignored[3]; 209e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char ms_sysid[8]; 210e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char ms_sector_size[2]; 211e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 ms_cluster_size; 212e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 ms_reserved; 213e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 ms_fats; 214e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char ms_dir_entries[2]; 215e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char ms_sectors[2]; 216e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char ms_media; 217e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 ms_fat_length; 218e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 ms_secs_track; 219e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 ms_heads; 220e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 ms_hidden; 221e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 ms_total_sect; 222e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ unsigned char ms_unknown[3]; 223e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 27*/ unsigned char ms_serno[4]; 224ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o/* 2b*/ unsigned char ms_label[11]; 225e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 36*/ unsigned char ms_magic[8]; 226e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 3d*/ unsigned char ms_dummy2[192]; 227e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char ms_pmagic[2]; 228e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 229e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 230c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zakstruct vfat_dir_entry { 231c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 name[11]; 232c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 attr; 233c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_creat; 234c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_creat; 235c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_acc; 236c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_acc; 237c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_high; 238c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_write; 239c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_write; 240c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_low; 241c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u32 size; 242c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak}; 243c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 244c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak/* maximum number of clusters */ 245c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT12_MAX 0xFF4 246c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT16_MAX 0xFFF4 247c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT32_MAX 0x0FFFFFF6 248c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 249e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct minix_super_block { 250e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_ninodes; 251e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_nzones; 252e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_imap_blocks; 253e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_zmap_blocks; 254e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_firstdatazone; 255e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_log_zone_size; 256e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_max_size; 257e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char ms_magic[2]; 258e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_state; 259e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_zones; 260e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 261e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 262e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct mdp_superblock_s { 263e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_magic; 264e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 major_version; 265e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 minor_version; 266e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 patch_version; 267e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 gvalid_words; 268e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid0; 269e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ctime; 270e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 level; 271e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 size; 272e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 nr_disks; 273e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 raid_disks; 274e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_minor; 275e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 not_persistent; 276e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid1; 277e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid2; 278e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid3; 279e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 280e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 281e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct hfs_super_block { 282e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_magic[2]; 283e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_dummy[18]; 284e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 h_blksize; 285e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 286e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 2879387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_header { 2883838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char minor_version[4]; 2893838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char major_version[4]; 2903838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[128]; 29112b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char mount[128]; 29212b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o unsigned char mount_len[2]; 2939387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2949387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2959387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_label { 2963838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char disk_lock[48]; 29712b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char label[64]; 2983838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label_len[2]; 2993838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id[16]; 3003838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id_len[2]; 3019387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 3029387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 3033838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmajor(o) ((__u32)o.major_version[0] \ 3043838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[1]) << 8) \ 3053838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[2]) << 16) \ 3063838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[3]) << 24)) 3073838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfslabellen(o) ((__u32)o.label_len[0] + (((__u32) o.label_len[1]) << 8)) 3083838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmountlen(o) ((__u32)o.mount_len[0] + (((__u32) o.mount_len[1])<<8)) 3099387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 3109387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o#define OCFS_MAGIC "OracleCFS" 3119387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 312414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'ostruct ocfs2_super_block { 3133838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[8]; 3143838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy1[184]; 3153838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy2[80]; 31612b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char s_label[64]; 3173838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_uuid[16]; 318414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o}; 319414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 320414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MIN_BLOCKSIZE 512 321414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MAX_BLOCKSIZE 4096 322414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 323414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_BLKNO 2 324414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 325414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2" 326414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 3272c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'ostruct oracle_asm_disk_label { 3282c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dummy[32]; 3292c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_tag[8]; 3302c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_id[24]; 3312c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o}; 3322c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3332c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_MARKED "ORCLDISK" 3342c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_OFFSET 32 3352c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3363de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'ostruct iso_volume_descriptor { 33745a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_type; 33845a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_id[5]; 33945a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_version; 34045a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char flags; 34145a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char system_id[32]; 34245a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char volume_id[32]; 34345a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char unused[8]; 34445a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char space_size[8]; 34545a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char escape_sequences[8]; 3463de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o}; 3473de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o 34876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o/* 34976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o * Byte swap functions 35076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o */ 35176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef __GNUC__ 352ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static __inline__ 35376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else /* For Watcom C */ 354ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static inline 35576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 35676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 357ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u16 blkid_swab16(__u16 val); 358ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u32 blkid_swab32(__u32 val); 359ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u64 blkid_swab64(__u64 val); 36050b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o 36176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if ((defined __GNUC__) && \ 36276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (defined(__i386__) || defined(__i486__) || defined(__i586__))) 36376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 36476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define _BLKID_HAVE_ASM_BITOPS_ 36576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 36676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 36776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 36876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef EXT2FS_REQUIRE_486 36976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("bswap %0" : "=r" (val) : "0" (val)); 370e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#else 37176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 37276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "rorl $16,%0\n\t" /* swap words */ 37376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "xchgb %b0,%h0" /* swap higher bytes */ 37476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o :"=q" (val) 37576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); 37676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 37776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 37876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 37976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 38076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 38176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 38276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0" /* swap bytes */ \ 38376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "=q" (val) \ 38476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); \ 38576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 38676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 38776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 38876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 38976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 39076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 39176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 39276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 393e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 39476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 39576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if !defined(_BLKID_HAVE_ASM_BITOPS_) 39676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 39776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 39876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 39976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (val >> 8) | (val << 8); 40076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 40176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 40276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 40376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 40476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return ((val>>24) | ((val>>8)&0xFF00) | 40576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o ((val<<8)&0xFF0000) | (val<<24)); 40676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 40776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 408ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 40976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 41076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 41176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 41276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 41376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 41476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 41576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 41676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 417bdc3514af41b5fbfea16c5192d5aade1da641cf4Matthias Andree#ifdef WORDS_BIGENDIAN 41876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) blkid_swab16(x) 41976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) blkid_swab32(x) 42076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) blkid_swab64(x) 42176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) (x) 42276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) (x) 42376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) (x) 42476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else 42576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) (x) 42676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) (x) 42776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) (x) 42876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) blkid_swab16(x) 42976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) blkid_swab32(x) 43076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) blkid_swab64(x) 431e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 432e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 433ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#undef _INLINE_ 434ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o 435e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif /* _BLKID_PROBE_H */ 436