• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source3/include/
1/*
2   Unix SMB/CIFS implementation.
3   global locks based on ctdb
4   Copyright (C) 2009 by Volker Lendecke
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 3 of the License, or
9   (at your option) any later version.
10
11   This program 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
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program.  If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef _G_LOCK_H_
21#define _G_LOCK_H_
22
23#include "dbwrap.h"
24
25struct g_lock_ctx;
26
27enum g_lock_type {
28	G_LOCK_READ = 0,
29	G_LOCK_WRITE = 1,
30};
31
32/*
33 * Or'ed with g_lock_type
34 */
35#define G_LOCK_PENDING (2)
36
37struct g_lock_ctx *g_lock_ctx_init(TALLOC_CTX *mem_ctx,
38				   struct messaging_context *msg);
39
40NTSTATUS g_lock_lock(struct g_lock_ctx *ctx, const char *name,
41		     enum g_lock_type lock_type, struct timeval timeout);
42NTSTATUS g_lock_unlock(struct g_lock_ctx *ctx, const char *name);
43NTSTATUS g_lock_get(struct g_lock_ctx *ctx, const char *name,
44		struct server_id *pid);
45
46NTSTATUS g_lock_do(const char *name, enum g_lock_type lock_type,
47		   struct timeval timeout,
48		   void (*fn)(void *private_data), void *private_data);
49
50int g_lock_locks(struct g_lock_ctx *ctx,
51		 int (*fn)(const char *name, void *private_data),
52		 void *private_data);
53NTSTATUS g_lock_dump(struct g_lock_ctx *ctx, const char *name,
54		     int (*fn)(struct server_id pid,
55			       enum g_lock_type lock_type,
56			       void *private_data),
57		     void *private_data);
58
59#endif
60