1 /*
2  * lock_manager.h: Defines the internal lock manager API
3  *
4  * Copyright (C) 2010-2011 Red Hat, Inc.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library.  If not, see
18  * <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #pragma once
23 
24 #include "internal.h"
25 #include "lock_driver.h"
26 
27 typedef struct _virLockManagerPlugin virLockManagerPlugin;
28 
29 virLockManagerPlugin *virLockManagerPluginNew(const char *name,
30                                                 const char *driverName,
31                                                 const char *configDir,
32                                                 unsigned int flags);
33 void virLockManagerPluginRef(virLockManagerPlugin *plugin);
34 void virLockManagerPluginUnref(virLockManagerPlugin *plugin);
35 
36 const char *virLockManagerPluginGetName(virLockManagerPlugin *plugin);
37 bool virLockManagerPluginUsesState(virLockManagerPlugin *plugin);
38 
39 virLockDriver *virLockManagerPluginGetDriver(virLockManagerPlugin *plugin);
40 
41 virLockManager *virLockManagerNew(virLockDriver *driver,
42                                     unsigned int type,
43                                     size_t nparams,
44                                     virLockManagerParam *params,
45                                     unsigned int flags);
46 
47 int virLockManagerAddResource(virLockManager *manager,
48                               unsigned int type,
49                               const char *name,
50                               size_t nparams,
51                               virLockManagerParam *params,
52                               unsigned int flags);
53 
54 int virLockManagerAcquire(virLockManager *manager,
55                           const char *state,
56                           unsigned int flags,
57                           virDomainLockFailureAction action,
58                           int *fd);
59 int virLockManagerRelease(virLockManager *manager,
60                           char **state,
61                           unsigned int flags);
62 int virLockManagerInquire(virLockManager *manager,
63                           char **state,
64                           unsigned int flags);
65 
66 int virLockManagerFree(virLockManager *manager);
67