Test communication

This commit is contained in:
2024-04-05 12:26:59 +02:00
parent a9a5c9f830
commit 3dd766efdb
4 changed files with 16 additions and 7 deletions

View File

@@ -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

View File

@@ -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) {
stack u8[8] unused;
reg u64 spill_sync_mem;
spill_sync_mem = sync_mem;
while (true) { 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);
} }
} }

View File

@@ -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.