4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * (C) Copyright 2012 Commissariat a l'energie atomique et aux energies
9 * Copyright (c) 2016, 2017, Intel Corporation.
11 * All rights reserved. This program and the accompanying materials
12 * are made available under the terms of the GNU Lesser General Public License
13 * (LGPL) version 2.1 or (at your discretion) any later version.
14 * (LGPL) version 2.1 accompanies this distribution, and is available at
15 * http://www.gnu.org/licenses/lgpl-2.1.html
18 * This library is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * Lesser General Public License for more details.
27 * lustre/utils/lctl_thread.h
29 * Author: Rajeev Mishra <rajeevm@hpe.com>
35 #define STRINGIFY(a) #a
39 unsigned int po_only_path:1;
40 unsigned int po_show_path:1;
41 unsigned int po_show_type:1;
42 unsigned int po_recursive:1;
43 unsigned int po_perm:1;
44 unsigned int po_delete:1;
45 unsigned int po_only_dir:1;
46 unsigned int po_file:1;
47 unsigned int po_yaml:1;
48 unsigned int po_detail:1;
49 unsigned int po_header:1;
50 unsigned int po_parallel_threads;
52 #define popt_is_parallel(popt) ((popt).po_parallel_threads > 0)
54 #ifdef HAVE_LIBPTHREAD
55 int write_param(const char *path, const char *param_name,
56 struct param_opts *popt, const char *value);
58 #define LCFG_THREADS_DEF 8
60 /* A work item for parallel set_param */
62 /* The full path to the parameter file */
65 /* The parameter name as returned by display_name */
66 char *spwi_param_name;
68 /* The value to which the parameter is to be set */
72 /* A work queue struct for parallel set_param */
74 /* The parameter options passed to set_param */
75 struct param_opts *spwq_popt;
77 /* The number of valid items in spwq_items */
80 /* The size of the spwq_items list */
83 /* The current index into the spwq_items list */
86 /* Array of work items. */
87 struct sp_work_item *spwq_items;
89 /* A mutex to control access to the work queue */
90 pthread_mutex_t spwq_mutex;
93 int spwq_init(struct sp_workq *wq, struct param_opts *popt);
94 int spwq_destroy(struct sp_workq *wq);
95 int spwq_expand(struct sp_workq *wq, size_t num_items);
96 int spwq_add_item(struct sp_workq *wq, char *path, char *param_name,
98 int sp_run_threads(struct sp_workq *wq);