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