Test communication
This commit is contained in:
8
Makefile
8
Makefile
@@ -7,11 +7,11 @@ MAKE ?= make
|
|||||||
all: build
|
all: build
|
||||||
@true
|
@true
|
||||||
|
|
||||||
build: build/agent.o
|
build: build/agent.o syscall/jasmin_syscall.o
|
||||||
ar -crs build/libagent.a build/agent.o
|
ar -crs build/libagent.a build/agent.o syscall/jasmin_syscall.o
|
||||||
|
|
||||||
build/%.o: build/%.S syscall/jasmin_syscall.o
|
build/%.o: build/%.S
|
||||||
$(CC) $< syscall/jasmin_syscall.o -c -o $@
|
$(CC) $< -c -o $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm build/* 2> /dev/null || true
|
rm build/* 2> /dev/null || true
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
from Jade require "crypto_scalarmult/curve25519/amd64/mulx/curve25519.jinc"
|
from Jade require "crypto_scalarmult/curve25519/amd64/mulx/curve25519.jinc"
|
||||||
|
|
||||||
export fn agent_start(reg u64 shared_mem sync_mem) {
|
export fn agent_start(reg u64 shared_mem sync_mem) {
|
||||||
while (true) {
|
stack u8[8] unused;
|
||||||
|
reg u64 spill_sync_mem;
|
||||||
|
spill_sync_mem = sync_mem;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
unused = unused;
|
||||||
|
sync_mem = spill_sync_mem;
|
||||||
|
unused = #read(unused, sync_mem);
|
||||||
|
unused = unused;
|
||||||
|
sync_mem = spill_sync_mem;
|
||||||
|
unused = #write(unused, sync_mem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ uint64_t __jasmin_syscall_open__(uint8_t* x, uint64_t xlen)
|
|||||||
|
|
||||||
uint8_t* __jasmin_syscall_read__(uint8_t* _x, uint64_t xlen, uint64_t fd)
|
uint8_t* __jasmin_syscall_read__(uint8_t* _x, uint64_t xlen, uint64_t fd)
|
||||||
{
|
{
|
||||||
uint32_t* addr = (uint32_t*)(uintptr_t)(fd - 4096);
|
uint32_t* addr = (uint32_t*)(uintptr_t)fd;
|
||||||
long ret = syscall(SYS_futex, addr, FUTEX_WAIT, 0x1, NULL, NULL, 0);
|
long ret = syscall(SYS_futex, addr, FUTEX_WAIT, 0x1, NULL, NULL, 0);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
printf("%d\n", errno);
|
printf("%d\n", errno);
|
||||||
@@ -102,7 +102,7 @@ uint8_t* __jasmin_syscall_read__(uint8_t* _x, uint64_t xlen, uint64_t fd)
|
|||||||
|
|
||||||
uint8_t* __jasmin_syscall_write__(uint8_t* _x, uint64_t xlen, uint64_t fd)
|
uint8_t* __jasmin_syscall_write__(uint8_t* _x, uint64_t xlen, uint64_t fd)
|
||||||
{
|
{
|
||||||
uint32_t* addr = (uint32_t*)(uintptr_t)(fd - 4096);
|
uint32_t* addr = (uint32_t*)(uintptr_t)fd;
|
||||||
*addr = 1;
|
*addr = 1;
|
||||||
syscall(SYS_futex, addr, FUTEX_WAKE, 1, NULL, NULL, 0);
|
syscall(SYS_futex, addr, FUTEX_WAKE, 1, NULL, NULL, 0);
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user