1RA(4) Kernel Interfaces Manual RA(4)
2
3
4
6 ra - MSCP disk controller interface
7
9 /sys/conf/SYSTEM:
10 NRAC ra_controllers # NRAD controllers
11 NRAD ra_drives # RX33/50, RC25, RD51/52/53/54, RA60/80/81/82
12
13 /etc/dtab:
14 #Name Unit# Addr Vector Br Handler(s) # Comments
15 ra ? 172150 154 5 raintr # uda50, rqdx1/2/3
16
17 major device number(s):
18 raw: 14
19 block: 5
20 minor device encoding:
21 bits 0007 specify partition of RA drive
22 bits 0070 specify RA drive
23 bits 0300 specify RA controller
24
26 This is a driver for the DEC UDA-50 disk controller and for other com‐
27 patible controllers. The UDA-50 communicates with the host through a
28 packet oriented protocol termed the Mass Storage Control Protocol
29 (MSCP). Consult the file <pdp/mscp.h> for a detailed description of
30 this protocol.
31
32 Files with minor device numbers 0 through 7 refer to various portions
33 of drive 0; minor devices 8 through 15 refer to drive 1, etc. The
34 standard device names begin with ``ra'' followed by the drive number
35 and then a letter a-h for partitions 0-7 respectively. The character ?
36 stands here for a drive number in the range 0-7.
37
38 The block files access the disk via the system's normal buffering mech‐
39 anism and may be read and written without regard to physical disk
40 records. There is also a `raw' interface which provides for direct
41 transmission between the disk and the user's read or write buffer. A
42 single read or write call results in exactly one I/O operation and
43 therefore raw I/O is considerably more efficient when many words are
44 transmitted. The names of the raw files conventionally begin with an
45 extra `r.'
46
47 In raw I/O the buffer must begin on a word (even) boundary, and counts
48 should be a multiple of 512 bytes (a disk sector). Likewise seek calls
49 should specify a multiple of 512 bytes.
50
52 This driver configures the drive type of each drive when it is first
53 opened. Partition information is read from the disklabel. If there is
54 no label or the label is corrupt then the 'a' partition is used to span
55 the entire drive.
56
57 The ra?a partition is normally used for the root file system, the ra?b
58 partition as a swap area, and the ra?c partition for pack-pack copying
59 (it maps the entire disk).
60
62 /dev/ra[0-7][a-h]
63 /dev/rra[0-7][a-h]
64 /dev/MAKEDEV script to create special files
65
67 hk(4), ram(4), rk(4), rl(4), rp(4), rx(4), si(4), xp(4), dtab(5), auto‐
68 config(8), disklabel(8)
69
71 rasa %o, state %d. (Additional status information given after a hard
72 i/o error.) The values of the UDA-50 status register and the internal
73 driver state are printed.
74
75 ra%d: interrupt in unknown state %d ignored. An interrupt was received
76 when the driver was in an unknown internal state. Indicates a hardware
77 problem or a driver bug.
78
79 ra%d: fatal error (%o). The UDA-50 indicated a ``fatal error'' in the
80 status returned to the host. The contents of the status register are
81 displayed.
82
83 ra%d,%d: OFFLINE. (Additional status information given after a hard
84 i/o error.) A hard i/o error occurred because the drive was not on-
85 line. The attached unit number and the MSCP unit numbers are printed.
86
87 status %o. (Additional status information given after a hard i/o
88 error.) The status information returned from the UDA-50 is tacked onto
89 the end of the hard error message printed on the console.
90
91 ra: unknown packet opcode=0%o. An MSCP packet of unknown type was
92 received from the UDA-50. Check the cabling to the controller.
93
94 The following errors are interpretations of MSCP error messages
95 returned by the UDA-50 to the host.
96
97 ra: %s error, controller error, event 0%o.
98
99 ra: %s error, host memory access error, event 0%o, addr 0%o.
100
101 ra: %s error, disk transfer error, unit %d, grp 0x%x, hdr 0x%x.
102
103 ra: %s error, SDI error, unit %d, event 0%o, hdr 0x%x.
104
105 ra: %s error, small disk error, unit %d, event 0%o, cyl %d.
106
107 ra: %s error, unknown error, unit %d, format 0%o, event 0%o.
108
110 In raw I/O read and write(2) truncate file offsets to 512-byte block
111 boundaries, and write scribbles on the tail of incomplete blocks.
112 Thus, in programs that are likely to access raw devices, read, write
113 and lseek(2) should always deal in 512-byte multiples.
114
115
116
1173rd Berkeley Distribution September 6, 1987 RA(4)