1 #ifndef FDISK_SGI_LABEL_H
2 #define FDISK_SGI_LABEL_H
9 * Copyright (C) Andreas Neuper, Sep 1998.
10 * This file may be modified and redistributed under
11 * the terms of the GNU Public License.
14 struct device_parameter { /* 48 bytes */
18 unsigned char sparecyl;
19 unsigned short pcylcount;
20 unsigned short head_vol0;
21 unsigned short ntrks; /* tracks in cyl 0 or vol 0 */
22 unsigned char cmd_tag_queue_depth;
23 unsigned char unused0;
24 unsigned short unused1;
25 unsigned short nsect; /* sectors/tracks in cyl 0 or vol 0 */
27 unsigned short ilfact;
28 unsigned int flags; /* controller flags */
29 unsigned int datarate;
30 unsigned int retries_on_error;
31 unsigned int ms_per_word;
32 unsigned short xylogics_gap1;
33 unsigned short xylogics_syncdelay;
34 unsigned short xylogics_readdelay;
35 unsigned short xylogics_gap2;
36 unsigned short xylogics_readgate;
37 unsigned short xylogics_writecont;
40 #define SGI_VOLHDR 0x00
41 /* 1 and 2 were used for drive types no longer supported by SGI */
43 /* 4 and 5 were for filesystem types SGI haven't ever supported on MIPS CPUs */
44 #define SGI_VOLUME 0x06
47 #define SGI_RLVOL 0x09
49 #define SGI_XFSLOG 0x0b
52 #define ENTIRE_DISK SGI_VOLUME
56 #define SECTOR_SLIP 0x01
57 #define SECTOR_FWD 0x02
58 #define TRACK_FWD 0x04
59 #define TRACK_MULTIVOL 0x08
60 #define IGNORE_ERRORS 0x10
62 #define CMDTAGQ_ENABLE 0x40
65 unsigned int magic; /* expect SGI_LABEL_MAGIC */
66 unsigned short boot_part; /* active boot partition */
67 unsigned short swap_part; /* active swap partition */
68 unsigned char boot_file[16]; /* name of the bootfile */
69 struct device_parameter devparam; /* 1 * 48 bytes */
70 struct volume_directory { /* 15 * 16 bytes */
71 unsigned char vol_file_name[8]; /* a character array */
72 unsigned int vol_file_start; /* number of logical block */
73 unsigned int vol_file_size; /* number of bytes */
75 struct sgi_partition { /* 16 * 12 bytes */
76 unsigned int num_sectors; /* number of blocks */
77 unsigned int start_sector; /* must be cylinder aligned */
81 unsigned int fillbytes;
85 unsigned int magic; /* looks like a magic number */
94 unsigned char scsi_string[50];
95 unsigned char serial[137];
96 unsigned short check1816;
97 unsigned char installer[225];
100 #define SGI_LABEL_MAGIC 0x0be5a941
101 #define SGI_LABEL_MAGIC_SWAPPED 0x41a9e50b
102 #define SGI_INFO_MAGIC 0x00072959
103 #define SGI_INFO_MAGIC_SWAPPED 0x59290700
105 #define SSWAP16(x) (other_endian ? swab16(x) : (uint16_t)(x))
106 #define SSWAP32(x) (other_endian ? swab32(x) : (uint32_t)(x))
109 #define sgilabel ((sgi_partition *)MBRbuffer)
110 #define sgiparam (sgilabel->devparam)
112 /* fdisksgilabel.c */
113 extern struct systypes sgi_sys_types[];
114 extern void sgi_nolabel( void );
115 extern int check_sgi_label( void );
116 extern void sgi_list_table( int xtra );
117 extern int sgi_change_sysid( int i, int sys );
118 extern unsigned int sgi_get_start_sector( int i );
119 extern unsigned int sgi_get_num_sectors( int i );
120 extern int sgi_get_sysid( int i );
121 extern void sgi_delete_partition( int i );
122 extern void sgi_add_partition( int n, int sys );
123 extern void create_sgilabel( void );
124 extern void create_sgiinfo( void );
125 extern int verify_sgi( int verbose );
126 extern void sgi_write_table( void );
127 extern void sgi_set_ilfact( void );
128 extern void sgi_set_rspeed( void );
129 extern void sgi_set_pcylcount( void );
130 extern void sgi_set_xcyl( void );
131 extern void sgi_set_ncyl( void );
132 extern void sgi_set_bootpartition( int i );
133 extern void sgi_set_swappartition( int i );
134 extern int sgi_get_bootpartition( void );
135 extern int sgi_get_swappartition( void );
136 extern void sgi_set_bootfile( const char* aFile );
137 extern const char *sgi_get_bootfile( void );
139 #endif /* FDISK_SGI_LABEL_H */