Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / sys / ataio.h @ 14

History | View | Annotate | Download (1.49 KB)

1 13 up20180614
/*        $NetBSD: ataio.h,v 1.9 2012/01/24 20:04:07 jakllsch Exp $        */
2
3
#ifndef _SYS_ATAIO_H_
4
#define _SYS_ATAIO_H_
5
6
#include <sys/types.h>
7
#include <sys/ioctl.h>
8
9
typedef struct        atareq {
10
        u_long        flags;                /* info about the request status and type */
11
        u_char        command;        /* command code */
12
        u_char        features;        /* feature modifier bits for command */
13
        u_char        sec_count;        /* sector count */
14
        u_char        sec_num;        /* sector number */
15
        u_char        head;                /* head number */
16
        u_short        cylinder;        /* cylinder/lba address */
17
18
        void *        databuf;        /* Pointer to I/O data buffer */
19
        u_long        datalen;        /* length of data buffer */
20
        int        timeout;        /* Command timeout */
21
        u_char        retsts;                /* the return status for the command */
22
        u_char        error;                /* error bits */
23
} atareq_t;
24
25
/* bit definitions for flags */
26
#define ATACMD_READ                0x00000001
27
#define ATACMD_WRITE                0x00000002
28
#define ATACMD_READREG                0x00000004
29
#define ATACMD_LBA                0x00000008
30
31
/* definitions for the return status (retsts) */
32
#define ATACMD_OK        0x00
33
#define ATACMD_TIMEOUT        0x01
34
#define ATACMD_ERROR        0x02
35
#define ATACMD_DF        0x03
36
37
#define ATAIOCCOMMAND        _IOWR('Q', 8, atareq_t)
38
39
/*
40
 * ATA bus IOCTL
41
 */
42
/* Scan bus for new devices. */
43
struct atabusioscan_args {
44
        int        at_dev;                /* device to scan, -1 for wildcard */
45
};
46
#define ATABUSIOSCAN        _IOW('A', 50, struct atabusioscan_args)
47
48
#define ATABUSIORESET        _IO('A', 51) /* reset ATA bus */
49
50
struct atabusiodetach_args {
51
        int        at_dev;                /* device to detach; -1 for wildcard */
52
};
53
#define ATABUSIODETACH        _IOW('A', 52, struct atabusiodetach_args)
54
55
56
#endif /* _SYS_ATAIO_H_ */