2009-10-25 18:12:12 +03:00
/*
Unix SMB / CIFS implementation .
2010-03-12 14:08:19 +03:00
global locks based on dbwrap and messaging
2009-10-25 18:12:12 +03:00
Copyright ( C ) 2009 by Volker Lendecke
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef _G_LOCK_H_
# define _G_LOCK_H_
2011-07-07 19:42:08 +04:00
# include "dbwrap/dbwrap.h"
2009-10-25 18:12:12 +03:00
struct g_lock_ctx ;
enum g_lock_type {
G_LOCK_READ = 0 ,
G_LOCK_WRITE = 1 ,
} ;
struct g_lock_ctx * g_lock_ctx_init ( TALLOC_CTX * mem_ctx ,
struct messaging_context * msg ) ;
NTSTATUS g_lock_lock ( struct g_lock_ctx * ctx , const char * name ,
enum g_lock_type lock_type , struct timeval timeout ) ;
NTSTATUS g_lock_unlock ( struct g_lock_ctx * ctx , const char * name ) ;
NTSTATUS g_lock_get ( struct g_lock_ctx * ctx , const char * name ,
struct server_id * pid ) ;
2010-03-12 16:22:54 +03:00
NTSTATUS g_lock_do ( const char * name , enum g_lock_type lock_type ,
2011-12-12 17:55:54 +04:00
struct timeval timeout ,
2010-03-12 16:22:54 +03:00
void ( * fn ) ( void * private_data ) , void * private_data ) ;
2009-10-25 18:12:12 +03:00
int g_lock_locks ( struct g_lock_ctx * ctx ,
int ( * fn ) ( const char * name , void * private_data ) ,
void * private_data ) ;
NTSTATUS g_lock_dump ( struct g_lock_ctx * ctx , const char * name ,
int ( * fn ) ( struct server_id pid ,
enum g_lock_type lock_type ,
void * private_data ) ,
void * private_data ) ;
# endif