1 #include <linux/types.h> /* for __u32 etc */
3 * Copyright (C) Andreas Neuper, Sep 1998.
4 * This file may be modified and redistributed under
5 * the terms of the GNU Public License.
8 struct device_parameter
{ /* 48 bytes */
12 unsigned char sparecyl
;
13 unsigned short pcylcount
;
14 unsigned short head_vol0
;
15 unsigned short ntrks
; /* tracks in cyl 0 or vol 0 */
16 unsigned char cmd_tag_queue_depth
;
17 unsigned char unused0
;
18 unsigned short unused1
;
19 unsigned short nsect
; /* sectors/tracks in cyl 0 or vol 0 */
21 unsigned short ilfact
;
22 unsigned int flags
; /* controller flags */
23 unsigned int datarate
;
24 unsigned int retries_on_error
;
25 unsigned int ms_per_word
;
26 unsigned short xylogics_gap1
;
27 unsigned short xylogics_syncdelay
;
28 unsigned short xylogics_readdelay
;
29 unsigned short xylogics_gap2
;
30 unsigned short xylogics_readgate
;
31 unsigned short xylogics_writecont
;
34 #define SGI_VOLUME 0x06
37 #define SGI_VOLHDR 0x00
38 #define ENTIRE_DISK SGI_VOLUME
42 #define SECTOR_SLIP 0x01
43 #define SECTOR_FWD 0x02
44 #define TRACK_FWD 0x04
45 #define TRACK_MULTIVOL 0x08
46 #define IGNORE_ERRORS 0x10
48 #define ENABLE_CMDTAGQ 0x40
51 unsigned int magic
; /* expect SGI_LABEL_MAGIC */
52 unsigned short boot_part
; /* active boot partition */
53 unsigned short swap_part
; /* active swap partition */
54 unsigned char boot_file
[16]; /* name of the bootfile */
55 struct device_parameter devparam
; /* 1 * 48 bytes */
56 struct volume_directory
{ /* 15 * 16 bytes */
57 unsigned char vol_file_name
[8]; /* an character array */
58 unsigned int vol_file_start
; /* number of logical block */
59 unsigned int vol_file_size
; /* number of bytes */
61 struct sgi_partition
{ /* 16 * 12 bytes */
62 unsigned int num_sectors
; /* number of blocks */
63 unsigned int start_sector
; /* sector must be cylinder aligned */
67 unsigned int fillbytes
;
71 unsigned int magic
; /* looks like a magic number */
80 unsigned char scsi_string
[50];
81 unsigned char serial
[137];
82 unsigned short check1816
;
83 unsigned char installer
[225];
86 #define SGI_LABEL_MAGIC 0x0be5a941
87 #define SGI_LABEL_MAGIC_SWAPPED 0x41a9e50b
88 #define SGI_INFO_MAGIC 0x00072959
89 #define SGI_INFO_MAGIC_SWAPPED 0x59290700
90 #define SSWAP16(x) (other_endian ? __swap16(x) \
92 #define SSWAP32(x) (other_endian ? __swap32(x) \
94 #define scround(x) ((x+(display_factor-1)*unit_flag)/display_factor)
97 #define sgilabel ((sgi_partition *)buffer)
98 #define sgiparam (sgilabel->devparam)
99 extern char buffer
[MAX_SECTOR_SIZE
];
100 extern char changed
[MAXIMUM_PARTS
];
101 extern uint heads
, sectors
, cylinders
;
102 extern int show_begin
;
103 extern int sgi_label
;
104 extern char *partition_type(unsigned char type
);
105 extern void update_units(void);
106 extern char read_chars(char *mesg
);
108 /* fdisksgilabel.c */
109 extern struct systypes sgi_sys_types
[];
110 extern void sgi_nolabel( void );
111 extern int check_sgi_label( void );
112 extern void sgi_list_table( int xtra
);
113 extern void sgi_change_sysid( int i
, int sys
);
114 extern int sgi_get_start_sector( int i
);
115 extern int sgi_get_num_sectors( int i
);
116 extern int sgi_get_sysid( int i
);
117 extern void sgi_delete_partition( int i
);
118 extern void sgi_add_partition( int n
, int sys
);
119 extern void create_sgilabel( void );
120 extern void create_sgiinfo( void );
121 extern int verify_sgi( int verbose
);
122 extern void sgi_write_table( void );
123 extern void sgi_set_ilfact( void );
124 extern void sgi_set_rspeed( void );
125 extern void sgi_set_pcylcount( void );
126 extern void sgi_set_xcyl( void );
127 extern void sgi_set_ncyl( void );
128 extern void sgi_set_bootpartition( int i
);
129 extern void sgi_set_swappartition( int i
);
130 extern int sgi_get_bootpartition( void );
131 extern int sgi_get_swappartition( void );
132 extern void sgi_set_bootfile( const char* aFile
);
133 extern const char *sgi_get_bootfile( void );