#include #include #include #include #include #include "shm.h" int main(void) { struct share_data *data; int rv; data = get_share(); if (!data) return 1; rv = pthread_mutex_lock(&data->m); if (rv != 0) { if (rv == EOWNERDEAD) { printf("send (%d): recover mutex\n", getpid()); data->msg[0] = 0; pthread_mutex_consistent(&data->m); } else { /* maybe rv == ENOTRECOVERABLE */ return 1; } } printf("send (%d): type message and hit RETURN to send signal\n", getpid()); fgets(data->msg, sizeof(data->msg), stdin); /* set "sending" uprobe here */ pthread_cond_signal(&data->c); pthread_mutex_unlock(&data->m); sleep(1); return 0; }