13 struct list_head buffers
= LIST_HEAD_INIT(buffers
);
26 int file_fd
; /* output file */
29 int add_buffer(pid_t pid
, char *bufname
)
31 struct buffer_info
*buf
;
36 buf
= (struct buffer_info
*) malloc(sizeof(struct buffer_info
));
38 ERR("add_buffer: insufficient memory");
46 asprintf(&send_msg
, "get_shmid %s", buf
->name
);
47 send_message(pid
, send_msg
, &received_msg
);
49 DBG("got buffer name %s", buf
->name
);
51 result
= sscanf(received_msg
, "%d", &buf
->shmid
);
53 ERR("unable to parse response to get_shmid");
57 DBG("got shmid %d", buf
->shmid
);
60 asprintf(&send_msg
, "get_n_subbufs %s", buf
->name
);
61 send_message(pid
, send_msg
, &received_msg
);
64 result
= sscanf(received_msg
, "%d", &buf
->n_subbufs
);
66 ERR("unable to parse response to get_n_subbufs");
70 DBG("got n_subbufs %d", buf
->n_subbufs
);
73 asprintf(&send_msg
, "get_subbuf_size %s", buf
->name
);
74 send_message(pid
, send_msg
, &received_msg
);
77 result
= sscanf(received_msg
, "%d", &buf
->subbuf_size
);
79 ERR("unable to parse response to get_subbuf_size");
83 DBG("got subbuf_size %d", buf
->subbuf_size
);
86 buf
->mem
= shmat(buf
->shmid
, NULL
, 0);
87 if(buf
->mem
== (void *) 0) {
91 DBG("successfully attached memory");
96 int main(int argc
, char **argv
)
98 struct ustcomm_ustd ustd
;
101 result
= ustcomm_init_ustd(&ustd
);
103 ERR("failed to initialize socket");
110 ustcomm_ustd_recv_message(&ustd
, &recvbuf
, NULL
);
112 if(!strncmp(recvbuf
, "collect", 7)) {
117 result
= sscanf(recvbuf
, "%*s %d %50as", &pid
, &bufname
);
119 fprintf(stderr
, "parsing error: %s\n", recvbuf
);
122 add_buffer(pid
, bufname
);
This page took 0.035116 seconds and 4 git commands to generate.