wafsamba: add MODE_{744,_777}
[Samba.git] / source3 / torture / bench_pthreadpool.c
blob3d581e9e5b6ab729172e28c7c8bcec9f3e6df199
1 /*
2 * Unix SMB/CIFS implementation.
3 * Little pthreadpool benchmark
5 * Copyright (C) Volker Lendecke 2014
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "includes.h"
22 #include "../lib/pthreadpool/pthreadpool_pipe.h"
23 #include "proto.h"
25 extern int torture_numops;
27 static void null_job(void *private_data)
29 return;
32 bool run_bench_pthreadpool(int dummy)
34 struct pthreadpool_pipe *pool;
35 int i, ret;
37 ret = pthreadpool_pipe_init(1, &pool);
38 if (ret != 0) {
39 d_fprintf(stderr, "pthreadpool_pipe_init failed: %s\n",
40 strerror(ret));
41 return false;
44 for (i=0; i<torture_numops; i++) {
45 int jobid;
47 ret = pthreadpool_pipe_add_job(pool, 0, null_job, NULL);
48 if (ret != 0) {
49 d_fprintf(stderr, "pthreadpool_pipe_add_job "
50 "failed: %s\n", strerror(ret));
51 break;
53 ret = pthreadpool_pipe_finished_jobs(pool, &jobid, 1);
54 if (ret < 0) {
55 d_fprintf(stderr, "pthreadpool_pipe_finished_job "
56 "failed: %s\n", strerror(-ret));
57 break;
61 if (ret != 1) {
62 return false;
65 ret = pthreadpool_pipe_destroy(pool);
67 return (ret == 0);