mirror of
https://github.com/ringtailsoftware/uvm32.git
synced 2026-06-05 22:43:39 +00:00
Rename getbuf to getslice
This commit is contained in:
parent
b083008d7b
commit
2039de73f2
7 changed files with 16 additions and 16 deletions
|
|
@ -225,7 +225,7 @@ int main(int argc, char *argv[]) {
|
|||
case UVM32_EVT_SYSCALL:
|
||||
switch(evt.data.syscall.code) {
|
||||
case UVM32_SYSCALL_PRINTBUF: {
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(vmst, &evt, ARG0, ARG1);
|
||||
while(buf.len--) {
|
||||
printf("%02x", *buf.ptr++);
|
||||
}
|
||||
|
|
@ -259,7 +259,7 @@ int main(int argc, char *argv[]) {
|
|||
uvm32_arg_setval(vmst, &evt, RET, 0xFFFFFFFF);
|
||||
} break;
|
||||
case UVM32_SYSCALL_RENDER: {
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(vmst, &evt, ARG0, ARG1);
|
||||
|
||||
// copy into texture
|
||||
void* dst;
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ int main(int argc, char *argv[]) {
|
|||
case UVM32_EVT_SYSCALL:
|
||||
switch(evt.data.syscall.code) {
|
||||
case UVM32_SYSCALL_PRINTBUF: {
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
while(buf.len--) {
|
||||
printf("%02x", *buf.ptr++);
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -204,7 +204,7 @@ void test_extram_buf_slice(void) {
|
|||
// check for printbuf of val
|
||||
TEST_ASSERT_EQUAL(UVM32_EVT_SYSCALL, evt.typ);
|
||||
TEST_ASSERT_EQUAL(evt.data.syscall.code, UVM32_SYSCALL_PRINTBUF);
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
TEST_ASSERT_EQUAL(5, buf.len);
|
||||
TEST_ASSERT_EQUAL(0, memcmp(buf.ptr, "hello", 5));
|
||||
}
|
||||
|
|
@ -275,7 +275,7 @@ void test_extram_buf_slice_rugpull(void) {
|
|||
// remove extram
|
||||
uvm32_extram(&vmst, NULL, 0);
|
||||
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
// check that reading from non-existent extram gives empty buffer and puts into err state
|
||||
TEST_ASSERT_EQUAL(0, buf.len);
|
||||
uvm32_run(&vmst, &evt, 100);
|
||||
|
|
@ -362,7 +362,7 @@ void test_extram_buf_slice_beyond_extram_end(void) {
|
|||
// string starts in valid extram, but no terminator will be found before hitting end of extram
|
||||
|
||||
// check that reading from non-existent extram gives empty string and puts into err state
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
TEST_ASSERT_EQUAL(0, buf.len);
|
||||
uvm32_run(&vmst, &evt, 100);
|
||||
TEST_ASSERT_EQUAL(evt.typ, UVM32_EVT_ERR);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ void test_syscall_args_bufrd(void) {
|
|||
TEST_ASSERT_EQUAL(evt.data.syscall.code, SYSCALL_C);
|
||||
|
||||
// get buffer described by ptr=ARG0,len=ARG1
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
uint8_t expected[32];
|
||||
for (int i=0;i<32;i++) {
|
||||
expected[i] = i;
|
||||
|
|
@ -98,7 +98,7 @@ void test_syscall_args_bufrd_bad_addr(void) {
|
|||
TEST_ASSERT_EQUAL(evt.data.syscall.code, SYSCALL_D);
|
||||
|
||||
// get buffer described by ptr=ARG0,len=ARG1
|
||||
uvm32_slice_t buf = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
TEST_ASSERT_EQUAL(0, buf.len); // it was invalid, should get a safe zero length buffer
|
||||
// attempt to run vm, should be stuck in err
|
||||
uvm32_run(&vmst, &evt, 1000);
|
||||
|
|
@ -118,13 +118,13 @@ void test_syscall_args_bufrd_ptrs(void) {
|
|||
TEST_ASSERT_EQUAL(evt.data.syscall.code, SYSCALL_E);
|
||||
|
||||
// get uint32_t buffer described by ptr=ARG0
|
||||
uvm32_slice_t buf0 = uvm32_arg_getbuf_fixed(&vmst, &evt, ARG0, 4);
|
||||
uvm32_slice_t buf0 = uvm32_arg_getslice_fixed(&vmst, &evt, ARG0, 4);
|
||||
TEST_ASSERT_EQUAL(4, buf0.len); // check read ok
|
||||
uint32_t rspa = 0xABCD1234;
|
||||
memcpy(buf0.ptr, &rspa, 4); // send it back
|
||||
|
||||
// get uint32_t buffer described by ptr=ARG1
|
||||
uvm32_slice_t buf1 = uvm32_arg_getbuf_fixed(&vmst, &evt, ARG1, 4);
|
||||
uvm32_slice_t buf1 = uvm32_arg_getslice_fixed(&vmst, &evt, ARG1, 4);
|
||||
TEST_ASSERT_EQUAL(4, buf1.len); // check read ok
|
||||
uint32_t rspb = 0x9876DECF;
|
||||
memcpy(buf1.ptr, &rspb, 4); // send it back
|
||||
|
|
@ -150,7 +150,7 @@ void test_syscall_args_buf_pass(void) {
|
|||
TEST_ASSERT_EQUAL(evt.data.syscall.code, SYSCALL_G);
|
||||
|
||||
// get buffer described by ptr=ARG0,len=ARG1
|
||||
uvm32_slice_t buf0 = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf0 = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
TEST_ASSERT_EQUAL(32, buf0.len);
|
||||
// fill with a pattern
|
||||
for (int i=0;i<32;i++) {
|
||||
|
|
@ -162,7 +162,7 @@ void test_syscall_args_buf_pass(void) {
|
|||
TEST_ASSERT_EQUAL(evt.data.syscall.code, SYSCALL_H);
|
||||
|
||||
// get buffer described by ptr=ARG0,len=ARG1
|
||||
uvm32_slice_t buf1 = uvm32_arg_getbuf(&vmst, &evt, ARG0, ARG1);
|
||||
uvm32_slice_t buf1 = uvm32_arg_getslice(&vmst, &evt, ARG0, ARG1);
|
||||
TEST_ASSERT_EQUAL(32, buf1.len);
|
||||
for (int i=0;i<32;i++) {
|
||||
TEST_ASSERT_EQUAL(i*2, buf1.ptr[i]);
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@ const char *uvm32_arg_getcstr(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t
|
|||
}
|
||||
}
|
||||
|
||||
uvm32_slice_t uvm32_arg_getbuf(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uvm32_arg_t argLen) {
|
||||
uvm32_slice_t uvm32_arg_getslice(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uvm32_arg_t argLen) {
|
||||
uvm32_slice_t scb;
|
||||
if (!get_safeptr(vmst, uvm32_arg_getval(vmst, evt, argPtr), uvm32_arg_getval(vmst, evt, argLen), &scb)) {
|
||||
setStatusErr(vmst, UVM32_ERR_MEM_RD);
|
||||
|
|
@ -404,7 +404,7 @@ uvm32_slice_t uvm32_arg_getbuf(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_
|
|||
return scb;
|
||||
}
|
||||
|
||||
uvm32_slice_t uvm32_arg_getbuf_fixed(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uint32_t len) {
|
||||
uvm32_slice_t uvm32_arg_getslice_fixed(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uint32_t len) {
|
||||
uvm32_slice_t scb;
|
||||
if (!get_safeptr(vmst, uvm32_arg_getval(vmst, evt, argPtr), len, &scb)) {
|
||||
setStatusErr(vmst, UVM32_ERR_MEM_RD);
|
||||
|
|
|
|||
|
|
@ -164,10 +164,10 @@ const char *uvm32_arg_getcstr(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t
|
|||
void uvm32_arg_setval(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t, uint32_t val);
|
||||
|
||||
/*! Read a syscall argument pair (ptr, length) as a slice */
|
||||
uvm32_slice_t uvm32_arg_getbuf(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uvm32_arg_t argLen);
|
||||
uvm32_slice_t uvm32_arg_getslice(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t argPtr, uvm32_arg_t argLen);
|
||||
|
||||
/*! Read a syscall argument pointer as a slice of known length */
|
||||
uvm32_slice_t uvm32_arg_getbuf_fixed(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t arg, uint32_t len);
|
||||
uvm32_slice_t uvm32_arg_getslice_fixed(uvm32_state_t *vmst, uvm32_evt_t *evt, uvm32_arg_t arg, uint32_t len);
|
||||
|
||||
|
||||
/*! Setup a block of memory to act as external RAM, it will be available on in VM code at address `UVM32_EXTRAM_BASE`. The memory is not copied, so the caller must ensure it remains available until `uvm32_extram()` is called to setup a different region or the VM is ended. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue