1 #ifndef ISO9660_FS_H 2 #define ISO9660_FS_H 3 4 #include <klibc/compiler.h> 5 #include <stdint.h> 6 7 /* Boot info table */ 8 struct iso_boot_info { 9 uint32_t pvd; /* LBA of primary volume descriptor */ 10 uint32_t file; /* LBA of boot file */ 11 uint32_t length; /* Length of boot file */ 12 uint32_t csum; /* Checksum of boot file */ 13 uint32_t reserved[10]; /* Currently unused */ 14 }; 15 16 extern struct iso_boot_info iso_boot_info; /* In isolinux.asm */ 17 18 /* The root dir entry offset in the primary volume descriptor */ 19 #define ROOT_DIR_OFFSET 156 20 21 struct iso_dir_entry { 22 uint8_t length; /* 00 */ 23 uint8_t ext_attr_length; /* 01 */ 24 uint32_t extent_le; /* 02 */ 25 uint32_t extent_be; /* 06 */ 26 uint32_t size_le; /* 0a */ 27 uint32_t size_be; /* 0e */ 28 uint8_t date[7]; /* 12 */ 29 uint8_t flags; /* 19 */ 30 uint8_t file_unit_size; /* 1a */ 31 uint8_t interleave; /* 1b */ 32 uint16_t volume_sequence_number_le; /* 1c */ 33 uint16_t volume_sequence_number_be; /* 1e */ 34 uint8_t name_len; /* 20 */ 35 char name[0]; /* 21 */ 36 } __packed; 37 38 struct iso_sb_info { 39 struct iso_dir_entry root; 40 41 int do_rr; /* 1 , 2 = try to process Rock Ridge info , 0 = do not. 42 2 indicates that the id of RRIP 1.12 was found. 43 */ 44 int susp_skip; /* Skip length from SUSP entry SP */ 45 }; 46 47 /* 48 * iso9660 private inode information 49 */ 50 struct iso9660_pvt_inode { 51 uint32_t lba; /* Starting LBA of file data area*/ 52 }; 53 54 #define PVT(i) ((struct iso9660_pvt_inode *)((i)->pvt)) 55 56 #endif /* iso9660_fs.h */ 57