blob: 402656428eb117e6ee34b09d23386948303a017c [file] [log] [blame]
#ifndef ISO9660_FS_H
#define ISO9660_FS_H
#include <klibc/compiler.h>
#include <stdint.h>
/* Boot info table */
struct iso_boot_info {
uint32_t pvd; /* LBA of primary volume descriptor */
uint32_t file; /* LBA of boot file */
uint32_t length; /* Length of boot file */
uint32_t csum; /* Checksum of boot file */
uint32_t reserved[10]; /* Currently unused */
};
extern struct iso_boot_info iso_boot_info; /* In isolinux.asm */
/* The root dir entry offset in the primary volume descriptor */
#define ROOT_DIR_OFFSET 156
struct iso_dir_entry {
uint8_t length; /* 00 */
uint8_t ext_attr_length; /* 01 */
uint32_t extent_le; /* 02 */
uint32_t extent_be; /* 06 */
uint32_t size_le; /* 0a */
uint32_t size_be; /* 0e */
uint8_t date[7]; /* 12 */
uint8_t flags; /* 19 */
uint8_t file_unit_size; /* 1a */
uint8_t interleave; /* 1b */
uint16_t volume_sequence_number_le; /* 1c */
uint16_t volume_sequence_number_be; /* 1e */
uint8_t name_len; /* 20 */
char name[0]; /* 21 */
} __packed;
struct iso_sb_info {
struct iso_dir_entry root;
int do_rr; /* 1 , 2 = try to process Rock Ridge info , 0 = do not.
2 indicates that the id of RRIP 1.12 was found.
*/
int susp_skip; /* Skip length from SUSP entry SP */
};
/*
* iso9660 private inode information
*/
struct iso9660_pvt_inode {
uint32_t lba; /* Starting LBA of file data area*/
};
#define PVT(i) ((struct iso9660_pvt_inode *)((i)->pvt))
#endif /* iso9660_fs.h */