Support multi-threaded applications
eecheng87 opened this issue · 0 comments
eecheng87 commented
In current ESCA, it is only available in single-thread application. It is time to extend ESCA to support multi-thread applications. The expected implementation would be similar with SAIO. Following is proposed changes:
init_esca
should allocate a table and pin to a proper physical page by customized system call. (refer to init_worker in SAIO)- sys_register should take responsible for the task mentioned in step 1. Also, kernel need to maintain a global table which contain all the allocated table from user processes. (refer to sys_esca_register in SAIO)
- The table indexing of sys_batch should be changed.
To verify the correctness, a unit test program is also needed. The proposed testing program would like (simplified):
void worker() {
batch_start();
write(1, "foo", 3);
write(1, "bar", 3);
batch_flush();
}
int main() {
...
pthread_create(..., &worker, ...);
...
return 0;
}