.if n .pH ddi_dki.Csect3 @(#)Csect3	40.6
.\" Copyright 1989 AT&T
.BK "DDI/DKI Reference Manual" "" "" "DDRM"   
.\ACRONYM	DDRM                  
.CH "Kernel Functions(D3)" "" "Table of Contents" "3"
.\CHAPTER	3
.tC 1 "Introduction" 3-1  
.Index: istart DDI/DKI (Device Driver Interface/Driver\(enKernel Interface), kernel functions       	1
.Index: istart driver, functions      	1
.tC 2 "Function Summary" 3-2  
.Index: istart driver, STREAMS      	2
.Index: istart STREAMS functions      	2
.tC L "Table 3-1:\0" "STREAMS Kernel Function Summary" 3-2
.Index: iend driver, STREAMS      	3
.Index: iend STREAMS functions      	3
.Index: istart block I/O      	4
.Index: istart driver, block      	4
.tC L "Table 3-2:\0" "Kernel Functions Not Specific to STREAMS" 3-4
.Index: iend block I/O      	6
.Index: istart raw I/O      	6
.Index: istart buffers, for raw I/O    	6
.Index: iend raw I/O      	6
.Index: iend buffers, for raw I/O    	6
.Index: iend driver, block      	6
.Index: iend driver, functions      	6
.Index: iend DDI/DKI (Device Driver Interface/Driver\(enKernel Interface), kernel functions       	6
.tC 1 "Manual Pages" 3-7  
.tC 2 adjmsg(D3DK) 3-7
.Index: \f4adjmsg\fP(D3DK)        	7
.Index: STREAMS messages        	7
.tC 2 allocb(D3DK) 3-8
.Index: \f4allocb\fP(D3DK)        	8
.Index: message (STREAMS)        	8
.Index: STREAMS message blocks        	8
.Index: \f4msgb\fP(D4DK)        	8
.Index: \f4datab\fP(D4DK)        	8
.Index: \f4msgb\fP(D4DK), example        	8
.Index: \f4linkb\fP(D3DK), example        	8
.Index: \f4putnext\fP(D3DK), example        	8
.Index: \f4RD\fP(D3DK), example        	8
.Index: STREAMS message blocks        	9
.Index: \f4allocb\fP(D3DK), example        	9
.Index: \f4RD\fP(D3DK), example        	9
.Index: \f4putnext\fP(D3DK), example        	9
.tC 2 backq(D3DK) 3-10
.Index: \f4backq\fP(D3DK)        	10
.Index: STREAMS message queues        	10
.tC 2 bcanput(D3DK) 3-11
.Index: \f4bcanput\fP(D3DK)        	11
.Index: STREAMS message queues        	11
.Index: message (STREAMS)        	11
.tC 2 bcopy(D3DK) 3-12
.Index: \f4bcopy\fP(D3DK)        	12
.Index: kernel, data copy in     	12
.Index: \f4buf\fP(D4DK), example        	12
.tC 2 biodone(D3DK) 3-14
.Index: \f4biodone\fP(D3DK)        	14
.tC 2 biowait(D3DK) 3-16
.Index: \f4biowait\fP(D3DK)        	16
.tC 2 bp_mapin(D3DK) 3-17
.Index: \f4bp_mapin\fP(D3DK)        	17
.tC 2 bp_mapout(D3DK) 3-18
.Index: \f4bp_mapout\fP(D3DK)        	18
.tC 2 brelse(D3DK) 3-19
.Index: \f4brelse\fP(D3DK)        	19
.tC 2 btop(D3DK) 3-20
.Index: \f4btop\fP(D3DK)        	20
.tC 2 btopr(D3DK) 3-21
.Index: \f4btopr\fP(D3DK)        	21
.tC 2 bufcall(D3DK) 3-22
.Index: \f4bufcall\fP(D3DK)        	22
.Index: \f4srv\fP(D2DK), example        	22
.Index: \f4getq\fP(D3DK), example        	22
.Index: \f4canput\fP(D3DK), example        	22
.Index: \f4msgdsize\fP(D3DK), example        	22
.Index: \f4qenable\fP(D3DK), example        	22
.Index: \f4timeout\fP(D3DK), example        	22
.Index: \f4putnext\fP(D3DK), example        	22
.Index: \f4putbq\fP(D3DK), example        	22
.Index: \f4bufcall\fP(D3DK), example        	22
.Index: \f4canput\fP(D3DK), example        	23
.Index: \f4putnext\fP(D3DK), example        	23
.Index: \f4putbq\fP(D3DK), example        	23
.Index: \f4allocb\fP(D3DK), example        	23
.Index: \f4qenable\fP(D3DK), example        	23
.Index: \f4timeout\fP(D3DK), example        	23
.tC 2 bzero(D3DK) 3-24
.Index: \f4bzero\fP(D3DK)        	24
.Index: memory, clear        	24
.tC 2 canput(D3DK) 3-25
.Index: \f4canput\fP(D3DK)        	25
.Index: STREAMS message queues        	25
.Index: message (STREAMS)        	25
.tC 2 clrbuf(D3DK) 3-26
.Index: \f4clrbuf\fP(D3DK)        	26
.Index: \f4buf\fP(D4DK)        	26
.tC 2 cmn_err(D3DK) 3-27
.Index: \f4cmn_err\fP(D3DK)        	27
.Index: panic        	27
.Index: panic        	28
.Index: \f4cmn_err\fP(D3DK), example        	28
.Index: \f4getminor\fP(D3DK), example        	28
.Index: panic        	28
.tC 2 copyb(D3DK) 3-30
.Index: \f4copyb\fP(D3DK)        	30
.Index: \f4copyb\fP(D3DK), example        	30
.Index: \f4canput\fP(D3DK), example        	30
.Index: \f4dupmsg\fP(D3DK), example        	30
.Index: \f4putnext\fP(D3DK), example        	30
.Index: \f4freeb\fP(D3DK), example        	30
.tC 2 copyin(D3DK) 3-32
.Index: \f4copyin\fP(D3DK)        	32
.Index: page fault        	32
.tC 2 copymsg(D3DK) 3-33
.Index: \f4copymsg\fP(D3DK)        	33
.Index: STREAMS messages        	33
.Index: \f4copymsg\fP(D3DK), example        	33
.Index: \f4freemsg\fP(D3DK), example        	33
.tC 2 copyout(D3DK) 3-35
.Index: \f4copyout\fP(D3DK)        	35
.Index: \f4read\fP(D2DK)        	35
.Index: \f4write\fP(D2DK)        	35
.Index: \f4copyout\fP(D3DK), example        	35
.Index: \f4ioctl\fP(D2DK), example        	35
.tC 2 datamsg(D3DK) 3-37
.Index: \f4datamsg\fP(D3DK)        	37
.Index: STREAMS messages        	37
.Index: STREAMS messages       	37
.Index: \f4datamsg\fP(D3DK), example        	37
.Index: \f4putq\fP(D3DK), example        	37
.Index: STREAMS messages        	37
.tC 2 delay(D3DK) 3-38
.Index: \f4delay\fP(D3DK)        	38
.Index: HZ (clock cycles)        	38
.Index: clock cycles        	38
.Index: \f4cmn_err\fP(D3DK), example        	38
.Index: \f4delay\fP(D3DK), example        	38
.Index: \f4getminor\fP(D3DK), example        	38
.tC 2 dma_pageio(D3D) 3-40
.Index: \f4dma_pageio\fP(D3D)        	40
.Index: DMA (Direct Memory Access)     	40
.Index: Direct Memory Access (DMA)        	40
.Index: \f4spl\fP(D3D), during DMA        	40
.Index: \f4buf\fP(D4DK), example        	40
.Index: \f4dma_pageio\fP(D3D), example        	40
.Index: \f4getminor\fP(D3DK), example        	40
.Index: \f4physiock\fP(D3DK), example        	40
.Index: \f4read\fP(D2DK), example        	40
.Index: \f4strategy\fP(D2DK), example        	40
.Index: \f4write\fP(D2DK), example        	40
.tC 2 drv_getparm(D3DK) 3-42
.Index: \f4drv_getparm\fP(D3DK)        	42
.tC 2 drv_hztousec(D3DK) 3-44
.Index: \f4drv_hztousec\fP(D3DK)        	44
.tC 2 drv_priv(D3DK) 3-45
.Index: \f4drv_priv\fP(D3DK)        	45
.tC 2 drv_usectohz(D3DK) 3-46
.Index: \f4drv_usectohz\fP(D3DK)        	46
.tC 2 drv_usecwait(D3DK) 3-47
.Index: \f4drv_usecwait\fP(D3DK)        	47
.tC 2 dupb(D3DK) 3-48
.Index: \f4dupb\fP(D3DK)        	48
.Index: STREAMS message blocks        	48
.Index: message block descriptor        	48
.Index: \f4msgb\fP(D4DK)        	48
.Index: \f4datab\fP(D4DK)        	48
.Index: \f4canput\fP(D3DK), example        	49
.Index: \f4dupb\fP(D3DK), example        	49
.Index: \f4putnext\fP(D3DK), example        	49
.Index: \f4getq\fP(D3DK), example        	49
.Index: \f4putbq\fP(D3DK), example        	49
.Index: \f4dupb\fP(D3DK), example        	49
.Index: \f4timeout\fP(D3DK), example        	49
.Index: \f4qenable\fP(D3DK), example        	49
.Index: \f4linkb\fP(D3DK), example        	49
.Index: \f4queue\fP(D4DK), example        	49
.Index: message (STREAMS), block        	49
.tC 2 dupmsg(D3DK) 3-50
.Index: \f4dupmsg\fP(D3DK)        	50
.Index: STREAMS message blocks        	50
.tC 2 enableok(D3DK) 3-51
.Index: \f4enableok\fP(D3DK)        	51
.Index: STREAMS message queues        	51
.Index: \f4enableok\fP(D3DK), example        	51
.Index: \f4qenable\fP(D3DK), example        	51
.Index: \f4queue\fP(D4DK), example        	51
.tC 2 esballoc(D3DK) 3-52
.Index: \f4esballoc\fP(D3DK)        	52
.tC 2 esbbcall(D3DK) 3-53
.Index: \f4esbbcall\fP(D3DK)        	53
.tC 2 etoimajor(D3D) 3-54
.Index: \f4etoimajor\fP(D3D)        	54
.Index: major device number        	54
.tC 2 flushband(D3DK) 3-55
.Index: \f4flushband\fP(D3DK)        	55
.Index: STREAMS messages       	55
.tC 2 flushq(D3DK) 3-56
.Index: \f4flushq\fP(D3DK)        	56
.Index: STREAMS messages        	56
.Index: \f4put\fP(D2DK), example        	56
.Index: \f4flushq\fP(D3DK), example        	56
.Index: \f4putnext\fP(D3DK), example        	56
.Index: \f4queue\fP(D4DK), example        	56
.Index: \f4RD\fP(D3DK), example        	56
.tC 2 freeb(D3DK) 3-58
.Index: \f4freeb\fP(D3DK)        	58
.Index: STREAMS message blocks        	58
.tC 2 freemsg(D3DK) 3-59
.Index: \f4freemsg\fP(D3DK)        	59
.Index: STREAMS message blocks        	59
.Index: message (STREAMS), block        	59
.tC 2 freerbuf(D3DK) 3-60
.Index: \f4freerbuf\fP(D3DK)        	60
.Index: buffer header        	60
.tC 2 getemajor(D3D) 3-61
.Index: \f4getemajor\fP(D3D)        	61
.Index: major device number, external        	61
.tC 2 geteminor(D3D) 3-62
.Index: \f4geteminor\fP(D3D)        	62
.Index: minor device number, external        	62
.tC 2 geterror(D3DK) 3-63
.tC 2 getmajor(D3DK) 3-64
.Index: \f4getmajor\fP(D3DK)        	64
.Index: major device number, internal        	64
.Index: \f4cmn_err\fP(D3DK), example        	64
.Index: \f4getmajor\fP(D3DK), example        	64
.tC 2 getminor(D3DK) 3-65
.Index: \f4getminor\fP(D3DK)        	65
.Index: minor device number, internal     	65
.tC 2 getq(D3DK) 3-66
.Index: \f4getq\fP(D3DK)        	66
.tC 2 getrbuf(D3DK) 3-67
.Index: \f4getrbuf\fP(D3DK)        	67
.Index: buffer header        	67
.tC 2 getvec(D3D) 3-68
.Index: \f4getvec\fP(D3D)        	68
.Index: \f4getvec\fP(D3D), example        	68
.Index: \f4init\fP(D2D), example        	68
.tC 2 hat_getkpfnum(D3K) 3-69
.Index: \f4hat_getkpfnum\fP(D3K)        	69
.tC 2 hdeeqd(D3D) 3-70
.Index: \f4hdeeqd\fP(D3D)        	70
.Index: \f4hdedata\fP(D4D), example        	71
.Index: \f4hdeeqd\fP(D3D), example        	71
.Index: \f4getminor\fP(D3DK), example        	71
.tC 2 hdelog(D3D) 3-73
.Index: \f4hdelog\fP(D3D)        	73
.Index: \f4hdedata\fP(D4D), example        	73
.Index: \f4hdelog\fP(D3D), example        	73
.tC 2 insq(D3DK) 3-76
.Index: \f4insq\fP(D3DK)        	76
.Index: \f4putq\fP(D3DK), example        	76
.Index: \f4insq\fP(D3DK), example        	76
.tC 2 itoemajor(D3D) 3-78
.Index: \f4itoemajor\fP(D3D)        	78
.Index: major device number        	78
.tC 2 kmem_alloc(D3DK) 3-79
.Index: \f4kmem_alloc\fP(D3DK)        	79
.tC 2 kmem_free(D3DK) 3-80
.Index: \f4kmem_free\fP(D3DK)        	80
.tC 2 kmem_zalloc(D3DK) 3-81
.Index: \f4kmem_zalloc\fP(D3DK)        	81
.tC 2 kvtophys(D3D) 3-82
.Index: \f4kvtophys\fP(D3D)        	82
.tC 2 linkb(D3DK) 3-83
.Index: \f4linkb\fP(D3DK)        	83
.tC 2 makedevice(D3DK) 3-84
.Index: \f4makedevice\fP(D3DK)        	84
.tC 2 max(D3DK) 3-85
.Index: \f4max\fP(D3DK)        	85
.tC 2 min(D3DK) 3-86
.Index: \f4min\fP(D3DK)        	86
.tC 2 msgdsize(D3DK) 3-87
.Index: \f4msgdsize\fP(D3DK)        	87
.Index: STREAMS messages        	87
.tC 2 noenable(D3DK) 3-88
.Index: \f4noenable\fP(D3DK)        	88
.tC 2 OTHERQ(D3DK) 3-89
.Index: \f4OTHERQ\fP(D3DK)        	89
.Index: \f4OTHERQ\fP(D3DK), example        	89
.tC 2 page_numtopp(D3DK) 3-90
.tC 2 page_pptonum(D3DK) 3-91
.tC 2 physiock(D3D) 3-92
.Index: \f4physiock\fP(D3DK)        	92
.tC 2 pollwakeup(D3DK) 3-95
.Index: \f4pollwakeup\f1(D3DK)        	95
.tC 2 ptob(D3DK) 3-96
.Index: \f4ptob\fP(D3DK)        	96
.tC 2 pullupmsg(D3DK) 3-97
.Index: \f4pullupmsg\fP(D3DK)        	97
.Index: \f4msgb\fP(D4DK), example        	97
.Index: \f4pullupmsg\fP(D3DK), example        	97
.Index: \f4freemsg\fP(D3DK), example        	97
.Index: \f4getq\fP(D3DK), example        	97
.Index: \f4queue\fP(D4DK), example        	97
.tC 2 putbq(D3DK) 3-99
.Index: \f4putbq\fP(D3DK)        	99
.tC 2 putctl(D3DK) 3-100
.Index: \f4putctl\fP(D3DK)        	100
.Index: \f4cmn_err\fP(D3DK), example        	100
.Index: \f4putctl\fP(D3DK), example        	100
.Index: \f4putctl1\fP(D3DK), example        	100
.Index: \f4queue\fP(D4DK), example        	100
.tC 2 putctl1(D3DK) 3-102
.Index: \f4putctl1\fP(D3DK)        	102
.tC 2 putnext(D3DK) 3-103
.Index: \f4putnext\fP(D3DK)        	103
.tC 2 putq(D3DK) 3-104
.Index: \f4putq\fP(D3DK)        	104
.tC 2 qenable(D3DK) 3-105
.Index: \f4qenable\fP(D3DK)        	105
.tC 2 qreply(D3DK) 3-106
.Index: \f4qreply\fP(D3DK)        	106
.Index: \f4msgb\fP(D4DK), example        	106
.Index: \f4flushq\fP(D3DK), example        	106
.Index: \f4queue\fP(D4DK), example        	106
.Index: \f4RD\fP(D3DK), example        	106
.tC 2 qsize(D3DK) 3-108
.Index: \f4qsize\fP(D3DK)        	108
.tC 2 RD(D3DK) 3-109
.Index: \f4RD\fP(D3DK)        	109
.tC 2 rmalloc(D3DK) 3-110
.Index: \f4rmalloc\fP(D3DK)        	110
.Index: \f4rmalloc\fP(D3DK), example        	112
.Index: \f4rmsetwant\fP(D3DK), example        	112
.tC 2 rmfree(D3DK) 3-114
.Index: \f4rmfree\fP(D3DK)        	114
.tC 2 rminit(D3DK) 3-115
.Index: \f4rminit\fP(D3DK)        	115
.tC 2 rmsetwant(D3DK) 3-116
.Index: \f4rmsetwant\fP(D3DK)        	116
.tC 2 rmvb(D3DK) 3-117
.Index: \f4rmvb\fP(D3DK)        	117
.Index: \f4freeb\fP(D3DK), example        	117
.Index: \f4rmvb\fP(D3DK), example        	117
.Index: \f4msgb\fP(D4DK), example        	117
.tC 2 rmvq(D3DK) 3-118
.Index: \f4rmvq\fP(D3DK)        	118
.Index: \f4freemsg\fP(D3DK), example        	118
.Index: \f4rmvq\fP(D3DK), example        	118
.Index: \f4msgb\fP(D4DK), example        	118
.Index: \f4queue\fP(D4DK), example        	118
.tC 2 rmwant(D3DK) 3-120
.Index: \f4rmwant\fP(D3DK)        	120
.tC 2 SAMESTR(D3DK) 3-121
.Index: \f4SAMESTR\fP(D3DK)        	121
.tC 2 sleep(D3DK) 3-122
.Index: \f4sleep\fP(D3DK)        	122
.tC 2 spl(D3D) 3-125
.Index: \f4spl\fP(D3D)        	125
.tC 2 strlog(D3DK) 3-127
.Index: \f4strlog\fP(D3DK)        	127
.tC 2 strqget(D3DK) 3-128
.Index: \f4strqget\fP(D3DK)        	128
.tC 2 strqset(D3DK) 3-129
.Index: \f4strqset\fP(D3DK)        	129
.tC 2 testb(D3DK) 3-130
.Index: \f4testb\fP(D3DK)        	130
.Index: \f4timeout\fP(D3DK), example        	130
.Index: \f4srv\fP(D2DK), example        	130
.Index: \f4putbq\fP(D3DK), example        	130
.Index: \f4testb\fP(D3DK), example        	130
.Index: \f4qenable\fP(D3DK), example        	130
.tC 2 timeout(D3DK) 3-132
.Index: \f4timeout\fP(D3DK)        	132
.tC 2 uiomove(D3DK) 3-133
.Index: \f4uiomove\fP(D3DK)        	133
.tC 2 unlinkb(D3DK) 3-134
.Index: \f4unlinkb\fP(D3DK)        	134
.Index: \f4freeb\fP(D3DK), example        	134
.Index: \f4unlinkb\fP(D3DK), example        	134
.tC 2 untimeout(D3DK) 3-135
.Index: \f4untimeout\fP(D3DK)        	135
.Index: \f4wakeup\fP(D3DK), example        	135
.Index: \f4untimeout\fP(D3DK), example        	135
.Index: \f4timeout\fP(D3DK), example        	135
.tC 2 ureadc(D3DK) 3-138
.Index: \f4ureadc\fP(D3DK)        	138
.tC 2 useracc(D3DK) 3-139
.Index: \f4useracc\fP(D3DK)        	139
.tC 2 uwritec(D3DK) 3-140
.Index: \f4uwritec\fP(D3DK)        	140
.tC 2 vtop(D3D) 3-141
.Index: \f4vtop\fP(D3D)        	141
.tC 2 wakeup(D3DK) 3-142
.Index: \f4wakeup\fP(D3DK)        	142
.tC 2 WR(D3DK) 3-143
.Index: \f4WR\fP(D3DK)        	143
.Index: \f4WR\fP(D3DK), example        	143
