14
14
15
15
'use strict' ;
16
16
17
- var assert = require ( 'assert' ) ;
18
- var u8view = require ( 'u8-view' ) ;
19
- var runtime = require ( '../../../core' ) ;
20
- var OFFSET_ADDR = 0 ;
21
- var OFFSET_LEN = 8 ;
22
- var OFFSET_FLAGS = 12 ;
23
- var OFFSET_NEXT = 14 ;
24
- var SIZE = 16 ;
25
- var VRING_DESC_F_NEXT = 1 ;
26
- var VRING_DESC_F_WRITE = 2 ;
17
+ const u8view = require ( 'u8-view' ) ;
18
+ const OFFSET_ADDR = 0 ;
19
+ const OFFSET_LEN = 8 ;
20
+ const OFFSET_FLAGS = 12 ;
21
+ const OFFSET_NEXT = 14 ;
22
+ const SIZE = 16 ;
23
+ const VRING_DESC_F_NEXT = 1 ;
24
+ const VRING_DESC_F_WRITE = 2 ;
27
25
28
26
class DescriptorTable {
29
27
constructor ( buffer , byteOffset , ringSize ) {
@@ -32,30 +30,25 @@ class DescriptorTable {
32
30
this . descriptorsAvailable = ringSize ;
33
31
this . descriptorsBuffers = new Array ( ringSize ) ;
34
32
35
- var i ;
36
- for ( i = 0 ; i < ringSize ; ++ i ) {
37
- this . descriptorsBuffers [ i ] = null ;
38
- }
39
-
40
- for ( i = 0 ; i < ringSize - 1 ; ++ i ) {
41
- this . setNext ( i , i + 1 ) ;
42
- }
33
+ let i ;
34
+ for ( i = 0 ; i < ringSize ; ++ i ) this . descriptorsBuffers [ i ] = null ;
35
+ for ( i = 0 ; i < ringSize - 1 ; ++ i ) this . setNext ( i , i + 1 ) ;
43
36
}
44
37
45
38
static getDescriptorSizeBytes ( ) {
46
39
return SIZE ;
47
40
}
48
41
49
42
get ( descriptorId ) {
50
- var base = SIZE * descriptorId ;
51
- var len = u8view . getUint32LE ( this . mem , base + OFFSET_LEN ) ;
52
- var flags = u8view . getUint16LE ( this . mem , base + OFFSET_FLAGS ) ;
53
- var next = u8view . getUint16LE ( this . mem , base + OFFSET_NEXT ) ;
43
+ const base = SIZE * descriptorId ;
44
+ const len = u8view . getUint32LE ( this . mem , base + OFFSET_LEN ) ;
45
+ const flags = u8view . getUint16LE ( this . mem , base + OFFSET_FLAGS ) ;
46
+ const next = u8view . getUint16LE ( this . mem , base + OFFSET_NEXT ) ;
54
47
55
48
return {
56
- len : len ,
57
- flags : flags ,
58
- next : next
49
+ len,
50
+ flags,
51
+ next,
59
52
} ;
60
53
}
61
54
@@ -64,21 +57,21 @@ class DescriptorTable {
64
57
}
65
58
66
59
setBuffer ( descriptorId , buf , len , flags ) {
67
- var base = SIZE * descriptorId ;
68
- var addr = __SYSCALL . bufferAddress ( buf ) ;
60
+ const base = SIZE * descriptorId ;
61
+ const addr = __SYSCALL . bufferAddress ( buf ) ;
69
62
u8view . setUint32LE ( this . mem , base + OFFSET_ADDR + 0 , addr [ 1 ] ) ; // high
70
63
u8view . setUint32LE ( this . mem , base + OFFSET_ADDR + 4 , addr [ 2 ] ) ; // low
71
64
u8view . setUint32LE ( this . mem , base + OFFSET_LEN , len >>> 0 ) ;
72
65
u8view . setUint16LE ( this . mem , base + OFFSET_FLAGS , flags >>> 0 ) ;
73
66
}
74
67
75
68
getNext ( descriptorId ) {
76
- var base = SIZE * descriptorId ;
69
+ const base = SIZE * descriptorId ;
77
70
return u8view . getUint16LE ( this . mem , base + OFFSET_NEXT ) ;
78
71
}
79
72
80
73
setNext ( descriptorId , next ) {
81
- var base = SIZE * descriptorId ;
74
+ const base = SIZE * descriptorId ;
82
75
u8view . setUint16LE ( this . mem , base + OFFSET_NEXT , next >>> 0 ) ;
83
76
}
84
77
@@ -90,22 +83,16 @@ class DescriptorTable {
90
83
* @param isWriteOnly {bool} set writeOnly flag for each buffer
91
84
*/
92
85
placeBuffers ( buffers , lengths , isWriteOnly ) {
93
- var count = buffers . length ;
94
- if ( this . descriptorsAvailable < count ) {
95
- return - 1 ;
96
- }
86
+ const count = buffers . length ;
87
+ if ( this . descriptorsAvailable < count ) return - 1 ;
97
88
98
- var head = this . freeDescriptorHead ;
99
- var first = head ;
100
- for ( var i = 0 ; i < count ; ++ i ) {
101
- var d = buffers [ i ] ;
102
- var flags = 0 ;
103
- if ( i + 1 !== count ) {
104
- flags |= VRING_DESC_F_NEXT ;
105
- }
106
- if ( isWriteOnly ) {
107
- flags |= VRING_DESC_F_WRITE ;
108
- }
89
+ let head = this . freeDescriptorHead ;
90
+ const first = head ;
91
+ for ( let i = 0 ; i < count ; ++ i ) {
92
+ const d = buffers [ i ] ;
93
+ let flags = 0 ;
94
+ if ( count !== i + 1 ) flags |= VRING_DESC_F_NEXT ;
95
+ if ( isWriteOnly ) flags |= VRING_DESC_F_WRITE ;
109
96
110
97
this . setBuffer ( head , d , lengths [ i ] , flags ) ;
111
98
this . descriptorsBuffers [ head ] = d ;
@@ -118,11 +105,11 @@ class DescriptorTable {
118
105
}
119
106
120
107
getBuffer ( descriptorId ) {
121
- var nextDescriptorId = descriptorId ;
122
- var buffer = this . descriptorsBuffers [ descriptorId ] ;
108
+ let nextDescriptorId = descriptorId ;
109
+ const buffer = this . descriptorsBuffers [ descriptorId ] ;
123
110
this . descriptorsBuffers [ descriptorId ] = null ;
124
111
125
- var desc = this . get ( descriptorId ) ;
112
+ let desc = this . get ( descriptorId ) ;
126
113
while ( desc . flags & VRING_DESC_F_NEXT ) {
127
114
nextDescriptorId = desc . next ;
128
115
desc = this . get ( nextDescriptorId ) ;
@@ -137,11 +124,7 @@ class DescriptorTable {
137
124
138
125
printDebug ( ) {
139
126
console . log ( 'DESCRIPTOR TABLE:' ) ;
140
- var self = this ;
141
- this . descriptorsBuffers . forEach ( function ( buf , i ) {
142
- var next = self . getNext ( i ) ;
143
- console . log ( ` ${ i } : ${ buf ? ( '<Uint8Array:' + buf . length + '>' ) : '-' } , next ${ next } ` ) ;
144
- } ) ;
127
+ this . descriptorsBuffers . forEach ( ( buf , i ) => console . log ( ` ${ i } : ${ buf ? ( `<Uint8Array:${ buf . length } >` ) : '-' } , next ${ this . getNext ( i ) } ` ) ) ; // eslint-disable-line max-len
145
128
}
146
129
}
147
130
0 commit comments