Closed dgiantsidi closed 4 years ago
The continuation will always run on the thread that enqueued the request. This is enforced by the hidden cont_etid
(short for continuation's eRPC thread ID) parameter to enqueue_request
.
Without background RPCs, the remote thread that executes the request handler is the remote thread that the client created a session to.
Dimitra - can you please tell me the version of DPDK you are using and if you had to modify eRPC to fix any compilation issues? Thanks!
Thanks Anuj for your reply.
I am using DPDK-19.08.0-rc2.
I didn't change any eRPC code except for a line in src/util/huge_alloc.c.
In particular, I changed this:
shm_id = shmget(shm_key, size, IPC_CREAT | IPC_EXCL | 0666 | SHM_HUGETLB);
to this:
shm_id = shmget(shm_key, size, IPC_CREAT | IPC_EXCL | 0666);
Otherwise I got an error for Invalid Argument
error when invoking mbind() a few lines below.
In order to make it compile I had to change some compiler-flags but I suspect that the problem cannot be there (e.g. added -msse4.1, -Wno-error, etc).
Thanks, Dimitra
Hi again,
If an application thread enqueues a request, will the continuation-function for this specific request be executed by the same specific application thread or can be executed any other application thread running? (for simplification erpc-background threads are disabled).
Likewise, in the remote machine, the thread that will execute the request_handler function, will be the thread that is "connected" (through Remote ID) with the sender or any thread that might be available?
Thanks, --Dimitra