mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-06-18 02:59:21 +00:00

an example application with flexible cli options which aims to allow us to perform any wasi-nn operations. eg. ``` --load-graph=file=fixture/model.xml,file=fixture/model.bin,id=graph --init-execution-context=graph-id=graph,id=ctx --set-input=file=fixture/tensor.bgr,context-id=ctx,dim=1,dim=3,dim=224,dim=224 --compute=context-id=ctx --get-output=context-id=ctx,file=output.bin ```
74 lines
1.3 KiB
C
74 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2025 Midokura Japan KK. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*/
|
|
|
|
/*
|
|
* modified copy-and-paste from:
|
|
* https://github.com/yamt/toywasm/blob/0eaad8cacd0cc7692946ff19b25994f106113be8/lib/fileio.c
|
|
*/
|
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#include "fileio.h"
|
|
|
|
int
|
|
map_file(const char *path, void **pp, size_t *sizep)
|
|
{
|
|
void *p;
|
|
size_t size;
|
|
ssize_t ssz;
|
|
int fd;
|
|
int ret;
|
|
|
|
fd = open(path, O_RDONLY);
|
|
if (fd == -1) {
|
|
ret = errno;
|
|
assert(ret != 0);
|
|
return ret;
|
|
}
|
|
struct stat st;
|
|
ret = fstat(fd, &st);
|
|
if (ret == -1) {
|
|
ret = errno;
|
|
assert(ret != 0);
|
|
close(fd);
|
|
return ret;
|
|
}
|
|
size = st.st_size;
|
|
if (size > 0) {
|
|
p = malloc(size);
|
|
}
|
|
else {
|
|
/* Avoid a confusing error */
|
|
p = malloc(1);
|
|
}
|
|
if (p == NULL) {
|
|
close(fd);
|
|
return ENOMEM;
|
|
}
|
|
ssz = read(fd, p, size);
|
|
if (ssz != size) {
|
|
ret = errno;
|
|
assert(ret != 0);
|
|
close(fd);
|
|
return ret;
|
|
}
|
|
close(fd);
|
|
*pp = p;
|
|
*sizep = size;
|
|
return 0;
|
|
}
|
|
|
|
void
|
|
unmap_file(void *p, size_t sz)
|
|
{
|
|
free(p);
|
|
}
|