Skip to content

Commit 47ca906

Browse files
authored
[WasmFS][NFC] Rename OPFS JS functions to include "access" (#17196)
In preparation for adding alternative versions of the backend JS functions that use Blobs instead of access handles, rename the existing functions to be more explicit about what JS API they use.
1 parent ab628ed commit 47ca906

File tree

2 files changed

+82
-65
lines changed

2 files changed

+82
-65
lines changed

src/library_wasmfs_opfs.js

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
mergeInto(LibraryManager.library, {
88
// TODO: Generate these ID pools from a common utility.
9-
$wasmfsOPFSDirectories: {
9+
$wasmfsOPFSDirectoryHandles: {
1010
allocated: [],
1111
free: [],
1212
get: function(i) {
@@ -15,7 +15,7 @@ mergeInto(LibraryManager.library, {
1515
}
1616
},
1717

18-
$wasmfsOPFSFiles: {
18+
$wasmfsOPFSFileHandles: {
1919
allocated: [],
2020
free: [],
2121
get: function(i) {
@@ -24,7 +24,7 @@ mergeInto(LibraryManager.library, {
2424
}
2525
},
2626

27-
$wasmfsOPFSAccesses: {
27+
$wasmfsOPFSAccessHandles: {
2828
allocated: [],
2929
free: [],
3030
get: function(i) {
@@ -50,12 +50,12 @@ mergeInto(LibraryManager.library, {
5050
ids.free.push(id);
5151
},
5252

53-
_wasmfs_opfs_init_root_directory__deps: ['$wasmfsOPFSDirectories'],
53+
_wasmfs_opfs_init_root_directory__deps: ['$wasmfsOPFSDirectoryHandles'],
5454
_wasmfs_opfs_init_root_directory: async function(ctx) {
55-
if (wasmfsOPFSDirectories.allocated.length == 0) {
55+
if (wasmfsOPFSDirectoryHandles.allocated.length == 0) {
5656
// Directory 0 is reserved as the root
5757
let root = await navigator.storage.getDirectory();
58-
wasmfsOPFSDirectories.allocated.push(root);
58+
wasmfsOPFSDirectoryHandles.allocated.push(root);
5959
}
6060
_emscripten_proxy_finish(ctx);
6161
},
@@ -68,10 +68,10 @@ mergeInto(LibraryManager.library, {
6868
// -2: file exists but it is actually a directory.
6969
// -3: file exists but an access handle cannot be created for it.
7070
$wasmfsOPFSGetOrCreateFile__deps: ['$wasmfsOPFSAllocate',
71-
'$wasmfsOPFSDirectories',
72-
'$wasmfsOPFSFiles'],
71+
'$wasmfsOPFSDirectoryHandles',
72+
'$wasmfsOPFSFileHandles'],
7373
$wasmfsOPFSGetOrCreateFile: async function(parent, name, create) {
74-
let parentHandle = wasmfsOPFSDirectories.get(parent);
74+
let parentHandle = wasmfsOPFSDirectoryHandles.get(parent);
7575
let fileHandle;
7676
try {
7777
fileHandle = await parentHandle.getFileHandle(name, {create: create});
@@ -84,7 +84,7 @@ mergeInto(LibraryManager.library, {
8484
}
8585
throw e;
8686
}
87-
return wasmfsOPFSAllocate(wasmfsOPFSFiles, fileHandle);
87+
return wasmfsOPFSAllocate(wasmfsOPFSFileHandles, fileHandle);
8888
},
8989

9090
// Return the file ID for the directory with `name` under `parent`, creating
@@ -94,9 +94,9 @@ mergeInto(LibraryManager.library, {
9494
// -1: directory does not exist.
9595
// -2: directory exists but is actually a data file.
9696
$wasmfsOPFSGetOrCreateDir__deps: ['$wasmfsOPFSAllocate',
97-
'$wasmfsOPFSDirectories'],
97+
'$wasmfsOPFSDirectoryHandles'],
9898
$wasmfsOPFSGetOrCreateDir: async function(parent, name, create) {
99-
let parentHandle = wasmfsOPFSDirectories.get(parent);
99+
let parentHandle = wasmfsOPFSDirectoryHandles.get(parent);
100100
let childHandle;
101101
try {
102102
childHandle =
@@ -110,7 +110,7 @@ mergeInto(LibraryManager.library, {
110110
}
111111
throw e;
112112
}
113-
return wasmfsOPFSAllocate(wasmfsOPFSDirectories, childHandle);
113+
return wasmfsOPFSAllocate(wasmfsOPFSDirectoryHandles, childHandle);
114114
},
115115

116116
_wasmfs_opfs_get_child__deps: ['$wasmfsOPFSGetOrCreateFile',
@@ -131,7 +131,7 @@ mergeInto(LibraryManager.library, {
131131

132132
_wasmfs_opfs_get_entries__deps: [],
133133
_wasmfs_opfs_get_entries: async function(ctx, dirID, entries) {
134-
let dirHandle = wasmfsOPFSDirectories.get(dirID);
134+
let dirHandle = wasmfsOPFSDirectoryHandles.get(dirID);
135135

136136
// TODO: Use 'for await' once Acorn supports that.
137137
let iter = dirHandle.entries();
@@ -157,46 +157,49 @@ mergeInto(LibraryManager.library, {
157157
},
158158

159159
_wasmfs_opfs_insert_directory__deps: ['$wasmfsOPFSGetOrCreateDir'],
160-
_wasmfs_opfs_insert_directory: async function(ctx, parent, namePtr, childIDPtr) {
160+
_wasmfs_opfs_insert_directory:
161+
async function(ctx, parent, namePtr, childIDPtr) {
161162
let name = UTF8ToString(namePtr);
162163
let childID = await wasmfsOPFSGetOrCreateDir(parent, name, true);
163164
{{{ makeSetValue('childIDPtr', 0, 'childID', 'i32') }}};
164165
_emscripten_proxy_finish(ctx);
165166
},
166167

167-
_wasmfs_opfs_move__deps: ['$wasmfsOPFSFiles', '$wasmfsOPFSDirectories'],
168+
_wasmfs_opfs_move__deps: ['$wasmfsOPFSFileHandles',
169+
'$wasmfsOPFSDirectoryHandles'],
168170
_wasmfs_opfs_move: async function(ctx, fileID, newDirID, namePtr) {
169171
let name = UTF8ToString(namePtr);
170-
let fileHandle = wasmfsOPFSFiles.get(fileID);
171-
let newDirHandle = wasmfsOPFSDirectories.get(newDirID);
172+
let fileHandle = wasmfsOPFSFileHandles.get(fileID);
173+
let newDirHandle = wasmfsOPFSDirectoryHandles.get(newDirID);
172174
await fileHandle.move(newDirHandle, name);
173175
_emscripten_proxy_finish(ctx);
174176
},
175177

176-
_wasmfs_opfs_remove_child__deps: ['$wasmfsOPFSFree', '$wasmfsOPFSDirectories'],
178+
_wasmfs_opfs_remove_child__deps: ['$wasmfsOPFSFree',
179+
'$wasmfsOPFSDirectoryHandles'],
177180
_wasmfs_opfs_remove_child: async function(ctx, dirID, namePtr) {
178181
let name = UTF8ToString(namePtr);
179-
let dirHandle = wasmfsOPFSDirectories.get(dirID);
182+
let dirHandle = wasmfsOPFSDirectoryHandles.get(dirID);
180183
await dirHandle.removeEntry(name);
181184
_emscripten_proxy_finish(ctx);
182185
},
183186

184-
_wasmfs_opfs_free_file__deps: ['$wasmfsOPFSFree', '$wasmfsOPFSFiles'],
187+
_wasmfs_opfs_free_file__deps: ['$wasmfsOPFSFree', '$wasmfsOPFSFileHandles'],
185188
_wasmfs_opfs_free_file: function(fileID) {
186-
wasmfsOPFSFree(wasmfsOPFSFiles, fileID);
189+
wasmfsOPFSFree(wasmfsOPFSFileHandles, fileID);
187190
},
188191

189192
_wasmfs_opfs_free_directory__deps: ['$wasmfsOPFSFree',
190-
'$wasmfsOPFSDirectories'],
193+
'$wasmfsOPFSDirectoryHandles'],
191194
_wasmfs_opfs_free_directory: function(dirID) {
192-
wasmfsOPFSFree(wasmfsOPFSDirectories, dirID);
195+
wasmfsOPFSFree(wasmfsOPFSDirectoryHandles, dirID);
193196
},
194197

195-
_wasmfs_opfs_open__deps: ['$wasmfsOPFSAllocate',
196-
'$wasmfsOPFSFiles',
197-
'$wasmfsOPFSAccesses'],
198-
_wasmfs_opfs_open: async function(ctx, fileID, accessIDPtr) {
199-
let fileHandle = wasmfsOPFSFiles.get(fileID);
198+
_wasmfs_opfs_open_access__deps: ['$wasmfsOPFSAllocate',
199+
'$wasmfsOPFSFileHandles',
200+
'$wasmfsOPFSAccessHandles'],
201+
_wasmfs_opfs_open_access: async function(ctx, fileID, accessIDPtr) {
202+
let fileHandle = wasmfsOPFSFileHandles.get(fileID);
200203
let accessID;
201204
try {
202205
let accessHandle;
@@ -207,7 +210,7 @@ mergeInto(LibraryManager.library, {
207210
accessHandle = await fileHandle.createSyncAccessHandle(
208211
{mode: "in-place"});
209212
}
210-
accessID = wasmfsOPFSAllocate(wasmfsOPFSAccesses, accessHandle);
213+
accessID = wasmfsOPFSAllocate(wasmfsOPFSAccessHandles, accessHandle);
211214
} catch (e) {
212215
if (e.name === "InvalidStateError") {
213216
accessID = -1;
@@ -218,54 +221,55 @@ mergeInto(LibraryManager.library, {
218221
_emscripten_proxy_finish(ctx);
219222
},
220223

221-
_wasmfs_opfs_close__deps: ['$wasmfsOPFSFree', '$wasmfsOPFSAccesses'],
222-
_wasmfs_opfs_close: async function(ctx, accessID) {
223-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
224+
_wasmfs_opfs_close_access__deps: ['$wasmfsOPFSFree',
225+
'$wasmfsOPFSAccessHandles'],
226+
_wasmfs_opfs_close_access: async function(ctx, accessID) {
227+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
224228
await accessHandle.close();
225-
wasmfsOPFSFree(wasmfsOPFSAccesses, accessID);
229+
wasmfsOPFSFree(wasmfsOPFSAccessHandles, accessID);
226230
_emscripten_proxy_finish(ctx);
227231
},
228232

229-
_wasmfs_opfs_read__deps: ['$wasmfsOPFSAccesses'],
230-
_wasmfs_opfs_read: function(accessID, bufPtr, len, pos) {
231-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
233+
_wasmfs_opfs_read_access__deps: ['$wasmfsOPFSAccessHandles'],
234+
_wasmfs_opfs_read_access: function(accessID, bufPtr, len, pos) {
235+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
232236
let data = HEAPU8.subarray(bufPtr, bufPtr + len);
233237
return accessHandle.read(data, {at: pos});
234238
},
235239

236-
_wasmfs_opfs_write__deps: ['$wasmfsOPFSAccesses'],
237-
_wasmfs_opfs_write: function(accessID, bufPtr, len, pos, nwrittenPtr) {
238-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
240+
_wasmfs_opfs_write_access__deps: ['$wasmfsOPFSAccessHandles'],
241+
_wasmfs_opfs_write_access: function(accessID, bufPtr, len, pos, nwrittenPtr) {
242+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
239243
let data = HEAPU8.subarray(bufPtr, bufPtr + len);
240244
return accessHandle.write(data, {at: pos});
241245
},
242246

243-
_wasmfs_opfs_get_size_access__deps: ['$wasmfsOPFSAccesses'],
247+
_wasmfs_opfs_get_size_access__deps: ['$wasmfsOPFSAccessHandles'],
244248
_wasmfs_opfs_get_size_access: async function(ctx, accessID, sizePtr) {
245-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
249+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
246250
let size = await accessHandle.getSize();
247251
{{{ makeSetValue('sizePtr', 0, 'size', 'i32') }}};
248252
_emscripten_proxy_finish(ctx);
249253
},
250254

251-
_wasmfs_opfs_get_size_blob__deps: ['$wasmfsOPFSFiles'],
255+
_wasmfs_opfs_get_size_blob__deps: ['$wasmfsOPFSFileHandles'],
252256
_wasmfs_opfs_get_size_blob: async function(ctx, fileID, sizePtr) {
253-
let fileHandle = wasmfsOPFSFiles.get(fileID);
257+
let fileHandle = wasmfsOPFSFileHandles.get(fileID);
254258
let size = (await fileHandle.getFile()).size;
255259
{{{ makeSetValue('sizePtr', 0, 'size', 'i32') }}};
256260
_emscripten_proxy_finish(ctx);
257261
},
258262

259-
_wasmfs_opfs_set_size__deps: ['$wasmfsOPFSAccesses'],
260-
_wasmfs_opfs_set_size: async function(ctx, accessID, size) {
261-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
263+
_wasmfs_opfs_set_size_access__deps: ['$wasmfsOPFSAccessHandles'],
264+
_wasmfs_opfs_set_size_access: async function(ctx, accessID, size) {
265+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
262266
await accessHandle.truncate(size);
263267
_emscripten_proxy_finish(ctx);
264268
},
265269

266-
_wasmfs_opfs_flush__deps: ['$wasmfsOPFSAccesses'],
267-
_wasmfs_opfs_flush: async function(ctx, accessID) {
268-
let accessHandle = wasmfsOPFSAccesses.get(accessID);
270+
_wasmfs_opfs_flush_access__deps: ['$wasmfsOPFSAccessHandles'],
271+
_wasmfs_opfs_flush_access: async function(ctx, accessID) {
272+
let accessHandle = wasmfsOPFSAccessHandles.get(accessID);
269273
await accessHandle.flush();
270274
_emscripten_proxy_finish(ctx);
271275
}

system/lib/wasmfs/backends/opfs_backend.cpp

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,27 @@ void _wasmfs_opfs_get_entries(em_proxying_ctx* ctx,
5252
int dirID,
5353
std::vector<Directory::Entry>* entries);
5454

55-
void _wasmfs_opfs_open(em_proxying_ctx* ctx, int file_id, int* access_id);
55+
void _wasmfs_opfs_open_access(em_proxying_ctx* ctx,
56+
int file_id,
57+
int* access_id);
5658

57-
void _wasmfs_opfs_close(em_proxying_ctx* ctx, int access_id);
59+
void _wasmfs_opfs_close_access(em_proxying_ctx* ctx, int access_id);
5860

5961
void _wasmfs_opfs_free_file(int file_id);
6062

6163
void _wasmfs_opfs_free_directory(int dir_id);
6264

6365
// Synchronous read. Return the number of bytes read.
64-
int _wasmfs_opfs_read(int access_id, uint8_t* buf, uint32_t len, uint32_t pos);
66+
int _wasmfs_opfs_read_access(int access_id,
67+
uint8_t* buf,
68+
uint32_t len,
69+
uint32_t pos);
6570

6671
// Synchronous write. Return the number of bytes written.
67-
int _wasmfs_opfs_write(int access_id,
68-
const uint8_t* buf,
69-
uint32_t len,
70-
uint32_t pos);
72+
int _wasmfs_opfs_write_access(int access_id,
73+
const uint8_t* buf,
74+
uint32_t len,
75+
uint32_t pos);
7176

7277
// Get the size via an AccessHandle.
7378
void _wasmfs_opfs_get_size_access(em_proxying_ctx* ctx,
@@ -79,9 +84,11 @@ void _wasmfs_opfs_get_size_blob(em_proxying_ctx* ctx,
7984
int access_id,
8085
uint32_t* size);
8186

82-
void _wasmfs_opfs_set_size(em_proxying_ctx* ctx, int access_id, uint32_t size);
87+
void _wasmfs_opfs_set_size_access(em_proxying_ctx* ctx,
88+
int access_id,
89+
uint32_t size);
8390

84-
void _wasmfs_opfs_flush(em_proxying_ctx* ctx, int access_id);
91+
void _wasmfs_opfs_flush_access(em_proxying_ctx* ctx, int access_id);
8592

8693
} // extern "C"
8794

@@ -126,12 +133,15 @@ class OPFSFile : public DataFile {
126133
}
127134

128135
void setSize(size_t size) override {
129-
proxy([&](auto ctx) { _wasmfs_opfs_set_size(ctx.ctx, accessID, size); });
136+
proxy(
137+
[&](auto ctx) { _wasmfs_opfs_set_size_access(ctx.ctx, accessID, size); });
130138
}
131139

132140
void open(oflags_t flags) override {
133141
if (openCount == 0) {
134-
proxy([&](auto ctx) { _wasmfs_opfs_open(ctx.ctx, fileID, &accessID); });
142+
proxy([&](auto ctx) {
143+
_wasmfs_opfs_open_access(ctx.ctx, fileID, &accessID);
144+
});
135145
++openCount;
136146
}
137147
// TODO: proper error handling.
@@ -141,25 +151,28 @@ class OPFSFile : public DataFile {
141151
void close() override {
142152
assert(openCount >= 1);
143153
if (--openCount == 0) {
144-
proxy([&](auto ctx) { _wasmfs_opfs_close(ctx.ctx, accessID); });
154+
proxy([&](auto ctx) { _wasmfs_opfs_close_access(ctx.ctx, accessID); });
145155
accessID = -1;
146156
}
147157
}
148158

149159
ssize_t read(uint8_t* buf, size_t len, off_t offset) override {
150160
uint32_t nread;
151-
proxy([&]() { nread = _wasmfs_opfs_read(accessID, buf, len, offset); });
161+
proxy(
162+
[&]() { nread = _wasmfs_opfs_read_access(accessID, buf, len, offset); });
152163
return nread;
153164
}
154165

155166
ssize_t write(const uint8_t* buf, size_t len, off_t offset) override {
156167
uint32_t nwritten;
157-
proxy([&]() { nwritten = _wasmfs_opfs_write(accessID, buf, len, offset); });
168+
proxy([&]() {
169+
nwritten = _wasmfs_opfs_write_access(accessID, buf, len, offset);
170+
});
158171
return nwritten;
159172
}
160173

161174
void flush() override {
162-
proxy([&](auto ctx) { _wasmfs_opfs_flush(ctx.ctx, accessID); });
175+
proxy([&](auto ctx) { _wasmfs_opfs_flush_access(ctx.ctx, accessID); });
163176
}
164177
};
165178

0 commit comments

Comments
 (0)