LCOV - code coverage report
Current view: top level - lkbce/include/linux - iso_fs.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 5 100.0 %
Date: 2017-01-25 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef _ISOFS_FS_H
       2             : #define _ISOFS_FS_H
       3             : 
       4             : #include <linux/types.h>
       5             : #include <linux/magic.h>
       6             : 
       7             : /*
       8             :  * The isofs filesystem constants/structures
       9             :  */
      10             : 
      11             : /* This part borrowed from the bsd386 isofs */
      12             : #define ISODCL(from, to) (to - from + 1)
      13             : 
      14             : struct iso_volume_descriptor {
      15             :         char type[ISODCL(1,1)]; /* 711 */
      16             :         char id[ISODCL(2,6)];
      17             :         char version[ISODCL(7,7)];
      18             :         char data[ISODCL(8,2048)];
      19             : };
      20           1 : 
      21             : /* volume descriptor types */
      22             : #define ISO_VD_PRIMARY 1
      23             : #define ISO_VD_SUPPLEMENTARY 2
      24             : #define ISO_VD_END 255
      25             : 
      26             : #define ISO_STANDARD_ID "CD001"
      27             : 
      28             : struct iso_primary_descriptor {
      29             :         char type                       [ISODCL (  1,   1)]; /* 711 */
      30             :         char id                         [ISODCL (  2,   6)];
      31             :         char version                    [ISODCL (  7,   7)]; /* 711 */
      32             :         char unused1                    [ISODCL (  8,   8)];
      33             :         char system_id                  [ISODCL (  9,  40)]; /* achars */
      34             :         char volume_id                  [ISODCL ( 41,  72)]; /* dchars */
      35             :         char unused2                    [ISODCL ( 73,  80)];
      36             :         char volume_space_size          [ISODCL ( 81,  88)]; /* 733 */
      37             :         char unused3                    [ISODCL ( 89, 120)];
      38             :         char volume_set_size            [ISODCL (121, 124)]; /* 723 */
      39             :         char volume_sequence_number     [ISODCL (125, 128)]; /* 723 */
      40             :         char logical_block_size         [ISODCL (129, 132)]; /* 723 */
      41             :         char path_table_size            [ISODCL (133, 140)]; /* 733 */
      42             :         char type_l_path_table          [ISODCL (141, 144)]; /* 731 */
      43             :         char opt_type_l_path_table      [ISODCL (145, 148)]; /* 731 */
      44             :         char type_m_path_table          [ISODCL (149, 152)]; /* 732 */
      45             :         char opt_type_m_path_table      [ISODCL (153, 156)]; /* 732 */
      46             :         char root_directory_record      [ISODCL (157, 190)]; /* 9.1 */
      47             :         char volume_set_id              [ISODCL (191, 318)]; /* dchars */
      48             :         char publisher_id               [ISODCL (319, 446)]; /* achars */
      49             :         char preparer_id                [ISODCL (447, 574)]; /* achars */
      50             :         char application_id             [ISODCL (575, 702)]; /* achars */
      51             :         char copyright_file_id          [ISODCL (703, 739)]; /* 7.5 dchars */
      52             :         char abstract_file_id           [ISODCL (740, 776)]; /* 7.5 dchars */
      53             :         char bibliographic_file_id      [ISODCL (777, 813)]; /* 7.5 dchars */
      54             :         char creation_date              [ISODCL (814, 830)]; /* 8.4.26.1 */
      55             :         char modification_date          [ISODCL (831, 847)]; /* 8.4.26.1 */
      56             :         char expiration_date            [ISODCL (848, 864)]; /* 8.4.26.1 */
      57             :         char effective_date             [ISODCL (865, 881)]; /* 8.4.26.1 */
      58             :         char file_structure_version     [ISODCL (882, 882)]; /* 711 */
      59             :         char unused4                    [ISODCL (883, 883)];
      60             :         char application_data           [ISODCL (884, 1395)];
      61             :         char unused5                    [ISODCL (1396, 2048)];
      62             : };
      63           1 : 
      64             : /* Almost the same as the primary descriptor but two fields are specified */
      65             : struct iso_supplementary_descriptor {
      66             :         char type                       [ISODCL (  1,   1)]; /* 711 */
      67             :         char id                         [ISODCL (  2,   6)];
      68             :         char version                    [ISODCL (  7,   7)]; /* 711 */
      69             :         char flags                      [ISODCL (  8,   8)]; /* 853 */
      70             :         char system_id                  [ISODCL (  9,  40)]; /* achars */
      71             :         char volume_id                  [ISODCL ( 41,  72)]; /* dchars */
      72             :         char unused2                    [ISODCL ( 73,  80)];
      73             :         char volume_space_size          [ISODCL ( 81,  88)]; /* 733 */
      74             :         char escape                     [ISODCL ( 89, 120)]; /* 856 */
      75             :         char volume_set_size            [ISODCL (121, 124)]; /* 723 */
      76             :         char volume_sequence_number     [ISODCL (125, 128)]; /* 723 */
      77             :         char logical_block_size         [ISODCL (129, 132)]; /* 723 */
      78             :         char path_table_size            [ISODCL (133, 140)]; /* 733 */
      79             :         char type_l_path_table          [ISODCL (141, 144)]; /* 731 */
      80             :         char opt_type_l_path_table      [ISODCL (145, 148)]; /* 731 */
      81             :         char type_m_path_table          [ISODCL (149, 152)]; /* 732 */
      82             :         char opt_type_m_path_table      [ISODCL (153, 156)]; /* 732 */
      83             :         char root_directory_record      [ISODCL (157, 190)]; /* 9.1 */
      84             :         char volume_set_id              [ISODCL (191, 318)]; /* dchars */
      85             :         char publisher_id               [ISODCL (319, 446)]; /* achars */
      86             :         char preparer_id                [ISODCL (447, 574)]; /* achars */
      87             :         char application_id             [ISODCL (575, 702)]; /* achars */
      88             :         char copyright_file_id          [ISODCL (703, 739)]; /* 7.5 dchars */
      89             :         char abstract_file_id           [ISODCL (740, 776)]; /* 7.5 dchars */
      90             :         char bibliographic_file_id      [ISODCL (777, 813)]; /* 7.5 dchars */
      91             :         char creation_date              [ISODCL (814, 830)]; /* 8.4.26.1 */
      92             :         char modification_date          [ISODCL (831, 847)]; /* 8.4.26.1 */
      93             :         char expiration_date            [ISODCL (848, 864)]; /* 8.4.26.1 */
      94             :         char effective_date             [ISODCL (865, 881)]; /* 8.4.26.1 */
      95             :         char file_structure_version     [ISODCL (882, 882)]; /* 711 */
      96             :         char unused4                    [ISODCL (883, 883)];
      97             :         char application_data           [ISODCL (884, 1395)];
      98             :         char unused5                    [ISODCL (1396, 2048)];
      99             : };
     100           1 : 
     101             : 
     102             : #define HS_STANDARD_ID "CDROM"
     103             : 
     104             : struct  hs_volume_descriptor {
     105             :         char foo                        [ISODCL (  1,   8)]; /* 733 */
     106             :         char type                       [ISODCL (  9,   9)]; /* 711 */
     107             :         char id                         [ISODCL ( 10,  14)];
     108             :         char version                    [ISODCL ( 15,  15)]; /* 711 */
     109             :         char data[ISODCL(16,2048)];
     110             : };
     111           1 : 
     112             : 
     113             : struct hs_primary_descriptor {
     114             :         char foo                        [ISODCL (  1,   8)]; /* 733 */
     115             :         char type                       [ISODCL (  9,   9)]; /* 711 */
     116             :         char id                         [ISODCL ( 10,  14)];
     117             :         char version                    [ISODCL ( 15,  15)]; /* 711 */
     118             :         char unused1                    [ISODCL ( 16,  16)]; /* 711 */
     119             :         char system_id                  [ISODCL ( 17,  48)]; /* achars */
     120             :         char volume_id                  [ISODCL ( 49,  80)]; /* dchars */
     121             :         char unused2                    [ISODCL ( 81,  88)]; /* 733 */
     122             :         char volume_space_size          [ISODCL ( 89,  96)]; /* 733 */
     123             :         char unused3                    [ISODCL ( 97, 128)]; /* 733 */
     124             :         char volume_set_size            [ISODCL (129, 132)]; /* 723 */
     125             :         char volume_sequence_number     [ISODCL (133, 136)]; /* 723 */
     126             :         char logical_block_size         [ISODCL (137, 140)]; /* 723 */
     127             :         char path_table_size            [ISODCL (141, 148)]; /* 733 */
     128             :         char type_l_path_table          [ISODCL (149, 152)]; /* 731 */
     129             :         char unused4                    [ISODCL (153, 180)]; /* 733 */
     130             :         char root_directory_record      [ISODCL (181, 214)]; /* 9.1 */
     131             : };
     132             : 
     133             : /* We use this to help us look up the parent inode numbers. */
     134             : 
     135             : struct iso_path_table{
     136             :         unsigned char  name_len[2];     /* 721 */
     137             :         char extent[4];         /* 731 */
     138             :         char  parent[2];        /* 721 */
     139             :         char name[0];
     140             : } __attribute__((packed));
     141           1 : 
     142             : /* high sierra is identical to iso, except that the date is only 6 bytes, and
     143             :    there is an extra reserved byte after the flags */
     144             : 
     145             : struct iso_directory_record {
     146             :         char length                     [ISODCL (1, 1)]; /* 711 */
     147             :         char ext_attr_length            [ISODCL (2, 2)]; /* 711 */
     148             :         char extent                     [ISODCL (3, 10)]; /* 733 */
     149             :         char size                       [ISODCL (11, 18)]; /* 733 */
     150             :         char date                       [ISODCL (19, 25)]; /* 7 by 711 */
     151             :         char flags                      [ISODCL (26, 26)];
     152             :         char file_unit_size             [ISODCL (27, 27)]; /* 711 */
     153             :         char interleave                 [ISODCL (28, 28)]; /* 711 */
     154             :         char volume_sequence_number     [ISODCL (29, 32)]; /* 723 */
     155             :         unsigned char name_len          [ISODCL (33, 33)]; /* 711 */
     156             :         char name                       [0];
     157             : } __attribute__((packed));
     158             : 
     159             : #define ISOFS_BLOCK_BITS 11
     160             : #define ISOFS_BLOCK_SIZE 2048
     161             : 
     162             : #define ISOFS_BUFFER_SIZE(INODE) ((INODE)->i_sb->s_blocksize)
     163             : #define ISOFS_BUFFER_BITS(INODE) ((INODE)->i_sb->s_blocksize_bits)
     164             : 
     165             : #endif /* _ISOFS_FS_H */

Generated by: LCOV version 1.10