diff --git a/communication_techniques/include/asm_cache_comm.h b/communication_techniques/include/asm_cache_comm.h index 8abfbdd..16b8871 100644 --- a/communication_techniques/include/asm_cache_comm.h +++ b/communication_techniques/include/asm_cache_comm.h @@ -31,7 +31,7 @@ extern struct communication_assoc assoc_root; __BEGIN_DECLS struct communication_assoc *create_comm_assoc(void); -static inline void send(void *addr) { +static inline void send(void **addr) { asm volatile("mov %%gs:channel@NTPOFF + 2 *" toString(BUF_SIZE) " + " toString(CACHE_LINE_SIZE) ", %%eax\n\t" "mov %0, %%gs:channel@NTPOFF(%%eax)\n\t" "addl $4, %%eax\n\t" diff --git a/communication_techniques/include/pipe_comm.h b/communication_techniques/include/pipe_comm.h index c068ef1..fd2d49e 100644 --- a/communication_techniques/include/pipe_comm.h +++ b/communication_techniques/include/pipe_comm.h @@ -26,7 +26,7 @@ extern __thread int pipefd[]; extern struct communication_assoc assoc_root; struct communication_assoc *create_comm_assoc(void); -static inline void send(void *addr) { +static inline void send(void **addr) { write(pipefd[WRITE_IDX], &addr, sizeof(void *)); } diff --git a/communication_techniques/include/shared_mem_comm.h b/communication_techniques/include/shared_mem_comm.h index 81a4cea..8bc88b9 100644 --- a/communication_techniques/include/shared_mem_comm.h +++ b/communication_techniques/include/shared_mem_comm.h @@ -28,7 +28,7 @@ extern __thread volatile int prod_idx; extern __thread volatile int cons_idx; struct communication_assoc *create_comm_assoc(void); -static inline void send(void *addr) { +static inline void send(void **addr) { while ((prod_idx + 1) % SHARED_SPACE_VOIDPTR == cons_idx); shared_space[prod_idx] = addr; prod_idx = (prod_idx + 1) % SHARED_SPACE_VOIDPTR; diff --git a/communication_techniques/include/shared_mem_opt_comm.h b/communication_techniques/include/shared_mem_opt_comm.h index 0211040..5cabe9c 100644 --- a/communication_techniques/include/shared_mem_opt_comm.h +++ b/communication_techniques/include/shared_mem_opt_comm.h @@ -28,7 +28,7 @@ extern __thread volatile int prod_idx; extern __thread volatile int cons_idx; struct communication_assoc *create_comm_assoc(void); -static inline void send(void *addr) { +static inline void send(void **addr) { static __thread int local_cons_idx = 0; if (likely(((prod_idx + 1) % SHARED_SPACE_VOIDPTR) == local_cons_idx)) diff --git a/communication_techniques/src/main.c b/communication_techniques/src/main.c index cda2943..fa34f72 100644 --- a/communication_techniques/src/main.c +++ b/communication_techniques/src/main.c @@ -148,7 +148,7 @@ int analyse_options(int argc, char *argv[]) void *producer(void *cont_ptr_void) { int i, j; - uintptr_t k; + void *k; volatile int *cont; cont = *((volatile int **) cont_ptr_void); @@ -168,7 +168,7 @@ void *producer(void *cont_ptr_void) } printf("Registering: %p !\n", (void*) pthread_self()); add_sender(); - k = (uintptr_t) pthread_self(); + k = cont_ptr_void; if (initialize_papi() != -1) { for(i = 0; i < nb_cache_lines; i++) {