Annotation of qemu/roms/openbios/fs/grubfs/filesys.h, revision 1.1

1.1     ! root        1: /* GRUB compatibility header
        !             2:  *
        !             3:  * taken from filo and grub.
        !             4:  */
        !             5: 
        !             6: /*
        !             7:  *  GRUB  --  GRand Unified Bootloader
        !             8:  *  Copyright (C) 1999,2000,2001,2003   Free Software Foundation, Inc.
        !             9:  *
        !            10:  *  This program is free software; you can redistribute it and/or modify
        !            11:  *  it under the terms of the GNU General Public License as published by
        !            12:  *  the Free Software Foundation; either version 2 of the License, or
        !            13:  *  (at your option) any later version.
        !            14:  *
        !            15:  *  This program is distributed in the hope that it will be useful,
        !            16:  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            17:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            18:  *  GNU General Public License for more details.
        !            19:  *
        !            20:  *  You should have received a copy of the GNU General Public License
        !            21:  *  along with this program; if not, write to the Free Software
        !            22:  *  Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
        !            23:  *  MA 02110-1301, USA.
        !            24:  */
        !            25: 
        !            26: /* This disables some portion of code */
        !            27: #define STAGE1_5 1
        !            28: 
        !            29: #if defined CONFIG_X86
        !            30: /*
        !            31:  * ffz = Find First Zero in word. Undefined if no zero exists,
        !            32:  * so code should check against ~0UL first..
        !            33:  */
        !            34: static __inline__ unsigned int
        !            35: ffz (unsigned int word)
        !            36: {
        !            37:        __asm__ ("bsfl %1,%0"
        !            38:          : "=r" (word)
        !            39:          : "r" (~word));
        !            40:        return word;
        !            41: }
        !            42: 
        !            43: static __inline__ unsigned int
        !            44: log2 (unsigned int word)
        !            45: {
        !            46:        __asm__ ("bsfl %1,%0"
        !            47:          : "=r" (word)
        !            48:          : "r" (word));
        !            49:        return word;
        !            50: }
        !            51: 
        !            52: #elif defined (CONFIG_PPC)
        !            53: static __inline__ unsigned long
        !            54:  __ilog2(unsigned long x)
        !            55: {
        !            56:        unsigned long lz;
        !            57: 
        !            58:        asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
        !            59:        return 31 - lz;
        !            60: }
        !            61: 
        !            62: static __inline__ unsigned long
        !            63: ffz(unsigned long x)
        !            64: {
        !            65:        if ((x = ~x) == 0)
        !            66:                return 32;
        !            67: 
        !            68:        return __ilog2(x & -x);
        !            69: }
        !            70: 
        !            71: #define log2(n) ffz(~(n))
        !            72: 
        !            73: #else
        !            74: 
        !            75: static __inline__ unsigned int log2(unsigned int word)
        !            76: {
        !            77:        /* assume 8 bits per byte. */
        !            78:        unsigned int i = 1 << (sizeof(word)*8 - 1);
        !            79:        unsigned int pow = sizeof(word) * 8 - 1;
        !            80: 
        !            81:        if (! word) {
        !            82:                /* invalid parameter */
        !            83:                return -1;
        !            84:        }
        !            85:        for(; i > word; i >>= 1, pow--) ;
        !            86: 
        !            87:         return pow;
        !            88: }
        !            89: 
        !            90: #define ffz(n) log2(~(n))
        !            91: 
        !            92: #endif
        !            93: 
        !            94: static inline int
        !            95: substring (const char *s1, const char *s2)
        !            96: {
        !            97:   while (*s1 == *s2)
        !            98:     {
        !            99:       /* The strings match exactly. */
        !           100:       if (! *(s1++))
        !           101:        return 0;
        !           102:       s2 ++;
        !           103:     }
        !           104: 
        !           105:   /* S1 is a substring of S2. */
        !           106:   if (*s1 == 0)
        !           107:     return -1;
        !           108: 
        !           109:   /* S1 isn't a substring. */
        !           110:   return 1;
        !           111: }
        !           112: 
        !           113: #define grub_memmove memmove
        !           114: #define grub_strcmp strcmp
        !           115: 
        !           116: #define MAXINT 0x7fffffff
        !           117: 
        !           118: /* This is only used by fsys_* to determine if it's hard disk. If it is,
        !           119:  * they try to guess filesystem type by partition type. I guess it is
        !           120:  * not necessory, so hardcoded to 0 (first floppy) --ts1 */
        !           121: #define current_drive 0
        !           122: #define current_slice 0
        !           123: #define current_partition 0
        !           124: 
        !           125: /* we fake this for now, assuming that the filesystem is not corrupt */
        !           126: #define part_length -1
        !           127: extern int filepos;
        !           128: extern int filemax;
        !           129: extern int fsmax;
        !           130: 
        !           131: /* Error codes (descriptions are in common.c) */
        !           132: typedef enum
        !           133: {
        !           134:   ERR_NONE = 0,
        !           135:   ERR_BAD_FILENAME,
        !           136:   ERR_BAD_FILETYPE,
        !           137:   ERR_BAD_GZIP_DATA,
        !           138:   ERR_BAD_GZIP_HEADER,
        !           139:   ERR_BAD_PART_TABLE,
        !           140:   ERR_BAD_VERSION,
        !           141:   ERR_BELOW_1MB,
        !           142:   ERR_BOOT_COMMAND,
        !           143:   ERR_BOOT_FAILURE,
        !           144:   ERR_BOOT_FEATURES,
        !           145:   ERR_DEV_FORMAT,
        !           146:   ERR_DEV_VALUES,
        !           147:   ERR_EXEC_FORMAT,
        !           148:   ERR_FILELENGTH,
        !           149:   ERR_FILE_NOT_FOUND,
        !           150:   ERR_FSYS_CORRUPT,
        !           151:   ERR_FSYS_MOUNT,
        !           152:   ERR_GEOM,
        !           153:   ERR_NEED_LX_KERNEL,
        !           154:   ERR_NEED_MB_KERNEL,
        !           155:   ERR_NO_DISK,
        !           156:   ERR_NO_PART,
        !           157:   ERR_NUMBER_PARSING,
        !           158:   ERR_OUTSIDE_PART,
        !           159:   ERR_READ,
        !           160:   ERR_SYMLINK_LOOP,
        !           161:   ERR_UNRECOGNIZED,
        !           162:   ERR_WONT_FIT,
        !           163:   ERR_WRITE,
        !           164:   ERR_BAD_ARGUMENT,
        !           165:   ERR_UNALIGNED,
        !           166:   ERR_PRIVILEGED,
        !           167:   ERR_DEV_NEED_INIT,
        !           168:   ERR_NO_DISK_SPACE,
        !           169:   ERR_NUMBER_OVERFLOW,
        !           170: 
        !           171:   MAX_ERR_NUM
        !           172: } grub_error_t;
        !           173: 
        !           174: extern grub_error_t errnum;
        !           175: 
        !           176: #define grub_open file_open
        !           177: #define grub_read file_read
        !           178: #define grub_seek file_seek
        !           179: #define grub_close file_close
        !           180: 
        !           181: /* instrumentation variables */
        !           182: /* (Not used in FILO) */
        !           183: extern void (*disk_read_hook) (int, int, int);
        !           184: extern void (*disk_read_func) (int, int, int);
        !           185: 
        !           186: #define FSYS_BUFLEN 0x8000
        !           187: extern char FSYS_BUF[FSYS_BUFLEN];
        !           188: 
        !           189: #define print_possibilities 0
        !           190: 
        !           191: #define SECTOR_SIZE 512
        !           192: #define SECTOR_BITS 9
        !           193: 
        !           194: #ifdef CONFIG_FSYS_FAT
        !           195: int fat_mount (void);
        !           196: int fat_read (char *buf, int len);
        !           197: int fat_dir (char *dirname);
        !           198: #endif
        !           199: 
        !           200: #ifdef CONFIG_FSYS_EXT2FS
        !           201: int ext2fs_mount (void);
        !           202: int ext2fs_read (char *buf, int len);
        !           203: int ext2fs_dir (char *dirname);
        !           204: #endif
        !           205: 
        !           206: #ifdef CONFIG_FSYS_MINIX
        !           207: int minix_mount (void);
        !           208: int minix_read (char *buf, int len);
        !           209: int minix_dir (char *dirname);
        !           210: #endif
        !           211: 
        !           212: #ifdef CONFIG_FSYS_REISERFS
        !           213: int reiserfs_mount (void);
        !           214: int reiserfs_read (char *buf, int len);
        !           215: int reiserfs_dir (char *dirname);
        !           216: int reiserfs_embed (int *start_sector, int needed_sectors);
        !           217: #endif
        !           218: 
        !           219: #ifdef CONFIG_FSYS_JFS
        !           220: int jfs_mount (void);
        !           221: int jfs_read (char *buf, int len);
        !           222: int jfs_dir (char *dirname);
        !           223: int jfs_embed (int *start_sector, int needed_sectors);
        !           224: #endif
        !           225: 
        !           226: #ifdef CONFIG_FSYS_XFS
        !           227: int xfs_mount (void);
        !           228: int xfs_read (char *buf, int len);
        !           229: int xfs_dir (char *dirname);
        !           230: #endif
        !           231: 
        !           232: #ifdef CONFIG_FSYS_UFS
        !           233: int ufs_mount (void);
        !           234: int ufs_read (char *buf, int len);
        !           235: int ufs_dir (char *dirname);
        !           236: int ufs_embed (int *start_sector, int needed_sectors);
        !           237: #endif
        !           238: 
        !           239: #ifdef CONFIG_FSYS_ISO9660
        !           240: int iso9660_mount (void);
        !           241: int iso9660_read (char *buf, int len);
        !           242: int iso9660_dir (char *dirname);
        !           243: #endif
        !           244: 
        !           245: /* This is not a flag actually, but used as if it were a flag.  */
        !           246: #define PC_SLICE_TYPE_HIDDEN_FLAG      0x10
        !           247: 
        !           248: #define PC_SLICE_TYPE_NONE             0
        !           249: #define PC_SLICE_TYPE_FAT12            1
        !           250: #define PC_SLICE_TYPE_FAT16_LT32M      4
        !           251: #define PC_SLICE_TYPE_EXTENDED         5
        !           252: #define PC_SLICE_TYPE_FAT16_GT32M      6
        !           253: #define PC_SLICE_TYPE_FAT32            0xb
        !           254: #define PC_SLICE_TYPE_FAT32_LBA                0xc
        !           255: #define PC_SLICE_TYPE_FAT16_LBA                0xe
        !           256: #define PC_SLICE_TYPE_WIN95_EXTENDED   0xf
        !           257: #define PC_SLICE_TYPE_EZD              0x55
        !           258: #define PC_SLICE_TYPE_MINIX            0x80
        !           259: #define PC_SLICE_TYPE_LINUX_MINIX      0x81
        !           260: #define PC_SLICE_TYPE_EXT2FS           0x83
        !           261: #define PC_SLICE_TYPE_LINUX_EXTENDED   0x85
        !           262: #define PC_SLICE_TYPE_VSTAFS           0x9e
        !           263: #define PC_SLICE_TYPE_DELL_UTIL                0xde
        !           264: #define PC_SLICE_TYPE_LINUX_RAID       0xfd
        !           265: 
        !           266: /* For convinience.  */
        !           267: /* Check if TYPE is a FAT partition type. Clear the hidden flag before
        !           268:    the check, to allow the user to mount a hidden partition in GRUB.  */
        !           269: #define IS_PC_SLICE_TYPE_FAT(type)     \
        !           270:   ({ int _type = (type) & ~PC_SLICE_TYPE_HIDDEN_FLAG; \
        !           271:      _type == PC_SLICE_TYPE_FAT12 \
        !           272:      || _type == PC_SLICE_TYPE_FAT16_LT32M \
        !           273:      || _type == PC_SLICE_TYPE_FAT16_GT32M \
        !           274:      || _type == PC_SLICE_TYPE_FAT16_LBA \
        !           275:      || _type == PC_SLICE_TYPE_FAT32 \
        !           276:      || _type == PC_SLICE_TYPE_FAT32_LBA \
        !           277:      || _type == PC_SLICE_TYPE_DELL_UTIL; })
        !           278: 
        !           279: #define IS_PC_SLICE_TYPE_MINIX(type) \
        !           280:   (((type) == PC_SLICE_TYPE_MINIX)     \
        !           281:    || ((type) == PC_SLICE_TYPE_LINUX_MINIX))
        !           282: 
        !           283: #define IS_PC_SLICE_TYPE_BSD_WITH_FS(type,fs) 0
        !           284: 
        !           285: /* possible values for the *BSD-style partition type */
        !           286: #define        FS_UNUSED       0       /* unused */
        !           287: #define        FS_SWAP         1       /* swap */
        !           288: #define        FS_V6           2       /* Sixth Edition */
        !           289: #define        FS_V7           3       /* Seventh Edition */
        !           290: #define        FS_SYSV         4       /* System V */
        !           291: #define        FS_V71K         5       /* V7 with 1K blocks (4.1, 2.9) */
        !           292: #define        FS_V8           6       /* Eighth Edition, 4K blocks */
        !           293: #define        FS_BSDFFS       7       /* 4.2BSD fast file system */
        !           294: #define        FS_MSDOS        8       /* MSDOS file system */
        !           295: #define        FS_BSDLFS       9       /* 4.4BSD log-structured file system */
        !           296: #define        FS_OTHER        10      /* in use, but unknown/unsupported */
        !           297: #define        FS_HPFS         11      /* OS/2 high-performance file system */
        !           298: #define        FS_ISO9660      12      /* ISO 9660, normally CD-ROM */
        !           299: #define        FS_BOOT         13      /* partition contains bootstrap */
        !           300: #define        FS_ADOS         14      /* AmigaDOS fast file system */
        !           301: #define        FS_HFS          15      /* Macintosh HFS */
        !           302: #define        FS_FILECORE     16      /* Acorn Filecore Filing System */
        !           303: #define        FS_EXT2FS       17      /* Linux Extended 2 file system */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.