图和表 1
目录 1
图1—1 DDI和DKI概况 1
1.1 关于本手册 1
第一章 引论 1
1.1.1 可移植性 2
1.1.2 界面综述 2
1.1.3 界面成员 3
1.1.2.1 设备驱动程序界面(DDI)综述 3
1.1.2.2 驱动程序—核心界面(DKI)综述 3
1.1.4 读者 4
1.1.5 怎样使用本手册 4
1.2 驱动程序参考手册的组织 4
表1—1 专用的入口点、函数和结构 4
1.3 本手册中所使用的约定 5
1.4 相关的学习材料 6
1.4.1 文档 6
表1—2 本手册中所使用的印刷字体约定 6
1.4.1.1 驱动程序开发 7
1.4.1.2 STREAMS 7
1.4.1.3 C编程语言和一般程序设计 7
1.4.1.5 操作系统 8
1.4.2 培训 8
1.4.1.6 软件包装 8
1.4.1.4 汇编语言 8
2.2 驱动程序入口点例程和命名约定综述 11
2.1 引言 11
第二章 驱动程序入口点(D2) 11
表2—2 非STREAMS专用的驱动程序入口点 12
表2—1 STREAMS驱动程序入口点汇总 12
2.3 手册页 13
chpoll(D2DK) 13
close(D2DK) 14
init(D2D) 17
int(D2D) 18
ioctl(D2DK) 19
mmap(D2DK) 23
open(D2DK) 24
print(D2DK) 26
put(D2DK) 27
read(D2DK) 28
segmap(D2K) 29
srv(D2DK) 31
size(D2D) 31
start(D2D) 33
strategy(D2DK) 34
write(D2DK) 35
第三章 核心函数(D3) 37
3.1 引言 37
3.1.1 函数汇总 37
表3—1 STREAMS核心函数汇总 38
表3—2 非STREAMS专用的核心函数 38
allocb(D3DK) 41
3.2 手册页 41
adjmsg(D3DK) 41
backq(D3DK) 43
bcanput(D3DK) 44
bcopy(D3DK) 45
biodone(D3DK) 47
biowait(D3DK) 49
bp-mapin(D3DK) 50
bp-mapout(D3DK) 51
brelse(D3DK) 52
btop(D3DK) 52
btopr(D3DK) 53
bufcall(D3DK) 54
bzero(D3DK) 56
canput(D3DK) 57
clrbuf(D3DK) 58
cmn-err(D3DK) 59
copyb(D3DK) 62
copyin(D3DK) 64
copynsg(D3DK) 65
copyout(D3DK) 67
datamsg(D3DK) 68
delay(D3DK) 70
dma-pageio(D3D) 71
drv-getparm(D3DK) 74
drv-hztousec(D3DK) 75
drv-priv(D3DK) 76
drv-usectohz(D3DK) 77
drv-usecwait(D3DK) 78
dupb(D3DK) 79
dupmsg(D3DK) 81
enableok(D3DK) 82
esballoc(D3DK) 83
esbbcall(D3DK) 84
etoimajor(D3D) 85
flushband(D3DK) 86
flushq(D3DK) 87
freeb(D3DK) 88
freemsg(D3DK) 89
freerbuf(D3DK) 90
getemajor(D3D) 91
geteminor(D3D) 91
geterror(D3DK) 92
getmajor(D3DK) 93
getminor(D3DK) 94
getq(D3DK) 95
getrbuf(D3DK) 96
getvec(D3D) 97
hat-getkpfnum(D3K) 98
hdeecqd(D3D) 99
hdelog(D3D) 102
insq(D3DK) 106
itoemajor(D3D) 108
kmem-alloc(D3DK) 109
kmem-free(D3DK) 110
kmem-zalloc(D3DK) 111
linkb(D3DK) 112
kvtophys(D3D) 112
makedevice(D3DK) 113
min(D3DK) 115
max(D3DK) 115
msgdsize(D3DK) 116
noenable(D3DK) 117
OTHERQ(D3DK) 118
page-numtopp(D3DK) 119
physiock(D3D) 120
page-pptonum(D3DK) 120
pollwakeup(D3DK) 123
ptob(D3DK) 124
pullupmsg(D3DK) 125
putbq(D3DK) 127
putctl(D3DK) 128
putctll(D3DK) 129
putnext(D3DK) 130
putq(D3DK) 131
qenable(D3DK) 132
qreply(D3DK) 133
qsize(D3DK) 134
RD(D3DK) 135
rmalloc(D3DK) 136
rmfree(D3DK) 140
rminit(D3DK) 141
rmsetwant(D3DK) 142
rmvb(D3DK) 143
rmvq(D3DK) 144
rmwant(D3DK) 146
SAMESTR(D3DK) 146
sleep(D3DK) 147
spl(D3D) 149
strlog(D3DK) 151
strqget(D3DK) 153
strqset(D3DK) 154
testb(D3DK) 155
timeout(D3DK) 157
uiomove(D3DK) 158
unlinkb(D3DK) 159
untimeout(D3DK) 161
ureadc(D3DK) 163
useracc(D3DK) 164
uwritec(D3DK) 165
vtop(D3D) 166
wakeup(D3DK) 167
WR(D3DK) 168
表4—1 STREAMS数据结构汇总 171
第四章 数据结构(D4) 171
4.1 引言 171
4.2 手册页 172
buf(D4DK) 172
表4—2 非STREAMS专用的数据结构 172
datab(D4DK) 176
cred(D4DK) 176
free-rtn(D4DK) 177
hdedata(D4D) 178
iovec(D4DK) 179
map(D4DK) 180
module-info(D4DK) 181
msgb(D4DK) 182
qband(D4DK) 183
qinit(D4DK) 183
queue(D4DK) 184
streamtab(D4DK) 185
uio(D4DK) 186
附录A 出错码 187
表A—1 驱动程序出错码 187
表A—2 各驱动程序例程的出错码 188
附录B 从3.2版迁移到4.0版 189
表B—1 从3.2版迁移到4.0版 189