]> git.ipfire.org Git - thirdparty/util-linux.git/blame - fdisk/fdisksgilabel.h
Imported from util-linux-2.11b tarball.
[thirdparty/util-linux.git] / fdisk / fdisksgilabel.h
CommitLineData
5c36a0eb
KZ
1#include <linux/types.h> /* for __u32 etc */
2/*
3 * Copyright (C) Andreas Neuper, Sep 1998.
4 * This file may be modified and redistributed under
5 * the terms of the GNU Public License.
6 */
7
8struct device_parameter { /* 48 bytes */
9 unsigned char skew;
10 unsigned char gap1;
11 unsigned char gap2;
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 */
20 unsigned short bytes;
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;
32};
33
c07ebfa1
KZ
34#define SGI_VOLHDR 0x00
35/* 1 and 2 were used for drive types no longer supported by SGI */
36#define SGI_SWAP 0x03
37/* 4 and 5 were for filesystem types SGI haven't ever supported on MIPS CPUs */
5c36a0eb
KZ
38#define SGI_VOLUME 0x06
39#define SGI_EFS 0x07
c07ebfa1
KZ
40#define SGI_LVOL 0x08
41#define SGI_RLVOL 0x09
42#define SGI_XFS 0x0a
43#define SGI_XFSLOG 0x0b
44#define SGI_XLV 0x0c
45#define SGI_XVM 0x0d
5c36a0eb
KZ
46#define ENTIRE_DISK SGI_VOLUME
47/*
48 * controller flags
49 */
50#define SECTOR_SLIP 0x01
51#define SECTOR_FWD 0x02
52#define TRACK_FWD 0x04
53#define TRACK_MULTIVOL 0x08
54#define IGNORE_ERRORS 0x10
55#define RESEEK 0x20
56#define ENABLE_CMDTAGQ 0x40
57
58typedef struct {
c07ebfa1 59 unsigned int magic; /* expect SGI_LABEL_MAGIC */
5c36a0eb
KZ
60 unsigned short boot_part; /* active boot partition */
61 unsigned short swap_part; /* active swap partition */
62 unsigned char boot_file[16]; /* name of the bootfile */
63 struct device_parameter devparam; /* 1 * 48 bytes */
64 struct volume_directory { /* 15 * 16 bytes */
c07ebfa1 65 unsigned char vol_file_name[8]; /* a character array */
5c36a0eb
KZ
66 unsigned int vol_file_start; /* number of logical block */
67 unsigned int vol_file_size; /* number of bytes */
68 } directory[15];
69 struct sgi_partition { /* 16 * 12 bytes */
70 unsigned int num_sectors; /* number of blocks */
c07ebfa1 71 unsigned int start_sector; /* must be cylinder aligned */
5c36a0eb
KZ
72 unsigned int id;
73 } partitions[16];
74 unsigned int csum;
75 unsigned int fillbytes;
76} sgi_partition;
77
78typedef struct {
79 unsigned int magic; /* looks like a magic number */
80 unsigned int a2;
81 unsigned int a3;
82 unsigned int a4;
83 unsigned int b1;
84 unsigned short b2;
85 unsigned short b3;
86 unsigned int c[16];
87 unsigned short d[3];
88 unsigned char scsi_string[50];
89 unsigned char serial[137];
90 unsigned short check1816;
91 unsigned char installer[225];
92} sgiinfo;
93
94#define SGI_LABEL_MAGIC 0x0be5a941
95#define SGI_LABEL_MAGIC_SWAPPED 0x41a9e50b
96#define SGI_INFO_MAGIC 0x00072959
97#define SGI_INFO_MAGIC_SWAPPED 0x59290700
98#define SSWAP16(x) (other_endian ? __swap16(x) \
99 : (__u16)(x))
100#define SSWAP32(x) (other_endian ? __swap32(x) \
101 : (__u32)(x))
5c36a0eb
KZ
102
103/* fdisk.c */
22853e4a 104#define sgilabel ((sgi_partition *)MBRbuffer)
5c36a0eb 105#define sgiparam (sgilabel->devparam)
22853e4a 106extern char MBRbuffer[MAX_SECTOR_SIZE];
5c36a0eb
KZ
107extern uint heads, sectors, cylinders;
108extern int show_begin;
109extern int sgi_label;
110extern char *partition_type(unsigned char type);
111extern void update_units(void);
112extern char read_chars(char *mesg);
22853e4a 113extern void set_changed(int);
5c36a0eb
KZ
114
115/* fdisksgilabel.c */
116extern struct systypes sgi_sys_types[];
117extern void sgi_nolabel( void );
118extern int check_sgi_label( void );
119extern void sgi_list_table( int xtra );
120extern void sgi_change_sysid( int i, int sys );
121extern int sgi_get_start_sector( int i );
122extern int sgi_get_num_sectors( int i );
123extern int sgi_get_sysid( int i );
124extern void sgi_delete_partition( int i );
125extern void sgi_add_partition( int n, int sys );
126extern void create_sgilabel( void );
127extern void create_sgiinfo( void );
128extern int verify_sgi( int verbose );
129extern void sgi_write_table( void );
130extern void sgi_set_ilfact( void );
131extern void sgi_set_rspeed( void );
132extern void sgi_set_pcylcount( void );
133extern void sgi_set_xcyl( void );
134extern void sgi_set_ncyl( void );
135extern void sgi_set_bootpartition( int i );
136extern void sgi_set_swappartition( int i );
137extern int sgi_get_bootpartition( void );
138extern int sgi_get_swappartition( void );
139extern void sgi_set_bootfile( const char* aFile );
140extern const char *sgi_get_bootfile( void );