xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/dlm_device.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /******************************************************************************
2*53ee8cc1Swenshuai.xi *******************************************************************************
3*53ee8cc1Swenshuai.xi **
4*53ee8cc1Swenshuai.xi **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
5*53ee8cc1Swenshuai.xi **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
6*53ee8cc1Swenshuai.xi **
7*53ee8cc1Swenshuai.xi **  This copyrighted material is made available to anyone wishing to use,
8*53ee8cc1Swenshuai.xi **  modify, copy, or redistribute it subject to the terms and conditions
9*53ee8cc1Swenshuai.xi **  of the GNU General Public License v.2.
10*53ee8cc1Swenshuai.xi **
11*53ee8cc1Swenshuai.xi *******************************************************************************
12*53ee8cc1Swenshuai.xi ******************************************************************************/
13*53ee8cc1Swenshuai.xi 
14*53ee8cc1Swenshuai.xi #ifndef _LINUX_DLM_DEVICE_H
15*53ee8cc1Swenshuai.xi #define _LINUX_DLM_DEVICE_H
16*53ee8cc1Swenshuai.xi 
17*53ee8cc1Swenshuai.xi /* This is the device interface for dlm, most users will use a library
18*53ee8cc1Swenshuai.xi  * interface.
19*53ee8cc1Swenshuai.xi  */
20*53ee8cc1Swenshuai.xi 
21*53ee8cc1Swenshuai.xi #include <linux/dlm.h>
22*53ee8cc1Swenshuai.xi #include <linux/types.h>
23*53ee8cc1Swenshuai.xi 
24*53ee8cc1Swenshuai.xi #define DLM_USER_LVB_LEN	32
25*53ee8cc1Swenshuai.xi 
26*53ee8cc1Swenshuai.xi /* Version of the device interface */
27*53ee8cc1Swenshuai.xi #define DLM_DEVICE_VERSION_MAJOR 6
28*53ee8cc1Swenshuai.xi #define DLM_DEVICE_VERSION_MINOR 0
29*53ee8cc1Swenshuai.xi #define DLM_DEVICE_VERSION_PATCH 0
30*53ee8cc1Swenshuai.xi 
31*53ee8cc1Swenshuai.xi /* struct passed to the lock write */
32*53ee8cc1Swenshuai.xi struct dlm_lock_params {
33*53ee8cc1Swenshuai.xi 	__u8 mode;
34*53ee8cc1Swenshuai.xi 	__u8 namelen;
35*53ee8cc1Swenshuai.xi 	__u16 unused;
36*53ee8cc1Swenshuai.xi 	__u32 flags;
37*53ee8cc1Swenshuai.xi 	__u32 lkid;
38*53ee8cc1Swenshuai.xi 	__u32 parent;
39*53ee8cc1Swenshuai.xi 	__u64 xid;
40*53ee8cc1Swenshuai.xi 	__u64 timeout;
41*53ee8cc1Swenshuai.xi 	void *castparam;
42*53ee8cc1Swenshuai.xi 	void *castaddr;
43*53ee8cc1Swenshuai.xi 	void *bastparam;
44*53ee8cc1Swenshuai.xi 	void *bastaddr;
45*53ee8cc1Swenshuai.xi 	struct dlm_lksb *lksb;
46*53ee8cc1Swenshuai.xi 	char lvb[DLM_USER_LVB_LEN];
47*53ee8cc1Swenshuai.xi 	char name[0];
48*53ee8cc1Swenshuai.xi };
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi struct dlm_lspace_params {
51*53ee8cc1Swenshuai.xi 	__u32 flags;
52*53ee8cc1Swenshuai.xi 	__u32 minor;
53*53ee8cc1Swenshuai.xi 	char name[0];
54*53ee8cc1Swenshuai.xi };
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi struct dlm_purge_params {
57*53ee8cc1Swenshuai.xi 	__u32 nodeid;
58*53ee8cc1Swenshuai.xi 	__u32 pid;
59*53ee8cc1Swenshuai.xi };
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi struct dlm_write_request {
62*53ee8cc1Swenshuai.xi 	__u32 version[3];
63*53ee8cc1Swenshuai.xi 	__u8 cmd;
64*53ee8cc1Swenshuai.xi 	__u8 is64bit;
65*53ee8cc1Swenshuai.xi 	__u8 unused[2];
66*53ee8cc1Swenshuai.xi 
67*53ee8cc1Swenshuai.xi 	union  {
68*53ee8cc1Swenshuai.xi 		struct dlm_lock_params   lock;
69*53ee8cc1Swenshuai.xi 		struct dlm_lspace_params lspace;
70*53ee8cc1Swenshuai.xi 		struct dlm_purge_params  purge;
71*53ee8cc1Swenshuai.xi 	} i;
72*53ee8cc1Swenshuai.xi };
73*53ee8cc1Swenshuai.xi 
74*53ee8cc1Swenshuai.xi struct dlm_device_version {
75*53ee8cc1Swenshuai.xi 	__u32 version[3];
76*53ee8cc1Swenshuai.xi };
77*53ee8cc1Swenshuai.xi 
78*53ee8cc1Swenshuai.xi /* struct read from the "device" fd,
79*53ee8cc1Swenshuai.xi    consists mainly of userspace pointers for the library to use */
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi struct dlm_lock_result {
82*53ee8cc1Swenshuai.xi 	__u32 version[3];
83*53ee8cc1Swenshuai.xi 	__u32 length;
84*53ee8cc1Swenshuai.xi 	void * user_astaddr;
85*53ee8cc1Swenshuai.xi 	void * user_astparam;
86*53ee8cc1Swenshuai.xi 	struct dlm_lksb * user_lksb;
87*53ee8cc1Swenshuai.xi 	struct dlm_lksb lksb;
88*53ee8cc1Swenshuai.xi 	__u8 bast_mode;
89*53ee8cc1Swenshuai.xi 	__u8 unused[3];
90*53ee8cc1Swenshuai.xi 	/* Offsets may be zero if no data is present */
91*53ee8cc1Swenshuai.xi 	__u32 lvb_offset;
92*53ee8cc1Swenshuai.xi };
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi /* Commands passed to the device */
95*53ee8cc1Swenshuai.xi #define DLM_USER_LOCK         1
96*53ee8cc1Swenshuai.xi #define DLM_USER_UNLOCK       2
97*53ee8cc1Swenshuai.xi #define DLM_USER_QUERY        3
98*53ee8cc1Swenshuai.xi #define DLM_USER_CREATE_LOCKSPACE  4
99*53ee8cc1Swenshuai.xi #define DLM_USER_REMOVE_LOCKSPACE  5
100*53ee8cc1Swenshuai.xi #define DLM_USER_PURGE        6
101*53ee8cc1Swenshuai.xi #define DLM_USER_DEADLOCK     7
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi /* Lockspace flags */
104*53ee8cc1Swenshuai.xi #define DLM_USER_LSFLG_AUTOFREE   1
105*53ee8cc1Swenshuai.xi #define DLM_USER_LSFLG_FORCEFREE  2
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi #endif
108*53ee8cc1Swenshuai.xi 
109