Skip to content
This repository was archived by the owner on Jul 3, 2020. It is now read-only.

Commit a320c6f

Browse files
author
Face Kapow
committed
js/driver/virtio/vring
1 parent 0153164 commit a320c6f

File tree

4 files changed

+164
-210
lines changed

4 files changed

+164
-210
lines changed

js/driver/virtio/vring/available-ring.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
'use strict';
1616

17-
var AVAILABLE_RING_INDEX_FLAGS = 0;
18-
var AVAILABLE_RING_INDEX_IDX = 1;
19-
var AVAILABLE_RING_INDEX_RING = 2;
20-
var VRING_AVAIL_F_NO_INTERRUPT = 1;
17+
const AVAILABLE_RING_INDEX_FLAGS = 0;
18+
const AVAILABLE_RING_INDEX_IDX = 1;
19+
const AVAILABLE_RING_INDEX_RING = 2;
20+
const VRING_AVAIL_F_NO_INTERRUPT = 1;
2121

2222
class AvailableRing {
2323
constructor(buffer, byteOffset, ringSize) {
@@ -44,7 +44,7 @@ class AvailableRing {
4444
}
4545

4646
placeDescriptor(index) {
47-
var available = (this.readIdx() & (this.ringSize - 1)) >>> 0;
47+
const available = (this.readIdx() & (this.ringSize - 1)) >>> 0;
4848
this.setRing(available, index);
4949
this.incrementIdx();
5050
}
@@ -64,9 +64,7 @@ class AvailableRing {
6464
printDebug() {
6565
console.log('AVAILABLE RING:');
6666
console.log(` idx = ${this.readIdx()}, wrapped ${this.readIdx() & (this.ringSize - 1)}`);
67-
for (var i = 0; i < this.ringSize; ++i) {
68-
console.log(` ${i}: descriptor = ${this.readDescriptorAsDevice(i)}`);
69-
}
67+
for (let i = 0; i < this.ringSize; ++i) console.log(` ${i}: descriptor = ${this.readDescriptorAsDevice(i)}`); // eslint-disable-line max-len
7068
}
7169
}
7270

js/driver/virtio/vring/descriptor-table.js

+35-52
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,14 @@
1414

1515
'use strict';
1616

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;
2725

2826
class DescriptorTable {
2927
constructor(buffer, byteOffset, ringSize) {
@@ -32,30 +30,25 @@ class DescriptorTable {
3230
this.descriptorsAvailable = ringSize;
3331
this.descriptorsBuffers = new Array(ringSize);
3432

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);
4336
}
4437

4538
static getDescriptorSizeBytes() {
4639
return SIZE;
4740
}
4841

4942
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);
5447

5548
return {
56-
len: len,
57-
flags: flags,
58-
next: next
49+
len,
50+
flags,
51+
next,
5952
};
6053
}
6154

@@ -64,21 +57,21 @@ class DescriptorTable {
6457
}
6558

6659
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);
6962
u8view.setUint32LE(this.mem, base + OFFSET_ADDR + 0, addr[1]); // high
7063
u8view.setUint32LE(this.mem, base + OFFSET_ADDR + 4, addr[2]); // low
7164
u8view.setUint32LE(this.mem, base + OFFSET_LEN, len >>> 0);
7265
u8view.setUint16LE(this.mem, base + OFFSET_FLAGS, flags >>> 0);
7366
}
7467

7568
getNext(descriptorId) {
76-
var base = SIZE * descriptorId;
69+
const base = SIZE * descriptorId;
7770
return u8view.getUint16LE(this.mem, base + OFFSET_NEXT);
7871
}
7972

8073
setNext(descriptorId, next) {
81-
var base = SIZE * descriptorId;
74+
const base = SIZE * descriptorId;
8275
u8view.setUint16LE(this.mem, base + OFFSET_NEXT, next >>> 0);
8376
}
8477

@@ -90,22 +83,16 @@ class DescriptorTable {
9083
* @param isWriteOnly {bool} set writeOnly flag for each buffer
9184
*/
9285
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;
9788

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;
10996

11097
this.setBuffer(head, d, lengths[i], flags);
11198
this.descriptorsBuffers[head] = d;
@@ -118,11 +105,11 @@ class DescriptorTable {
118105
}
119106

120107
getBuffer(descriptorId) {
121-
var nextDescriptorId = descriptorId;
122-
var buffer = this.descriptorsBuffers[descriptorId];
108+
let nextDescriptorId = descriptorId;
109+
const buffer = this.descriptorsBuffers[descriptorId];
123110
this.descriptorsBuffers[descriptorId] = null;
124111

125-
var desc = this.get(descriptorId);
112+
let desc = this.get(descriptorId);
126113
while (desc.flags & VRING_DESC_F_NEXT) {
127114
nextDescriptorId = desc.next;
128115
desc = this.get(nextDescriptorId);
@@ -137,11 +124,7 @@ class DescriptorTable {
137124

138125
printDebug() {
139126
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
145128
}
146129
}
147130

0 commit comments

Comments
 (0)