3 #include "poll_funcs/poll_funcs_tevent.h"
6 int main(int argc
, const char *argv
[])
8 struct poll_funcs
*funcs
;
10 struct unix_msg_ctx
**ctxs
;
11 struct tevent_context
*ev
;
15 unsigned num_ctxs
= 1;
16 struct sockaddr_un dst
;
19 fprintf(stderr
, "Usage: %s <sockname> [num_contexts]\n", argv
[0]);
23 num_ctxs
= atoi(argv
[2]);
26 ev
= tevent_context_init(NULL
);
28 perror("tevent_context_init failed");
31 funcs
= poll_funcs_init_tevent(NULL
);
33 fprintf(stderr
, "poll_funcs_init_tevent failed\n");
36 tevent_handle
= poll_funcs_tevent_register(NULL
, funcs
, ev
);
37 if (tevent_handle
== NULL
) {
38 fprintf(stderr
, "poll_funcs_tevent_register failed\n");
42 ctxs
= talloc_array(ev
, struct unix_msg_ctx
*, num_ctxs
);
44 fprintf(stderr
, "talloc failed\n");
48 for (i
=0; i
<num_ctxs
; i
++) {
49 ret
= unix_msg_init(NULL
, funcs
, 256, 1, NULL
, NULL
,
52 fprintf(stderr
, "unix_msg_init failed: %s\n",
59 iov
.iov_len
= sizeof(i
);
61 dst
= (struct sockaddr_un
) { .sun_family
= AF_UNIX
};
62 strlcpy(dst
.sun_path
, argv
[1], sizeof(dst
.sun_path
));
64 for (i
=0; i
<num_ctxs
; i
++) {
67 for (j
=0; j
<100000; j
++) {
68 ret
= unix_msg_send(ctxs
[i
], &dst
, &iov
, 1);
70 fprintf(stderr
, "unix_msg_send failed: %s\n",
78 ret
= tevent_loop_once(ev
);
80 fprintf(stderr
, "tevent_loop_once failed: %s\n",
86 for (i
=0; i
<num_ctxs
; i
++) {
87 unix_msg_free(ctxs
[i
]);